Tutoriales de IoT

Servidor MQTT público gratuito para pruebas: conéctate a broker.connectmq.com en minutos

broker.connectmq.com es un servidor MQTT público gratuito para pruebas y aprendizaje. Aquí tienes los puertos, las reglas de acceso anónimo, los límites y ejemplos listos para copiar para la CLI, Python, Node.js y el navegador.

Portátil y sensores IoT intercambiando mensajes a través de broker.connectmq.com, un broker MQTT público y gratuito para pruebas
Pruébalo en tu propio broker MQTTConsigue un broker MQTT privado y gestionado con el plan Free y empieza con ejemplos de código listos para usar.
Pruébalo gratis Ejemplos de código Sin tarjeta

Un broker MQTT público y gratuito es la forma más rápida de probar MQTT: sin cuenta, sin instalación, solo un hostname y un puerto. En este tutorial te conectarás a broker.connectmq.com, el servidor MQTT público gratuito de ConnectMQ, conocerás las reglas de su área pública anónima y sus límites, y ejecutarás ejemplos funcionales con la CLI de Mosquitto, Python, Node.js y el navegador. Al final sabrás exactamente cuándo ha llegado el momento de pasar a un broker privado.

Si el protocolo es nuevo para ti, empieza por ¿Qué es un broker MQTT? y vuelve aquí para la parte práctica.

¿Qué es un broker MQTT público y gratuito?

Un broker MQTT público es un broker al que cualquiera en internet puede conectarse sin credenciales. Está pensado para aprender, hacer demos, prototipos rápidos y depurar código cliente. Obtienes un broker real que habla MQTT 3.1.1 y MQTT 5.0, pero lo compartes con todas las demás personas que están probando en ese mismo momento.

Compartirlo tiene una consecuencia importante: todo lo que publiques en el área pública puede leerlo cualquiera. Trátalo como una pizarra pública. Es perfecto para un «hola mundo», simulaciones de sensores y experimentos con el protocolo, y totalmente inadecuado para contraseñas, datos personales o tráfico de producción.

Datos de conexión de broker.connectmq.com

El broker público de ConnectMQ escucha en cuatro endpoints. Elige el que corresponda a tu cliente y a tu red.

Protocolo Puerto URL Uso típico
MQTT (TCP) 1883 mqtt://broker.connectmq.com:1883 Herramientas CLI, microcontroladores, pruebas rápidas
MQTT sobre TLS 8883 mqtts://broker.connectmq.com:8883 Conexiones cifradas desde servidores y dispositivos
WebSocket 8083 ws://broker.connectmq.com:8083/mqtt Experimentos web locales
WebSocket seguro 8084 wss://broker.connectmq.com:8084/mqtt Navegadores y páginas HTTPS

Los puertos 8883 y 8084 usan un certificado de Let's Encrypt, así que los paquetes de CA estándar del sistema operativo lo verifican sin archivos adicionales. Si tu red bloquea puertos poco habituales, WSS en el 8084 suele ser el camino más fácil, porque para la mayoría de los proxies se parece al tráfico HTTPS normal.

Reglas de acceso anónimo

No necesitas usuario ni contraseña. Se aplican tres reglas sencillas:

  1. Usa un client ID no vacío. Conéctate sin usuario ni contraseña pero con un client ID como demo-7f3a91. Un client ID vacío se rechaza. Hazlo único: según la especificación MQTT, una segunda conexión con el mismo ID toma el control de la sesión y el primer cliente se desconecta.
  2. Usa un prefijo de topic único. Coloca todo bajo un prefijo que nadie más vaya a adivinar, por ejemplo connectmq/demo/<your-random-id>/.... Así evitas colisiones con otras personas que están probando y mantienes ordenado tu árbol de topics.
  3. Da por hecho que todo es público. Los clientes anónimos llegan a un área pública compartida. Los clientes públicos solo ven los topics de otros clientes públicos (están aislados de los inquilinos de pago), pero dentro del área pública cualquier cliente puede suscribirse a # y leer tus mensajes.

Un truco útil es generar un ID aleatorio una vez y reutilizarlo como base del client ID y como prefijo de topic:

export ID=demo-$(openssl rand -hex 3)
echo $ID   # p. ej. demo-7f3a91

Límites del área pública

El área pública es generosa para pruebas, pero está limitada a propósito para que siga funcionando bien para todos.

