Un solo broker Mosquitto para supervisar todos los seguidores de la planta
Un mosquitto.conf bien cerrado
Usuarios por rol, no por dispositivo
Mapas de IDs que atan MQTT al campo
Un fragmento de la implementación
Tal cual del ejemplo desplegado en el Servidor central — cópialo libremente:
set -e
# === 1. Broker installation ===================================================
apt-get update
apt-get install -y mosquitto mosquitto-clients
# === 2. Main configuration: /etc/mosquitto/conf.d/central.conf ===============
# - Port 1883 on the plant's internal network only.
# - allow_anonymous false: every tracker authenticates.
# - persistence: keeps the last state of each tracker across restarts.
cat > /etc/mosquitto/conf.d/central.conf << 'EOF'
# --- Main listener (plant internal network) ---
listener 1883
allow_anonymous false
password_file /etc/mosquitto/passwd
# --- Persistence of retained messages and sessions ---
persistence true
persistence_location /var/lib/mosquitto/
# --- Logging ---
log_dest file /var/log/mosquitto/mosquitto.log
log_type error
log_type warning
log_type notice
connection_messages true
# --- Conservative limits for a fleet of trackers ---
max_connections 256
max_keepalive 120El ejemplo completo es un programa entero — cabecera de conexionado, setup y bucle principal — listo para adaptar a tu aplicación.
Preguntas frecuentes
¿Por qué ficheros CSV en lugar de una base de datos para los mapas de IDs?
A escala de flota el mapa cambia rara vez y es minúsculo. Los CSV son versionables, comparables con diff y editables en campo sin herramientas. El dashboard los carga al arrancar; una base de datos solo compensa con miles de dispositivos.
¿Cómo debe estructurarse la jerarquía de topics?
El despliegue usa seguidores/plant/id/estado para telemetría y seguidores/plant/id/comando para las órdenes. Esto permite que el dashboard se suscriba a seguidores/# mientras cada PLC se suscribe solo a su propio topic de comandos.
¿Debería el broker usar TLS además de contraseñas?
En una red de planta aislada, la autenticación por contraseña es la línea base habitual. Si los seguidores se conectan a través de infraestructura compartida o pública, añade un listener TLS en el 8883 con certificados — Mosquitto soporta ambos listeners simultáneamente.