2026-04-21 14:32:56 +02:00
2026-04-21 22:28:32 +02:00
2026-04-21 22:49:16 +02:00
2026-04-21 22:48:10 +02:00
2026-04-18 20:59:11 +02:00
2026-04-19 17:43:25 +02:00
2026-04-19 16:12:24 +02:00
2026-04-21 22:28:32 +02:00
2026-04-19 16:12:24 +02:00

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

Dashboard Screenshot

🏗️ System Architecture

The ecosystem consists of three main parts:

  1. 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.
  2. The Remote Agent (system_monitor.py): A lightweight script running on each repeater (Raspberry Pi/Linux) that monitors hardware and executes commands.
  3. 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 .ini files—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 (use config.example.json as 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.GPIO or apt install python3-rpi.gpio) if you plan to use the physical Hardware Reset feature.
  • Place system_monitor.py and node_config.json in a folder (e.g., /opt/node_agent/).
  • Edit node_config.json to set the client_id (must match the ID in clients.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.

Schermata Dashboard

🏗️ Architettura del Sistema

L'ecosistema si compone di tre parti principali:

  1. 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.
  2. 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.
  3. 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 (usa config.example.json come 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.GPIO o apt install python3-rpi.gpio) se intendi utilizzare la funzione di Reset Hardware fisico della scheda.
  • Copia system_monitor.py e node_config.json in una cartella (es. /opt/node_agent/).
  • Modifica node_config.json impostando il client_id (deve corrispondere all'ID in clients.json) e le credenziali MQTT.
  • (Consigliato) Crea un servizio systemd per avviare l'agente automaticamente al boot.

Created by IV3JDV @ ARIFVG - 2026

S
Description
No description provided
Readme 1 MiB
2026-04-22 22:08:13 +02:00
Languages
HTML 60%
Python 38.8%
JavaScript 1.2%