Límite Valor
Tamaño máximo de mensaje 64 KB
Tasa de publicación 10 mensajes por segundo por cliente
Suscripciones 10 por cliente
Profundidad de topic Máximo 8 niveles
Niveles de QoS 0, 1 y 2
Retained messages Admitidos
Suscripciones con comodines (+, #) Admitidas
Suscripciones compartidas ($share/{group}/{filter}) Admitidas
Expiración de sesión Hasta 30 minutos

Si superas una cuota, los clientes MQTT 5 reciben un reason code como 0x97 (Quota exceeded) en lugar de un fallo silencioso, lo que facilita mucho la depuración. ¿No sabes qué QoS elegir? Consulta Niveles de QoS en MQTT explicados.

Prueba el broker MQTT público gratuito con la CLI de Mosquitto

Las herramientas de línea de comandos de Eclipse Mosquitto son la forma más rápida de ver fluir los mensajes. Abre dos terminales.

Terminal 1: suscríbete a tu prefijo:

mosquitto_sub -h broker.connectmq.com -p 1883 -i $ID-sub -t "connectmq/demo/$ID/#" -v

Terminal 2: publica un mensaje:

mosquitto_pub -h broker.connectmq.com -p 1883 -i $ID-pub -t "connectmq/demo/$ID/temperature" -m '{"value": 22.5, "unit": "C"}'

La terminal 1 muestra el topic seguido del payload. Para usar el puerto cifrado, añade el paquete de CA de tu sistema (la ruta indicada es la de la mayoría de distribuciones Linux):

mosquitto_pub -h broker.connectmq.com -p 8883 --capath /etc/ssl/certs -i $ID-tls -t "connectmq/demo/$ID/tls" -m "hello over TLS" -V mqttv5

En Windows o macOS, apunta --cafile a un paquete de CA en formato PEM (por ejemplo, el que incluye Git for Windows). El flag -V mqttv5 cambia el cliente a MQTT 5.0.

Demo de retained message

Un retained message lo guarda el broker y lo entrega de inmediato a cada nuevo suscriptor de ese topic. Es ideal para valores de «último estado conocido», como el estado de un dispositivo.

# Publicar un estado retenido
mosquitto_pub -h broker.connectmq.com -p 1883 -i $ID-pub -t "connectmq/demo/$ID/status" -m "online" -r -q 1

# Un suscriptor totalmente nuevo lo recibe al instante, aunque se publicara antes
mosquitto_sub -h broker.connectmq.com -p 1883 -i $ID-late -t "connectmq/demo/$ID/status" -v -C 1 -W 5

# Borrar el retained message publicando un payload retenido vacío
mosquitto_pub -h broker.connectmq.com -p 1883 -i $ID-pub -t "connectmq/demo/$ID/status" -n -r

Borra siempre los retained messages de prueba cuando termines: así el área pública se mantiene limpia.

Demo de Last Will and Testament

Un Last Will es un mensaje que el broker publica en tu nombre si tu cliente se desconecta de forma inesperada. Deja en marcha el suscriptor de la terminal 1 e inicia un «dispositivo» con un will:

mosquitto_sub -h broker.connectmq.com -p 1883 -i $ID-device -t "connectmq/demo/$ID/cmd" -k 5 --will-topic "connectmq/demo/$ID/status" --will-payload "offline" --will-qos 1

Ahora mata esa terminal o el proceso (cerrar la ventana funciona; una desconexión limpia con Ctrl+C puede no activar el will en todos los clientes). En unos segundos, cuando expira el keep-alive, la terminal 1 muestra:

connectmq/demo/demo-7f3a91/status offline

Verificamos estos comandos contra broker.connectmq.com mientras escribíamos esta guía.

Ejemplo en Python (paho-mqtt 2.x)

Instala el cliente con pip install "paho-mqtt>=2.0". El script siguiente se conecta por TLS, se suscribe a su prefijo y publica una lectura.

import json
import ssl
import uuid
import paho.mqtt.client as mqtt

DEVICE_ID = f"demo-{uuid.uuid4().hex[:6]}"
PREFIX = f"connectmq/demo/{DEVICE_ID}"

def on_connect(client, userdata, flags, reason_code, properties):
    print(f"Connected: {reason_code}")
    client.subscribe(f"{PREFIX}/#", qos=1)
    client.publish(f"{PREFIX}/temperature", json.dumps({"value": 21.8}), qos=1)

def on_message(client, userdata, msg):
    print(f"{msg.topic} -> {msg.payload.decode()}")

client = mqtt.Client(
    mqtt.CallbackAPIVersion.VERSION2,
    client_id=DEVICE_ID,
    protocol=mqtt.MQTTv5,
)
client.tls_set(cert_reqs=ssl.CERT_REQUIRED)  # usa el almacén de CA del sistema
client.on_connect = on_connect
client.on_message = on_message

client.connect("broker.connectmq.com", 8883, keepalive=30)
client.loop_forever()

Fíjate en que en el área pública no hace falta llamar a username_pw_set(). Para TCP sin cifrar, elimina tls_set() y usa el puerto 1883.

Ejemplo en Node.js (MQTT.js sobre mqtts y wss)

Instala MQTT.js v5 con npm install mqtt. El mismo código funciona sobre TLS o sobre WebSocket seguro; solo cambia la URL.

import mqtt from "mqtt";
import { randomBytes } from "node:crypto";

const clientId = `demo-${randomBytes(3).toString("hex")}`;
const prefix = `connectmq/demo/${clientId}`;

// Opción A: MQTT sobre TLS
const url = "mqtts://broker.connectmq.com:8883";
// Opción B: MQTT sobre WebSocket seguro
// const url = "wss://broker.connectmq.com:8084/mqtt";

const client = mqtt.connect(url, { clientId, protocolVersion: 5 });

client.on("connect", () => {
  console.log("Connected as", clientId);
  client.subscribe(`${prefix}/#`, { qos: 1 });
  client.publish(`${prefix}/humidity`, JSON.stringify({ value: 48 }), { qos: 1 });
});

client.on("message", (topic, payload) => {
  console.log(topic, payload.toString());
});

client.on("error", (err) => console.error(err.message));

Ejemplo en el navegador sobre WSS

Los navegadores no pueden abrir sockets TCP directos, así que usan MQTT sobre WebSocket. Las páginas servidas por HTTPS deben usar wss:// en el puerto 8084. Empaqueta el código siguiente con tu herramienta favorita (Vite, webpack, esbuild):

import mqtt from "mqtt";

const clientId = "web-" + Math.random().toString(16).slice(2, 8);
const prefix = `connectmq/demo/${clientId}`;

const client = mqtt.connect("wss://broker.connectmq.com:8084/mqtt", {
  clientId,
  protocolVersion: 5,
});

client.on("connect", () => {
  client.subscribe(`${prefix}/#`);
  client.publish(`${prefix}/hello`, "Hello from the browser");
});

client.on("message", (topic, payload) => {
  const line = document.createElement("div");
  line.textContent = `${topic}: ${payload.toString()}`;
  document.body.appendChild(line);
});

Para profundizar en rutas, puertos y proxies, lee MQTT sobre WebSocket.

Broker MQTT público gratuito frente a broker privado

El servidor público es un entorno de pruebas y prototipos, no un lugar para datos de producción. Pasa a un broker privado en cuanto se cumpla cualquiera de estas condiciones:

Necesitas... Broker público Broker privado en app.connectmq.com
Privacidad Cualquiera en el área pública puede leer tus topics Los topics del inquilino están aislados de otros inquilinos y del área pública
Autenticación Anónima, solo client ID Usuario, contraseña y client ID emitidos para cada broker
Tamaño de mensaje 64 KB 256 KB en Serverless (Free), 1 MB en Serverless (Paid)
Conexiones Para pruebas Hasta 25 (Free), hasta 1.000 (Paid) o un clúster Dedicated
Herramientas Tus propios clientes Portal con cliente MQTT en el navegador, explorador de topics en tiempo real, panel y reglas de alerta

Señales típicas de que el área pública se te ha quedado pequeña: estás enviando datos reales de clientes o dispositivos, quieres evitar que otras personas vean los nombres de tus topics, necesitas credenciales estables para una flota de dispositivos o quieres un panel y alertas sobre tus datos. El cambio es sobre todo de configuración: mantén el mismo código y añade el usuario, la contraseña y el client ID del portal:

client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2, client_id="YOUR_CLIENT_ID", protocol=mqtt.MQTTv5)
client.username_pw_set("YOUR_USERNAME", "YOUR_PASSWORD")
client.tls_set()
client.connect("broker.connectmq.com", 8883)

