Conexión MQTT y autenticación
Host, puerto, TLS y cómo autenticarse con tu ApiToken.
Conexión al broker MQTT público
| Parámetro | Valor producción | Valor dev local |
|---|---|---|
| Host | abior.art | mosquitto (dentro del docker network) |
| Puerto | 8883 (TLS) | 1883 (plaintext) |
| TLS | Sí, certificado de Let's Encrypt | No |
| Keep-alive | 60 s recomendado | 60 s |
Autenticación
Abior usa el plugin mosquitto-go-auth que valida usuario/contraseña contra Django via HTTP.
- Usuario MQTT =
<ApiToken.key>del dispositivo (lo obtienes al crearlo, ver siguiente hoja). - Contraseña MQTT =
token(literal, hoy; será dinámico en futuras versiones).
El plugin valida cada CONNECT contra:
POST /api/auth/mqtt/check_user/
POST /api/auth/mqtt/check_acl/
Si el token está activo y tiene permiso sobre el topic, el broker acepta la conexión.
Variables de entorno relevantes (settings Django)
MQTT_BROKER_PUBLIC_HOST = 'abior.art' # Host público para devices
MQTT_BROKER_PUBLIC_PORT = 8883 # TLS
MQTT_BROKER_HOST = 'mosquitto' # Host interno (Docker)
MQTT_BROKER_PORT = 1883 # Plaintext interno
ACL (qué puede publicar/suscribir cada device)
Cada ApiToken solo tiene permiso sobre topics de su propio device:
- ✅
abior/{tu_device_id}/sensors/+(publicar lecturas) - ✅
abior/{tu_device_id}/state(publicar online/offline) - ✅
abior/{tu_device_id}/ack/+(confirmar comandos recibidos) - ✅
abior/{tu_device_id}/commands/+(suscribirse a comandos del servidor) - ❌
abior/{otro_device_id}/...(rechazado)
Esto evita que un device comprometido escuche o envíe a otros.