Ir al contenido

← Todas las funcionalidades

Seguidores solares de dos ejesServidor centralMQTTInfraestructura

Un solo broker Mosquitto para supervisar todos los seguidores de la planta

Decenas de seguidores reportando posición y fallos necesitan un único punto de encuentro. Este ejemplo, procedente de un despliegue real de seguidor solar de dos ejes, aprovisiona un broker MQTT Mosquitto central en el servidor de la planta con un script de instalación comentado: un listener autenticado, persistencia, límites de conexión razonables y los CSVs de mapeo de IDs por planta (mapa_ids_101, mapa_ids_102, mapa_ids_general) que traducen cada client ID de MQTT en una fila y posición física en el campo.

Un mosquitto.conf bien cerrado

La configuración deshabilita el acceso anónimo, apunta a un password_file y activa la persistencia para que los estados retained sobrevivan a los reinicios del broker. El log registra errores, avisos y eventos de conexión — cuando un seguidor se cae de la red, el log lo deja fechado. Los límites de conexión y keepalive están dimensionados para una flota de PLCs en campo, en lugar de dejarse en los valores por defecto pensados para el portátil de un desarrollador.

Usuarios por rol, no por dispositivo

Dos cuentas cubren toda la planta: una compartida por los PLCs de los seguidores para publicar estado y suscribirse a comandos, y otra para la parte de dashboard y analítica. Las contraseñas se crean con mosquitto_passwd y se almacenan hasheadas; los placeholders del script marcan dónde van las credenciales reales en el despliegue. Menos cuentas significa una rotación de credenciales más sencilla cuando cambia el personal de mantenimiento, dejando los certificados por dispositivo como un paso de endurecimiento posterior.

Mapas de IDs que atan MQTT al campo

El topic seguidores/101/3/estado te dice que ha reportado el seguidor 3 de la planta 101 — pero ¿qué máquina física es esa? Los mapas CSV lo responden: cada fichero por planta vincula los IDs locales con fila y posición, y mapa_ids_general consolida todas las plantas bajo IDs globales para el dashboard central. Un CSV plano lo puede auditar cualquiera con un editor de texto, que es exactamente lo que quieres durante la puesta en marcha.

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 120

El 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.

Funcionalidades relacionadas