Glosario de Automatización • Jerarquia de topicos y comodines MQTT

¿Qué es una jerarquía de tópicos de MQTT y los comodines?

Ingeniería Merobix • • 7 min de lectura

MQTT no tiene registros ni índices de puntos: enruta los mensajes por tópico, una cadena delimitada por barras que a la vez nombra un dato y lo organiza. Elija bien esas cadenas y los activos de un campo caen en un espacio de nombres limpio; elíjalas mal y se vuelve un desorden imposible de buscar. Esta guía explica cómo los tópicos MQTT forman una jerarquía, cómo los comodines mas (un nivel) y numeral (multinivel) permiten que una sola suscripción capture toda un área, y cómo un espacio de nombres de tópicos sensato mapea los activos de un campo para un broker SCADA en la nube.

Volver al glosario

Jerarquia de topicos y comodines MQTT en una línea: Un tópico MQTT es una cadena UTF-8 dividida en niveles por barras diagonales, como site/wellpad/separator/pressure, y los niveles forman una jerarquía que organiza los datos parecido a como las carpetas organizan los archivos. Los publicadores envían mensajes a un tópico específico y los suscriptores piden tópicos, pero los suscriptores también pueden usar comodines: un mas coincide con exactamente un nivel y un numeral coincide con todos los niveles restantes. Juntos la jerarquía y los comodines permiten a un suscriptor tomar un solo punto o toda una rama de los activos de un campo con una suscripción.

Cómo los tópicos forman una jerarquía delimitada por barras

Un tópico es apenas una cadena, pero la barra diagonal le da estructura. Un tópico como northfield/pad7/separator2/pressure se lee de izquierda a derecha, del alcance más amplio al valor más específico: el campo, luego una plataforma dentro de él, luego un separador en esa plataforma, luego la medición específica. Cada segmento separado por barra es un nivel de tópico, y el orden es una decisión de diseño: un buen diseño pone la agrupación más general primero para que los datos relacionados compartan un prefijo común. MQTT no impone un esquema fijo; el significado vive por completo en la convención que el diseñador adopte.

El broker no necesita que los tópicos se declaren por adelantado. Un publicador simplemente publica hacia un tópico y, si el mensaje lo amerita, el tópico efectivamente pasa a existir; los suscriptores piden los tópicos que quieren. Esta flexibilidad es poderosa pero de doble filo, porque nada impide que un integrador escriba pad7/sep2/press y otro escriba NorthField/Pad-7/Separator2/Pressure para datos muy relacionados. La consistencia es una disciplina que el equipo impone, no algo que el protocolo aplique, por lo que una convención documentada de nomenclatura de tópicos es uno de los artefactos más valiosos en un despliegue MQTT.

Como la jerarquía es texto arbitrario, puede y debe reflejar cómo está organizado físicamente un campo. Un espacio de nombres que sigue niveles de empresa, sitio, área, línea y dispositivo - un patrón que muchos diseños industriales MQTT adoptan - hace del árbol de tópicos un mapa legible de la planta. Cuando la propia cadena de tópico codifica de dónde viene un valor, un ingeniero puede mirar el tópico de un mensaje y saber exactamente qué activo lo produjo, sin una tabla de consulta separada. Esa legibilidad es toda la recompensa de pensar con cuidado la jerarquía desde el inicio.

Los comodines mas y numeral

Los comodines solo se usan al suscribirse, nunca al publicar: un publicador siempre nombra un tópico exacto. El comodín de un solo nivel, escrito como un signo mas, coincide con exactamente un nivel de tópico en la posición donde aparece. Una suscripción a northfield/+/separator2/pressure coincide con esa presión en cada plataforma del campo norte - pad1, pad7, pad12 - porque el mas sustituye a cualquier valor único en el nivel de plataforma, mientras que los niveles a su alrededor deben seguir coincidiendo exactamente. Es la herramienta para decir dame este mismo punto en todos los hermanos de un nivel.

El comodín multinivel, escrito como un numeral, coincide con todos los niveles restantes y debe aparecer al final de una suscripción. Una suscripción a northfield/pad7/# captura todo lo publicado en cualquier lugar debajo de pad7 - cada separador, cada medición, cada estado - en una sola suscripción. Donde el mas es quirúrgico, coincidiendo con un nivel, el numeral es una red amplia que recoge toda una rama del árbol sin importar cuán profunda sea. Suscribirse a solo # capturaría cada tópico del broker, lo que ocasionalmente es útil para diagnósticos pero por lo general es demasiado.

