> 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-publish.md).

# MQTT Publish (TLS-Beta)

Este bloque de función envía datos a un broker MQTT con opción de seguridad TLS. Permite configurar la dirección del broker, autenticación, modo TLS, QoS, flag de retain y keepalive, para que puedas publicar mensajes formateados en cualquier topic de MQTT.

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

`Enable` Interruptor para activar la publicación. Cuando esta entrada está en TRUE, el bloque intentará enviar los datos provistos.

`Data` Los datos a publicar. Este socket genérico acepta texto o datos estructurados (se recomienda formatear como JSON o string).

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

Este bloque de función no produce salidas.

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

`Broker Address` Ingresa el host o la dirección IP del broker MQTT.

`Port` Puerto del broker. El valor común por defecto es 1883.

`Topic` Topic de MQTT al que se publicarán los mensajes.

`Username` Nombre de usuario opcional para autenticación en el broker.

`Password` Contraseña opcional para autenticación (oculta en la UI).

`TLS Mode Selection` Selecciona el comportamiento TLS. Opciones: `None`, `Auto` (usa certificados del sistema/root) y versiones TLS específicas con archivo de certificado personalizado.

`Cert File Path` Ruta opcional a un archivo .crt si se usa configuración TLS personalizada.

`Quality of Service` Nivel de entrega del mensaje (0, 1 o 2).

`Keep alive (s)` Intervalo de keepalive en segundos.

`Retain` Activador para publicar mensajes retenidos en el broker.

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

* Publicación segura con opciones TLS seleccionables, incluyendo manejo automático de certificados o archivo de certificado personalizado.
* Soporte de autenticación con username/password.
* QoS y flag de retain para garantías de entrega y mensajes persistentes.
* Reintentos automáticos de reconexión si se pierde la conexión y registro de estado para diagnosticar problemas.
* Controles en la UI para todos los parámetros MQTT comunes — no se requiere programación.

## 📝 Cómo usar <a href="#usage" id="usage"></a>

1. Completa `Broker Address` y `Port` para apuntar a tu broker MQTT.
2. Define el `Topic` donde quieras enviar los mensajes.
3. Si es necesario, ingresa `Username` y `Password`. Déjalos vacíos para brokers anónimos.
4. Elige `TLS Mode Selection`. Usa `Auto` para conexiones seguras estándar sin proveer un certificado, o ingresa `Cert File Path` si tu broker requiere un .crt específico.
5. Configura `Quality of Service`, `Keep alive (s)` y activa `Retain` si quieres que los mensajes se almacenen en el broker.
6. Conecta los datos que quieres enviar a la entrada `Data`. Usa `Enable` en TRUE para activar el envío.
7. Observa los logs que muestra el bloque para verificar el estado de conexión y publicación.

## 📊 Qué ocurre al ejecutarlo <a href="#evaluation" id="evaluation"></a>

Cuando está habilitado, el bloque verifica los parámetros de conexión e intenta conectar o reconectar al broker si es necesario. Una vez conectado, publica los datos de `Data` en el `Topic` configurado usando el QoS y retain seleccionados. Problemas de conexión y resultados de publicación se muestran en los mensajes de estado/log del bloque.

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

* Combínalo con `Data to JSON` para convertir varios campos en un solo mensaje JSON útil para dashboards IoT.
* Usa `String Merge` para construir mensajes de texto personalizados (por ejemplo, device id + status).
* Añade `Date-Time` para incluir timestamps en tus mensajes, útil para registros o gráficos temporales.
* Dispara la publicación mediante eventos conectando este bloque a `Logic Input` o `Rising Edge`, así los mensajes solo se envían cuando ocurre algo relevante.
* Usa una instancia de `MQTT Subscribe (TLS-Beta)` para verificar localmente que los mensajes llegan al broker (útil para pruebas end-to-end).
* Antes de enviar datos con imágenes grandes, considera usar `Image Logger` o `Image Write` para guardar imágenes localmente y publicar solo metadatos o la ruta de archivo vía MQTT para reducir ancho de banda.

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

* Conexión fallida: verifica `Broker Address`, `Port`, firewalls y conectividad de red. Prueba con un cliente MQTT simple para confirmar que el broker es accesible.
* Errores de certificado/TLS: cambia `TLS Mode Selection` a `Auto` si no tienes un archivo de certificado, o proporciona la ruta correcta en `Cert File Path` cuando se requiera TLS personalizado.
* Fallo de autenticación: confirma `Username` y `Password` con tu broker.
* Mensajes no visibles en el broker: verifica `Topic`, QoS y `Retain`; usa `MQTT Subscribe (TLS-Beta)` para monitorear el topic localmente.
* Formato de datos inesperado: previsualiza o registra tu mensaje antes de publicar usando `Debug Input`, `String Merge` o `Data to JSON` para asegurarte de que el formato coincide con lo que esperan los suscriptores.