Antes de pasar a producción, repasa nuestras buenas prácticas de seguridad en MQTT.

Empieza con ConnectMQ

¿Listo para mantener tus datos en privado? Crea una cuenta gratuita en app.connectmq.com: el plan Serverless (Free) no requiere tarjeta de crédito. ConnectMQ es un broker MQTT gestionado, así que no tienes servidores que mantener. Elige un plan, crea un broker y copia el usuario, la contraseña y el client ID generados. Tu primer mensaje privado está a unos minutos.

Preguntas frecuentes

¿broker.connectmq.com es realmente gratuito?

Sí. El área pública de broker.connectmq.com es de uso gratuito para pruebas, aprendizaje y demos, sin necesidad de registro. Tiene límites de uso razonable, como 64 KB por mensaje y 10 mensajes por segundo por cliente.

¿Necesito usuario y contraseña para el broker MQTT público?

No. Conéctate sin credenciales y con un client ID único y no vacío. Un client ID vacío se rechaza.

¿Pueden otras personas ver mis mensajes en un broker MQTT público?

Sí. Todo lo que se publica en el área pública puede leerlo cualquier otro cliente público, así que usa un prefijo de topic único y nunca envíes datos personales o sensibles. Para datos privados, crea un broker en app.connectmq.com.

¿Qué versiones de MQTT y qué puertos admite el broker público?

Admite MQTT 3.1.1 y MQTT 5.0 en TCP 1883, TLS 8883, WebSocket 8083 y WebSocket seguro 8084 (ruta /mqtt).

¿Puedo usar el broker MQTT público gratuito en producción?

No está diseñado para producción. Para cualquier despliegue real, usa un broker privado de ConnectMQ con credenciales, aislamiento entre inquilinos y límites más altos.

Artículos relacionados

Las mejores herramientas CLI de MQTT para pruebas, scripts y depuración

Una comparativa práctica de mosquitto_pub/sub, MQTTX CLI, HiveMQ MQTT CLI, la CLI de MQTT.js, curl y mqttui, con la misma prueba ejecutada contra broker.connectmq.com para que elijas la herramienta adecuada para scripts y depuración.

9 min de lectura

Todos los artículos →

Tu broker MQTT privado, a unos pocos clics

Crea una cuenta, obtén las credenciales de tu broker y conecta tu primer dispositivo, sin servidores que instalar, parchear ni escalar.