MQTT es el protocolo de carga para flotas que mantienen una conexión persistente y
necesitan tanto telemetry hacia arriba como comandos hacia abajo sobre la misma sesión.
CORE-M sirve MQTT a través de EMQX; el adaptador device-link se suscribe al broker,
normaliza cada mensaje en un TelemetryPoint y lo publica en el bus interno — exactamente
igual que cualquier otro protocolo.
Usa 8883 en producción. El puerto simple 1883 existe solo para desarrollo local y
despliegues en redes de confianza — sobre 1883 la API key viaja en texto claro.
La autenticación ocurre en el paquete CONNECT de MQTT. El dispositivo se identifica
con su device_id y se autentica con su API key (o PSK):
Campo de CONNECT
Valor
Client ID
el device_id del dispositivo
Username
el device_id del dispositivo
Password
la API key del dispositivo (sk_live_...) o PSK
Como el client ID es la identidad del dispositivo, el broker rechaza una segunda
conexión que intente usar el mismo client ID, y el adaptador atribuye cada mensaje de
esa sesión a ese dispositivo. La identidad proviene de la sesión autenticada — nunca de
nada dentro del payload.
Sustituye {device_id} por el UUID propio del dispositivo. Un dispositivo solo debería
publicar en su propio topic de telemetry y suscribirse solo a su propio topic de comandos.
Publica un objeto JSON de pares métrica → valor. El adaptador lo normaliza en un
TelemetryPoint, mapeando los campos numéricos a numeric_values y los campos de string
a string_values:
{
"temperature": 22.5,
"humidity": 65,
"state": "running"
}
El device_id y el tenant_id se toman de la sesión autenticada, y el timestamp se
sella a la llegada a menos que el decodificador de tu payload extraiga uno. Ver
envío de telemetry para el modelo
TelemetryPoint completo.
Para recibir comandos, suscríbete al topic de comandos con las mismas
credenciales (normalmente se mantiene abierto durante toda la vida del dispositivo):
El primer mensaje de telemetry pone el dispositivo en online. CORE-M rastrea la
actividad a partir de la llegada de telemetry, no solo de la conexión TCP: si no llega
telemetry durante más tiempo que el umbral de inactividad (120 segundos por defecto), el
dispositivo se marca como offline aunque la sesión MQTT siga técnicamente abierta. Los
dispositivos que reportan con poca frecuencia deberían publicar una lectura de heartbeat o
tener su umbral ajustado en consecuencia.