Combinar los dos da control preciso. Una suscripción como northfield/+/+/pressure reúne la presión de cada separador en cada plataforma del campo norte, coincidiendo con dos niveles arbitrarios mientras fija el campo y la medición. Un cliente de monitoreo puede por tanto suscribirse una vez a toda un área de interés en lugar de enumerar cientos de tópicos individuales, y recoge de forma automática los activos nuevos que publiquen bajo el patrón coincidente sin ningún cambio de suscripción - una plataforma nueva que empiece a publicar northfield/pad13/... queda capturada en cuanto aparece si la suscripción usó un comodín en el nivel de plataforma.

Mapear los activos de un campo para un broker SCADA en la nube

Para un SCADA en la nube como Merobix que consume datos sobre MQTT, el espacio de nombres de tópicos es en efecto el esquema de direccionamiento de todo el campo, así que diseñarlo de forma deliberada es fundamental. Una jerarquía que va de campo a plataforma a equipo a medición permite a la plataforma organizar los datos entrantes con la misma estructura en que piensan los operadores, y le permite suscribirse de forma eficiente. En lugar de una suscripción por punto, la plataforma puede suscribirse a un patrón comodín por área y recibir todo lo que está debajo, lo que mantiene simple la conexión incluso a medida que el campo crece.

Los comodines hacen resiliente al cambio el mapeo. Cuando un campo se expande, los dispositivos nuevos que publican bajo una rama existente los recoge de forma automática una suscripción comodín, así que la plataforma ve un pozo o separador nuevo en cuanto empieza a reportar, sin que alguien edite la lista de suscripciones. Esto encaja de forma natural con cómo evolucionan los campos de petróleo y gas - se agregan plataformas, se cambia equipo - y una suscripción basada en comodines significa que el lado de ingesta sigue el ritmo sin reconfiguración constante, siempre que los publicadores sigan la convención de nomenclatura acordada.

El reverso es que un espacio de nombres descuidado socava todo esto. Si las cadenas de tópico son inconsistentes, un patrón comodín que debería atrapar la presión de cada separador se saltará en silencio los que estén nombrados de forma distinta, y esos puntos quedan sin monitorear en silencio. Por eso la convención de tópicos merece documentarse y aplicarse con tanto cuidado como un mapa de puntos en un protocolo sondeado. Cuando Merobix ingiere datos MQTT, una jerarquía limpia y consistente es lo que convierte un flujo de mensajes en un modelo estructurado y navegable del campo - y lo que permite que un puñado de suscripciones comodín sustituyan a miles de puntos individuales.

Preguntas frecuentes

¿Cuál es la diferencia entre los comodines mas y numeral en MQTT?

El mas es un comodín de un solo nivel que coincide con exactamente un nivel de tópico en su posición, así que northfield/+/pressure coincide con un nivel entre esos segmentos. El numeral es un comodín multinivel que coincide con todos los niveles restantes y debe ir al final, así que northfield/pad7/# coincide con todo lo que está debajo de pad7. El mas es quirúrgico para un nivel; el numeral es una red amplia para toda una rama.

¿Puedo usar comodines al publicar un mensaje MQTT?

No. Los comodines solo son válidos en las suscripciones. Un publicador siempre debe enviar a un tópico exacto y completamente especificado sin mas ni numeral. Los comodines existen para que los suscriptores puedan coincidir con muchos tópicos con una sola suscripción, pero cada mensaje publicado nombra un solo tópico concreto.

¿Tengo que crear los tópicos MQTT antes de usarlos?

No. Los tópicos MQTT no se declaran por adelantado; un publicador simplemente publica hacia un tópico y los suscriptores piden los tópicos que quieren. Esta flexibilidad significa que nada aplica un estándar de nomenclatura, así que la consistencia depende de una convención documentada que el equipo siga. Sin esa disciplina, los datos relacionados pueden terminar bajo cadenas de tópico desiguales que las suscripciones comodín se saltarán.

Más en Protocolos industriales
Jerarquia de graficos de DCS  •  Jerarquia de pantallas (niveles 1-4)  •  Corregir un bucle de reconexion de cliente MQTT  •  Sesión limpia vs persistente  •  OPC UA vs MQTT para la empresa  •  Todo en Protocolos industriales →
Capacitación SCADA gratuita para operadores
Merobix University - 70 lecciones en video y 261 preguntas de examen, del primer inicio de sesión a los reportes de cumplimiento (contenido en inglés). Sin llamada de ventas.
Comenzar gratis →