6.4 KiB
📡 Fleet Control Console
🌍 Read in English | 🇮🇹 Leggi in Italiano
🇬🇧 English
Fleet Control Console is a professional, real-time command and control (C2) dashboard designed for amateur radio repeater networks (MMDVM). It allows administrators to monitor and manage a "fleet" of remote digital voice nodes (DMR, NXDN, YSF, P25) through a single, elegant web interface.
🏗️ System Architecture
The ecosystem consists of three main parts:
- The Central Dashboard (
app.py): A Flask web server that handles the UI (with modern Glassmorphism design), user permissions (SQLite), and WebSocket connections for zero-latency updates. - The Remote Agent (
system_monitor.py): A lightweight script running on each repeater (Raspberry Pi/Linux) that monitors hardware and executes commands. - The MQTT Broker: The communication backbone. All data and commands flow through MQTT for near-instant responsiveness.
✨ Features
- Zero-Latency Real-Time UI: Powered by WebSockets (Socket.IO), the dashboard updates instantly upon radio traffic or telemetry changes, completely eliminating heavy HTTP polling overhead.
- Centralized Telemetry: Real-time CPU, RAM, Temperature, and Disk usage for all nodes.
- Service Management: Start, Stop, or Restart system daemons (MMDVMHost, DMRGateway, etc.) remotely.
- Smart Auto-Healing: The agent automatically detects crashed services and attempts to revive them before raising critical alerts (includes Telegram notifications).
- Hardware Reset (GPIO): Physically reboot the MMDVM radio HAT via GPIO pins directly from the dashboard, automatically restarting the host daemon for a fail-proof serial connection recovery.
- Remote Configuration: Built-in web editor for
.inifiles—no SSH required. - Live Heard Log: Unified, real-time view of radio traffic across the entire network.
- Global Operations: Switch profiles (e.g., Profile A/B) or force network-wide configuration updates instantly on all repeaters with one click.
- PWA Ready (Mobile App): Fully responsive design that can be installed directly on Android/iOS as a Progressive Web App for a native, full-screen mobile experience.
🚀 Installation & Setup
1. Server Setup (Central Hub)
- Install dependencies:
pip install flask flask-socketio paho-mqtt psutil werkzeug - Configure
config.json(useconfig.example.jsonas template) with your MQTT credentials. - Define your repeaters in
clients.json. - Run:
python3 app.py
2. Agent Setup (Remote Nodes)
The system_monitor.py must be installed on every node you wish to monitor.
- (Optional) Install
RPi.GPIO(pip install RPi.GPIOorapt install python3-rpi.gpio) if you plan to use the physical Hardware Reset feature. - Place
system_monitor.pyandnode_config.jsonin a folder (e.g.,/opt/node_agent/). - Edit
node_config.jsonto set theclient_id(must match the ID inclients.json) and MQTT credentials. - (Recommended) Set up a systemd service to run the agent automatically at boot.
🇮🇹 Italiano
Fleet Control Console è una dashboard di comando e controllo (C2) professionale in tempo reale, progettata per le reti di ripetitori radioamatoriali (MMDVM). Permette ai gestori di monitorare e gestire un'intera "flotta" di nodi digitali (DMR, NXDN, YSF, P25) da un'unica interfaccia web raffinata.
🏗️ Architettura del Sistema
L'ecosistema si compone di tre parti principali:
- Dashboard Centrale (
app.py): Un server web Flask che gestisce l'interfaccia (con design moderno in stile Glassmorphism), i permessi utenti (SQLite) e connessioni WebSocket per aggiornamenti a latenza zero. - Agente Remoto (
system_monitor.py): Uno script leggero in esecuzione su ogni ripetitore (Raspberry Pi/Linux) che raccoglie i dati hardware ed esegue i comandi. - Broker MQTT: Il centro nevralgico della comunicazione. Tutti i dati e i comandi viaggiano su MQTT per una reattività istantanea.
✨ Funzionalità
- Interfaccia Real-Time a Latenza Zero: Grazie all'integrazione di WebSockets (Socket.IO), la dashboard scatta all'istante al passaggio di traffico radio o ai cambi di telemetria, eliminando totalmente il carico del polling HTTP continuo.
- Telemetria Centralizzata: Stato in tempo reale di CPU, RAM, Temperatura e Disco di tutti i nodi.
- Gestione Servizi: Avvio, arresto o riavvio dei demoni di sistema (MMDVMHost, DMRGateway, ecc.) da remoto.
- Auto-Healing Intelligente: L'agente rileva automaticamente i servizi andati in blocco e tenta di rianimarli prima di inviare allarmi critici (include notifiche Telegram).
- Reset Hardware (GPIO): Invia un impulso di reset fisico alla scheda radio MMDVM tramite i pin GPIO direttamente dalla dashboard, riavviando automaticamente il demone host per ripristinare la comunicazione seriale.
- Configurazione Remota: Editor web integrato per i file
.ini: modifica i parametri senza accedere in SSH. - Log Ascolti Live: Vista unificata e in tempo reale del traffico radio di tutta la rete.
- Operazioni Globali: Commuta tra diversi assetti (es. Profilo A/B) o forza l'aggiornamento dei dati contemporaneamente su tutta la rete con un solo clic.
- PWA Ready (App Mobile): Design completamente responsivo, installabile su smartphone Android e iOS come Progressive Web App per un'esperienza fluida e nativa a schermo intero.
🚀 Installazione e Configurazione
1. Setup del Server (Hub Centrale)
- Installa le dipendenze:
pip install flask flask-socketio paho-mqtt psutil werkzeug - Configura
config.json(usaconfig.example.jsoncome base) con le credenziali MQTT. - Definisci i tuoi ripetitori nel file
clients.json. - Avvia:
python3 app.py
2. Setup dell'Agente (Nodi Remoti)
Il file system_monitor.py va installato su ogni nodo che vuoi monitorare.
- (Opzionale) Installa
RPi.GPIO(pip install RPi.GPIOoapt install python3-rpi.gpio) se intendi utilizzare la funzione di Reset Hardware fisico della scheda. - Copia
system_monitor.pyenode_config.jsonin una cartella (es./opt/node_agent/). - Modifica
node_config.jsonimpostando ilclient_id(deve corrispondere all'ID inclients.json) e le credenziali MQTT. - (Consigliato) Crea un servizio systemd per avviare l'agente automaticamente al boot.
Created by IV3JDV @ ARIFVG - 2026
