Generador de Client ID MQTT

Genera hasta 100 Client IDs MQTT únicos de una vez — aleatorios, UUID, hex o basados en marca de tiempo, con tu propio prefijo. Activa el modo estricto para obtener IDs que cualquier broker MQTT 3.1.1 debe aceptar.

Elige las opciones y pulsa «Generar Client IDs».

Los IDs se generan en tu navegador con la Web Crypto API y nunca se envían a ningún sitio.

Para qué sirve el Client ID de MQTT

Cada cliente MQTT envía un identificador de cliente en su paquete CONNECT. El broker lo usa para reconocer al cliente entre reconexiones: es la clave bajo la que guarda la sesión — suscripciones, mensajes QoS 1 y QoS 2 en cola y confirmaciones pendientes. Si un dispositivo se reconecta con el mismo ID y una sesión persistente, continúa exactamente donde lo dejó. Si se reconecta con otro ID, el broker lo trata como un cliente completamente nuevo y la sesión antigua permanece hasta que expira.

Regla 1: los Client IDs deben ser únicos

Un broker solo permite una conexión por Client ID. Cuando llega una segunda conexión con un ID que ya está conectado, el broker cierra la primera — en MQTT 5 con el código de motivo 0x8E Session taken over. Es la causa más habitual de los avisos de «mi cliente se desconecta todo el rato»: dos dispositivos con la misma constante en el firmware, una aplicación web abierta en dos pestañas o un servicio escalado a dos réplicas. Ambos clientes se reconectan, se expulsan mutuamente y el ciclo se repite cada pocos segundos. Consulta errores de conexión MQTT para ver más síntomas.

Un buen Client ID es estable para cada dispositivo (para que funcionen las sesiones persistentes) y único en toda la flota. Un patrón habitual es un prefijo legible más algo propio del dispositivo: un número de serie, una dirección MAC o un valor aleatorio generado una vez y guardado en la flash. Los clientes de navegador y de corta duración suelen usar un ID aleatorio nuevo en cada conexión.

Regla 2: la garantía de 23 caracteres

La especificación MQTT 3.1.1 dice que un broker debe aceptar Client IDs de entre 1 y 23 bytes que contengan solo 0-9, a-z y A-Z, y puede aceptar cualquier otra cosa. La mayoría de brokers modernos aceptan IDs mucho más largos con guiones, guiones bajos y dos puntos, pero algunos brokers embebidos o antiguos los rechazan con el código de retorno 2 (identifier rejected) o 0x85 Client Identifier not valid. Si no controlas con qué broker hablarán tus dispositivos, activa el modo estricto. Las diferencias entre versiones del protocolo se explican en MQTT 5 vs 3.1.1.

Client IDs vacíos

Un cliente puede enviar un Client ID de longitud cero y dejar que el broker elija uno, pero solo junto con clean session (3.1.1) o clean start (5.0), porque no hay una clave estable bajo la que guardar la sesión. Los brokers MQTT 5 devuelven el ID generado en la propiedad Assigned Client Identifier. Algunos brokers desactivan esta función, así que generar tu propio ID es la opción portable.

¿Listo para probar? Pega un ID generado en el cliente MQTT online y conéctate a un broker público, o abre una segunda pestaña con el mismo ID para ver un session takeover en directo.

Preguntas frecuentes sobre el Client ID

¿Qué longitud puede tener un Client ID MQTT?

MQTT 3.1.1 obliga a los brokers a aceptar Client IDs de 1 a 23 bytes UTF-8 que solo contengan 0-9, a-z y A-Z, y les permite aceptar más. MQTT 5 mantiene la misma garantía. En la práctica, Mosquitto, EMQX, HiveMQ y la mayoría de brokers en la nube aceptan IDs de hasta 65.535 bytes con cualquier carácter.

¿Qué pasa si dos clientes usan el mismo Client ID?

El broker desconecta la conexión existente y acepta la nueva (un session takeover; código de motivo 0x8E en MQTT 5). Si ambos clientes se reconectan automáticamente, se expulsan mutuamente una y otra vez y parece que los dos se desconectan constantemente.

¿Puedo usar un Client ID vacío?

Sí, si solicitas una clean session (MQTT 3.1.1) o clean start (MQTT 5). El broker asigna entonces un ID único; MQTT 5 lo devuelve en la propiedad Assigned Client Identifier. En MQTT 3.1.1 un ID vacío no se puede combinar con una sesión persistente.

¿El Client ID debe ser secreto?

No. Los Client IDs son identificadores, no credenciales: aparecen en los logs del broker y son fáciles de adivinar. Autentica siempre con usuario y contraseña, token o certificado de cliente, y usa ACLs para que un cliente no pueda suplantar a otro.

De los creadores de TestMQTT

¿Se te queda corto el broker público?

Los brokers públicos de prueba se comparten con miles de desconocidos. ConnectMQ te da un broker MQTT privado en el que puedes confiar para dispositivos reales, listo en minutos.

  • Tu propio broker aislado: nadie más puede leer tus topics
  • Autenticación con usuario y contraseña y control de acceso por topic
  • TLS y WebSocket seguro, MQTT 3.1.1 y MQTT 5
  • El mismo código de cliente desde la primera prueba hasta producción