> For the complete documentation index, see [llms.txt](https://docs.augelab.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.augelab.com/spanish/function-blocks/blocks-reference/input-output/communication/mqtt-subscribe.md).

# MQTT Subscribe

Este bloque de función escucha un topic de MQTT y entrega los mensajes entrantes para usarlos en otras partes de tu escenario. Lleva un registro de si un mensaje es nuevo para que puedas activar acciones sólo cuando llegue data fresca.

## 📥 Entradas <a href="#inputs" id="inputs"></a>

* `Enable` Input socket — Habilita o deshabilita la suscripción. Cuando está activo, el bloque se conecta al broker y escucha mensajes.

## 📤 Salidas <a href="#outputs" id="outputs"></a>

* `Data` Output socket — Última carga (payload) recibida (texto) desde el topic suscrito.
* `New Data` Output socket — Salida booleana que se vuelve true por una ejecución cuando llega un nuevo mensaje.

## 🕹️ Controles <a href="#controls" id="controls"></a>

* `Broker Address` Hostname o IP del broker MQTT a conectar.
* `Port` Puerto TCP del broker (comúnmente 1883 o 8883 para TLS).
* `Topic` Cadena del topic a suscribirse (soporta coincidencia exacta de topic).
* `Client ID` Identificador opcional para el cliente MQTT.
* `Username` Nombre de usuario opcional para autenticación en el broker.
* `Password` Contraseña opcional para autenticación en el broker.
* `Keep Alive` Intervalo usado para mantener la conexión con el broker.
* `Use TLS` Alternar para habilitar conexión segura TLS (si el broker lo soporta).
* `Reconnect / Connect` Botón o lógica automática en la UI para (re)establecer la conexión cuando cambian los ajustes.

(la apariencia de estos controles en la UI puede variar; proporciona parámetros de conexión válidos y habilita el bloque para comenzar a recibir mensajes)

## 🎯 Características <a href="#features" id="features"></a>

* Suscripción persistente mientras `Enable` esté true — los mensajes se reciben en tiempo real.
* Proporciona tanto la `Data` cruda como una bandera de una-ejecución `New Data` para que los bloques posteriores respondan solo a mensajes nuevos.
* Se reconecta automáticamente si cambian los parámetros de conexión.
* Mensajes informativos y estado básico de conexión aparecen en la UI del bloque para ayudar a diagnosticar eventos de conexión.

## ⚙️ Mecanismo de ejecución <a href="#running-mechanism" id="running-mechanism"></a>

* Cuando `Enable` está activo, el bloque usa la configuración de conexión para conectarse al broker MQTT y suscribirse al `Topic` elegido.
* Los mensajes entrantes se almacenan internamente y se exponen en la salida `Data`.
* El bloque pone `New Data` en true sólo para la ejecución inmediatamente posterior a la llegada de un nuevo mensaje; en ejecuciones posteriores se resetea a false hasta que llegue otro mensaje.
* Cambiar los parámetros de conexión provoca que el bloque se reconecte para que los nuevos valores entren en efecto.

## 📝 Instrucciones de uso <a href="#usage" id="usage"></a>

1. Completa los parámetros de conexión: `Broker Address`, `Port` y `Topic` (añade credenciales si el broker las requiere).
2. Habilita el bloque mediante la entrada `Enable`.
3. Usa la salida `Data` para pasar los payloads recibidos a otros bloques. Usa la salida `New Data` para desencadenar procesamiento aguas abajo solo cuando llegue un mensaje nuevo.
4. Si cambias los ajustes de conexión, espera un momento corto para que el bloque se reconecte.

## 💡 Tips y trucos <a href="#tips-and-tricks" id="tips-and-tricks"></a>

* Para reenviar mensajes recibidos a un servidor o servicio, conecta `Data` a `REST API - Post`.
* Para republicar o hacer eco de mensajes, combina este bloque con `MQTT Publish` o `MQTT Publish (TLS-Beta)`.
* Usa `Data to JSON` para estructurar múltiples campos del texto entrante antes de registrarlos o exportarlos.
* Guarda los mensajes entrantes para revisión posterior conectando `Data` a `CSV Export` o a `SQL-DB Operations` (vía `Data to JSON` o el formateo apropiado).
* Añade un bloque `Debug Input` para inspeccionar rápidamente el contenido de los mensajes en la ventana de logs durante el desarrollo.
* Cuando trabajes con formatos cambiantes, usa `Replace None` o `Is None` para manejar mensajes faltantes o malformados de forma segura.

(los consejos anteriores usan únicamente los bloques de función disponibles en el sistema)

## 🛠️ Solución de problemas <a href="#troubleshooting" id="troubleshooting"></a>

* No se reciben mensajes: verifica que `Broker Address`, `Port` y `Topic` sean correctos y que el broker sea accesible desde la máquina que ejecuta el escenario.
* Errores de autenticación: revisa `Username` y `Password` y si tu broker requiere TLS.
* Conexión intermitente: comprueba la red/firewall y prueba habilitar TLS o ajustar `Keep Alive`.
* Los mensajes llegan pero no se reenvían: asegúrate de que los bloques aguas abajo estén habilitados y utiliza la bandera `New Data` si deben ejecutarse sólo con payloads nuevos.
* Si cambias parámetros, espera brevemente después de re-habilitar para que el bloque se reconecte antes de esperar mensajes.
