4.3 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, user permissions (SQLite), and logic. - 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
- 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.
- Remote Configuration: Built-in web editor for
.inifiles—no SSH required. - Live Transit Log: Unified view of radio traffic across the entire network.
- Profile Switching: Toggle between different repeater setups (e.g., Profile A/B) with one click.
🚀 Installation & Setup
1. Server Setup (Central Hub)
- Install dependencies:
pip install flask 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.
- Place
system_monitor.pyandnode_config.jsonin a folder (e.g.,/opt/node_agent/). - Edit
monitor_config.inito 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, i permessi utenti (SQLite) e la logica di controllo. - 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à
- 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.
- Configurazione Remota: Editor web integrato per i file
.ini: modifica i parametri senza accedere in SSH. - Log Transiti Live: Vista unificata del traffico radio di tutta la rete.
- Cambio Profilo: Commuta tra diversi assetti del ripetitore (es. Profilo A/B) con un clic.
🚀 Installazione e Configurazione
1. Setup del Server (Hub Centrale)
- Installa le dipendenze:
pip install flask 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.
- 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
