update doc

This commit is contained in:
VALLONGOL 2025-06-13 10:37:17 +02:00
parent ffb9c9bba4
commit 07186df5e8
3 changed files with 396 additions and 49 deletions

154
README.md
View File

@ -1,16 +1,148 @@
# FlightMonitor
Certamente! Ho preparato due versioni della presentazione, una in italiano e una in inglese. Entrambe evidenziano non solo le funzionalità visibili all'utente, ma anche i punti di forza dell'architettura software, che sono molto importanti per un progetto di questo livello.
A brief description of FlightMonitor.
---
## Features
- Feature 1
- Feature 2
### Presentazione (Italiano)
## Getting Started
...
## FlightMonitor: Applicazione Avanzata per il Monitoraggio del Traffico Aereo
## Contributing
...
**FlightMonitor** è un'applicazione desktop sviluppata in Python, progettata per offrire una suite completa di strumenti per il monitoraggio, la registrazione e l'analisi del traffico aereo. Nata come strumento per sviluppatori e appassionati di aviazione, l'applicazione combina un'interfaccia utente reattiva con un backend robusto e multi-threaded per la gestione dei dati in tempo reale e storici.
## License
...
---
### Caratteristiche Principali
* **Monitoraggio Live:** Visualizza in tempo reale il traffico aereo in una specifica area geografica (Bounding Box). I dati vengono aggiornati a intervalli configurabili, ottimizzati in base allo stato di autenticazione dell'utente (utente registrato vs. anonimo).
* **Analisi Dati Storici:** Permette di scaricare e visualizzare i dati di volo per un intervallo di tempo passato, definendo l'area di interesse e l'intervallo di campionamento.
* **Mappa Interattiva e Intelligente:**
* Una mappa completamente interattiva basata su tile, con caching su disco per performance ottimali e uso offline.
* Funzionalità di pan, zoom e recenter.
* Visualizzazione delle tracce dei velivoli con colori unici per ogni aereo.
* Una griglia geografica (reticolo) dinamica con meridiani e paralleli, che si adatta intelligentemente al livello di zoom per una leggibilità ottimale.
* **Viste Dettagliate dei Dati:**
* Un pannello di dettaglio rapido che mostra le informazioni principali del velivolo selezionato.
* Una finestra di dettaglio completa con tutte le informazioni statiche (dal database) e dinamiche (dati di volo correnti), inclusa una mappa dedicata alla traccia completa del volo.
* **Logging Dati Avanzato:**
* Possibilità di registrare l'intera sessione di monitoraggio.
* Salvataggio dei **dati JSON grezzi** ricevuti dal provider, per analisi offline e debug.
* Creazione automatica di un **file di report** riassuntivo con i dati della sessione e il conteggio degli aerei per ogni interrogazione.
* **Gestione Database:**
* Importazione di database di aeromobili da file CSV con una dialog di progresso dedicata.
* Archiviazione dei dati di volo in un database SQLite giornaliero per una gestione efficiente.
* **Personalizzazione:**
* Salvataggio e caricamento di **profili di aree geografiche** per un accesso rapido alle zone di interesse comune.
* Configurazione centralizzata per un facile tuning di parametri API, polling rate e stile della UI.
---
### Architettura Tecnica
Il progetto è costruito su un'architettura **MVC-like (Model-View-Controller)** pulita, con una forte enfasi sulla **separazione delle responsabilità (SoC)**.
* **Model:** Lo strato dati astrae completamente la fonte (OpenSky, ecc.) attraverso un **modello dati canonico** (`CanonicalFlightState`). Gli `Adapter` dedicati gestiscono la comunicazione con le API esterne. Lo storage è affidato a SQLite con una gestione separata per dati dinamici e statici.
* **View:** L'interfaccia, basata su **Tkinter (ttk)**, è composta da pannelli modulari e riutilizzabili. È un componente "passivo" che riceve dati dal Controller e notifica le interazioni dell'utente.
* **Controller:** Il `AppController` orchestra il flusso di lavoro. Non contiene la logica di business, ma delega a componenti specializzati come i `DataProcessor`, `MapCommandHandler`, `RawDataLogger` e `CleanupManager`.
* **Flusso Dati Asincrono:** Le operazioni di rete (chiamate API) e di rendering della mappa vengono eseguite in **thread separati** per garantire che l'interfaccia utente rimanga sempre fluida e reattiva. La comunicazione tra i thread e il thread principale della GUI avviene in modo sicuro tramite **code (`queue.Queue`)**, seguendo le best practice per le applicazioni concorrenti.
---
### Stack Tecnologico
* **Linguaggi:** Python (con hint di tipo per robustezza)
* **GUI:** Tkinter (con widget moderni `ttk`)
* **Networking:** `requests`
* **Elaborazione Immagini:** `Pillow (PIL)`
* **Dati Geospaziali:** `mercantile`, `pyproj`
* **Database:** `sqlite3`
---
### Sviluppi Futuri
L'architettura modulare è predisposta per future espansioni, tra cui:
* Integrazione di nuove fonti dati (es. FlightAware, ADSB-Hub).
* Implementazione della modalità **Playback** per rivedere le sessioni registrate.
* Creazione di dashboard con grafici e statistiche avanzate.
---
---
### Presentation (English)
## FlightMonitor: An Advanced Aircraft Tracking Application
**FlightMonitor** is a desktop application developed in Python, designed to offer a comprehensive suite of tools for monitoring, recording, and analyzing air traffic. Conceived as a tool for developers and aviation enthusiasts, the application combines a responsive user interface with a robust, multi-threaded backend for managing real-time and historical data.
---
### Key Features
* **Live Monitoring:** Displays real-time air traffic within a user-defined geographical area (Bounding Box). Data is updated at configurable intervals, optimized based on the user's authentication status (registered vs. anonymous user).
* **Historical Data Analysis:** Allows for the download and visualization of flight data for a past time range, enabling users to define the area of interest and the sampling interval.
* **Interactive and Intelligent Map:**
* A fully interactive, tile-based map with on-disk caching for optimal performance and offline use.
* Features pan, zoom, and recenter functionalities.
* Displays aircraft tracks with unique colors for each plane.
* A dynamic geographical grid (graticule) with meridians and parallels that intelligently adapts to the current zoom level for optimal readability.
* **Detailed Data Views:**
* A quick-look details panel showing essential information for the currently selected aircraft.
* A full-details window with all static information (from the database) and dynamic data (current flight status), including a dedicated map for the aircraft's complete flight track.
* **Advanced Data Logging:**
* The ability to record an entire monitoring session.
* Saves the **raw JSON data** received from the provider, ideal for offline analysis and debugging.
* Automatically generates a summary **report file** containing session metadata and the aircraft count for each query.
* **Database Management:**
* Imports aircraft databases from CSV files through a dedicated progress dialog.
* Archives flight data into a daily SQLite database for efficient management.
* **Customization:**
* Saves and loads **geographical area profiles** for quick access to common zones of interest.
* Centralized configuration for easy tuning of API parameters, polling rates, and UI styling.
---
### Technical Architecture
The project is built on a clean, **MVC-like (Model-View-Controller)** architecture with a strong emphasis on the **Separation of Concerns (SoC)**.
* **Model:** The data layer completely abstracts the source (e.g., OpenSky) through a **canonical data model** (`CanonicalFlightState`). Dedicated `Adapters` handle communication with external APIs. Storage is managed by SQLite, with separate handling for dynamic and static data.
* **View:** The interface, based on **Tkinter (ttk)**, is composed of modular and reusable panels. It acts as a "passive" component, receiving data from the Controller and notifying it of user interactions.
* **Controller:** The `AppController` orchestrates the application's workflow. It does not contain business logic itself but delegates to specialized components like `DataProcessors`, `MapCommandHandler`, `RawDataLogger`, and `CleanupManager`.
* **Asynchronous Data Flow:** Network operations (API calls) and map rendering are executed in **separate worker threads** to ensure the user interface remains always fluid and responsive. Communication between worker threads and the main GUI thread is handled safely via **queues (`queue.Queue`)**, following best practices for concurrent applications.
---
### Technology Stack
* **Languages:** Python (with type hints for robustness)
* **GUI:** Tkinter (with modern `ttk` widgets)
* **Networking:** `requests`
* **Image Processing:** `Pillow (PIL)`
* **Geospatial Data:** `mercantile`, `pyproj`
* **Database:** `sqlite3`
---
### Future Developments
The modular architecture is designed for future expansions, including:
* Integration of new data sources (e.g., FlightAware, ADSB-Hub).
* Implementation of a **Playback mode** to review recorded sessions.
* Creation of dashboards with advanced charts and statistics.

View File

@ -1,24 +1,132 @@
# FlightMonitor - English Manual
## Introduction
Welcome to FlightMonitor. This document provides an overview of how to install, use, and understand the project.
## Installation
Describe the installation steps here. For example:
1. Clone the repository: `git clone <repository_url>`
2. Navigate to the project directory: `cd FlightMonitor`
3. Install dependencies: `pip install -r requirements.txt` (if applicable)
## User Manual - FlightMonitor
## Usage
Explain how to run and use the application.
- To run the application: `python -m flightmonitor`
- Command-line arguments (if any).
- GUI interaction (if any).
**Version 1.0**
## Development
Information for developers contributing to the project.
- Code structure.
- How to run tests.
### Table of Contents
1. Introduction
2. Installation and Requirements
3. User Interface Overview
4. Core Features
* 4.1. Live Monitoring
* 4.2. Historical Data Download
* 4.3. Area Profile Management
* 4.4. Session Data Logging
5. Map Interaction
6. Practical Use Cases
7. Frequently Asked Questions (FAQ)
8. Troubleshooting
## Troubleshooting
Common issues and their solutions.
---
### 1. Introduction
Welcome to **FlightMonitor**, an advanced desktop application for air traffic monitoring and analysis. FlightMonitor is designed for aviation enthusiasts, hobbyists, and developers who need a powerful and flexible tool to visualize and record flight data from sources like the OpenSky Network.
This manual will guide you through all the application's features, from initial setup to using its most advanced capabilities.
### 2. Installation and Requirements
FlightMonitor is a Python-based application. To run it, ensure you have the following requirements installed in your environment:
* Python 3.8 or higher
* The Python libraries specified in the `requirements.txt` file, including: `requests`, `Pillow`, `mercantile`, `pyproj`.
For an optimal experience, it is recommended to use OpenSky Network API credentials to increase the query rate limits. Credentials can be entered in the `data/config.py` file.
### 3. User Interface Overview
The FlightMonitor interface is divided into two main, resizable columns:
* **Left Column (Control Panel):**
* **Area Profiles & BBox:** Allows you to define the geographical area of interest (Bounding Box) and to save/load area configurations as "Profiles".
* **Data Logging Session:** Contains controls to enable and configure the saving of raw and summary data for the monitoring session.
* **Function Notebook:** A tabbed panel to select the operating mode (Live Monitor, Historical Download, Playback).
* **Log & Status Area:** Displays detailed application logs and a summary status via a colored semaphore.
* **Right Column (Display Area):**
* **Views Notebook:** A tabbed panel containing the **Map View** and other future views (e.g., Table View).
* **Map Tools & Info Panels:** Provides tools to interact with the map (zoom, pan) and displays detailed information about the map itself (coordinates, scale) and the selected aircraft.
### 4. Core Features
#### 4.1. Live Monitoring
This is the primary mode for viewing real-time air traffic.
**How to use:**
1. Select the **"Live Monitor"** tab in the left column.
2. Define an area of interest in the "Area Profiles & BBox" panel by entering the minimum and maximum latitude and longitude coordinates, or by selecting a saved profile.
3. (Optional) Enable data logging in the "Data Logging Session" section.
4. Press the **"Start Live"** button.
The map will populate with aircraft within the specified area. Their positions will be updated with each query cycle. To end monitoring, press **"Stop Live"**.
#### 4.2. Historical Data Download
This mode allows you to download flight data for a past period. **Note:** this requires valid OpenSky credentials.
**How to use:**
1. Select the **"Historical Download"** tab.
2. Define the area of interest in the "Area Profiles & BBox" panel.
3. In the "Download Parameters" panel, enter the start and end dates and times (in UTC).
4. Set the **API Scan Rate** (how often to query the API, in seconds) and the **Sampling Interval** (the time gap between the data points to be downloaded).
5. Press **"Start Download"**.
The application will begin downloading the data slice by slice, showing progress on the map and the virtual clock.
#### 4.3. Area Profile Management
To avoid manually entering coordinates every time, you can save areas as profiles.
* **Save a Profile:** Enter the desired coordinates and press **"Save"**. You will be prompted to enter a name for the profile.
* **Load a Profile:** Select a profile from the dropdown menu. The coordinates will be loaded automatically.
* **Delete a Profile:** Select a profile and press **"Delete"**. The "Default Zone" profile cannot be deleted.
#### 4.4. Session Data Logging
This powerful feature allows you to save the data from a monitoring session for future analysis.
**How to use:**
1. Before starting a session (Live or Historical), check the **"Enable Raw Data Logging"** box.
2. The "Save to" field will be populated with a default directory (`Atc_download`). You can change this by pressing **"Browse..."**.
3. Start the monitoring. Two files will be created in the specified folder:
* `atc-<timestamp>.txt`: Contains the raw JSON data received from the provider, one line per query.
* `atc-<timestamp>_report.txt`: Contains a session summary, including the BBox and a table with the aircraft count for each fetch.
4. The table in the UI will populate in real-time with the summary data.
5. The **"Open Folder"** button directly opens the save location in your system's file explorer.
### 5. Map Interaction
* **Pan:** Click and drag the mouse on the map. Alternatively, use the pan buttons in the "Map Tools" panel.
* **Zoom:** Use the mouse wheel. Alternatively, use the `+` and `-` buttons in the "Map Tools" panel.
* **Select Aircraft:** Left-click on an aircraft icon. Its details will appear in the "Selected Flight Details" panel.
* **Context Menu:** Right-click on the map to open a menu that allows you to:
* Recenter the map at that point.
* Define a new Bounding Box around that point.
### 6. Practical Use Cases
* **Monitor traffic over your city:** Enter the coordinates of a 100x100 km BBox around your city, save it as a "Home" profile, and start live monitoring.
* **Record a specific event:** If you know an interesting aircraft will pass through a certain area at a specific time, you can start live monitoring with raw data logging enabled to capture all the details of its trajectory.
* **Analyze a past anomaly:** Use the "Historical Download" mode to download data for an area and time period where an anomaly occurred (e.g., a go-around) to analyze its dynamics.
### 7. Frequently Asked Questions (FAQ)
* **Q: Why don't I see any aircraft on the map in Live mode?**
* **A:** Check that your Bounding Box is correct and not too small. Verify that your internet connection is active. If you are using anonymous mode, you may have to wait 10-15 seconds for the first update. Check the status panel for any error messages from the API.
* **Q: Historical download isn't working. Why?**
* **A:** Historical mode requires valid OpenSky Network API credentials to be correctly entered in the `data/config.py` file. Anonymous access does not allow downloading historical data.
* **Q: Can I change the map's appearance?**
* **A:** Currently, the application uses OpenStreetMap as the tile provider. Future versions may allow selecting other map styles.
* **Q: Where are the log files saved?**
* **A:** By default, in the `Atc_download` subfolder within the application's main directory. You can change this path using the "Browse..." button.
### 8. Troubleshooting
* **The application won't start:** Ensure that all requirements listed in Section 2 are installed correctly. Run the application from a terminal to see any startup error messages.
* **The map only shows gray squares:** This indicates that the map tiles cannot be loaded. Check your internet connection. If the problem persists, the tile cache may be corrupt. Try deleting the `flightmonitor_tile_cache` folder.
* **I see errors in the Log panel:** Error messages like "RATE_LIMITED" or "API_ERROR" indicate temporary issues with the API service. The application will attempt to reconnect automatically. If the error is "PERMANENT_FAILURE", check your API credentials.

View File

@ -1,24 +1,131 @@
# FlightMonitor - Manuale Italiano
## Manuale Utente - FlightMonitor
## Introduzione
Benvenuto in FlightMonitor. Questo documento fornisce una panoramica su come installare, utilizzare e comprendere il progetto.
**Versione 1.0**
## Installazione
Descrivi i passaggi di installazione qui. Ad esempio:
1. Clona il repository: `git clone <repository_url>`
2. Naviga nella directory del progetto: `cd FlightMonitor`
3. Installa le dipendenze: `pip install -r requirements.txt` (se applicabile)
### Indice
1. Introduzione
2. Installazione e Requisiti
3. Panoramica dell'Interfaccia Utente
4. Funzionalità Principali
* 4.1. Monitoraggio Live
* 4.2. Download Dati Storici
* 4.3. Gestione dei Profili di Area
* 4.4. Logging dei Dati di Sessione
5. Interazione con la Mappa
6. Casi d'Uso Pratici
7. Domande Frequenti (FAQ)
8. Risoluzione dei Problemi
## Utilizzo
Spiega come eseguire e utilizzare l'applicazione.
- Per eseguire l'applicazione: `python -m flightmonitor`
- Argomenti da riga di comando (se presenti).
- Interazione con la GUI (se presente).
---
## Sviluppo
Informazioni per gli sviluppatori che contribuiscono al progetto.
- Struttura del codice.
- Come eseguire i test.
### 1. Introduzione
Benvenuti a **FlightMonitor**, un'applicazione desktop avanzata per il monitoraggio e l'analisi del traffico aereo. FlightMonitor è stato progettato per appassionati di aviazione, hobbisti e sviluppatori che necessitano di uno strumento potente e flessibile per visualizzare e registrare dati di volo da fonti come OpenSky Network.
Questo manuale vi guiderà attraverso tutte le funzionalità dell'applicazione, dalla configurazione iniziale all'uso delle sue capacità più avanzate.
### 2. Installazione e Requisiti
FlightMonitor è un'applicazione basata su Python. Per eseguirla, assicuratevi di avere i seguenti requisiti installati nel vostro ambiente:
* Python 3.8 o superiore
* Le librerie Python specificate nel file `requirements.txt`, tra cui: `requests`, `Pillow`, `mercantile`, `pyproj`.
Per un'esperienza ottimale, si raccomanda di utilizzare le credenziali API di OpenSky Network per aumentare i limiti di interrogazione. Le credenziali possono essere inserite nel file `data/config.py`.
### 3. Panoramica dell'Interfaccia Utente
L'interfaccia di FlightMonitor è suddivisa in due colonne principali, ridimensionabili a piacere:
* **Colonna Sinistra (Pannello di Controllo):**
* **Area Profiles & BBox:** Permette di definire l'area geografica di interesse (Bounding Box) e di salvare/caricare configurazioni di aree come "Profili".
* **Data Logging Session:** Contiene i controlli per abilitare e configurare il salvataggio dei dati grezzi e di riepilogo della sessione di monitoraggio.
* **Function Notebook:** Un pannello a schede per selezionare la modalità operativa (Live Monitor, Historical Download, Playback).
* **Log & Status Area:** Mostra i log dettagliati dell'applicazione e uno stato sintetico tramite un semaforo colorato.
* **Colonna Destra (Area di Visualizzazione):**
* **Views Notebook:** Un pannello a schede che contiene la **Map View** e altre viste future (es. Table View).
* **Map Tools & Info Panels:** Fornisce strumenti per interagire con la mappa (zoom, pan) e visualizza informazioni dettagliate sulla mappa stessa (coordinate, scala) e sul velivolo selezionato.
### 4. Funzionalità Principali
#### 4.1. Monitoraggio Live
Questa è la modalità principale per visualizzare il traffico aereo in tempo reale.
**Come si usa:**
1. Selezionare la tab **"Live Monitor"** nella colonna di sinistra.
2. Definire un'area di interesse nel pannello "Area Profiles & BBox" inserendo le coordinate di latitudine e longitudine minime e massime, oppure selezionando un profilo salvato.
3. (Opzionale) Abilitare il logging dei dati nella sezione "Data Logging Session".
4. Premere il pulsante **"Start Live"**.
La mappa si popolerà con gli aerei presenti nell'area specificata. Le loro posizioni verranno aggiornate a ogni ciclo di interrogazione. Per terminare il monitoraggio, premere **"Stop Live"**.
#### 4.2. Download Dati Storici
Questa modalità permette di scaricare dati di volo per un periodo passato. **Nota:** richiede credenziali OpenSky valide.
**Come si usa:**
1. Selezionare la tab **"Historical Download"**.
2. Definire l'area di interesse nel pannello "Area Profiles & BBox".
3. Nel pannello "Download Parameters", inserire le date e gli orari di inizio e fine (in UTC).
4. Impostare l'**API Scan Rate** (quanto spesso interrogare l'API, in secondi) e il **Sampling Interval** (l'intervallo tra i punti dati da scaricare).
5. Premere **"Start Download"**.
L'applicazione inizierà a scaricare i dati "fetta per fetta", mostrando l'avanzamento sulla mappa e sull'orologio virtuale.
#### 4.3. Gestione dei Profili di Area
Per evitare di inserire manualmente le coordinate ogni volta, è possibile salvare le aree come profili.
* **Salvare un Profilo:** Inserire le coordinate desiderate e premere **"Save"**. Verrà chiesto di inserire un nome per il profilo.
* **Caricare un Profilo:** Selezionare un profilo dal menu a tendina. Le coordinate verranno caricate automaticamente.
* **Cancellare un Profilo:** Selezionare un profilo e premere **"Delete"**. Non è possibile cancellare il profilo "Default Zone".
#### 4.4. Logging dei Dati di Sessione
Questa potente funzionalità permette di salvare i dati di una sessione di monitoraggio per analisi future.
**Come si usa:**
1. Prima di avviare una sessione (Live o Storica), spuntare la casella **"Enable Raw Data Logging"**.
2. Il campo "Save to" si popolerà con una directory di default (`Atc_download`). È possibile cambiarla premendo **"Browse..."**.
3. Avviare il monitoraggio. Verranno creati due file nella cartella specificata:
* `atc-<timestamp>.txt`: Contiene i dati JSON grezzi ricevuti dal provider, una riga per ogni interrogazione.
* `atc-<timestamp>_report.txt`: Contiene un riepilogo della sessione, inclusi BBox e una tabella con il conteggio degli aerei per ogni fetch.
4. La tabella nella UI si popolerà in tempo reale con i dati di riepilogo.
5. Il pulsante **"Open Folder"** apre direttamente la cartella di salvataggio nel file explorer del sistema.
### 5. Interazione con la Mappa
* **Pan (Spostamento):** Cliccare e trascinare il mouse sulla mappa. In alternativa, usare i pulsanti di pan nel pannello "Map Tools".
* **Zoom:** Usare la rotellina del mouse. In alternativa, usare i pulsanti `+` e `-` nel pannello "Map Tools".
* **Selezione Aereo:** Cliccare con il tasto sinistro su un'icona di un aereo. I suoi dettagli appariranno nel pannello "Selected Flight Details".
* **Menu Contestuale:** Cliccare con il tasto destro sulla mappa per aprire un menu che permette di:
* Ricentrare la mappa in quel punto.
* Definire una nuova Bounding Box attorno a quel punto.
### 6. Casi d'Uso Pratici
* **Monitorare il traffico sopra casa:** Inserire le coordinate di una BBox di circa 100x100 km attorno alla propria città, salvarla come profilo "Casa" e avviare il monitoraggio live.
* **Registrare un evento specifico:** Se si sa che un aereo interessante passerà in una certa area a un certo orario, si può avviare il monitoraggio live con il logging dei dati grezzi abilitato per catturare tutti i dettagli della sua traiettoria.
* **Analizzare un'anomalia passata:** Usare la modalità "Historical Download" per scaricare i dati di un'area e di un periodo in cui si è verificato un evento anomalo (es. un go-around) per analizzarne la dinamica.
### 7. Domande Frequenti (FAQ)
* **D: Perché non vedo aerei sulla mappa in modalità Live?**
* **R:** Controlla che la tua Bounding Box sia corretta e non troppo piccola. Verifica che la tua connessione internet sia attiva. Se stai usando la modalità anonima, potresti dover attendere 10-15 secondi per il primo aggiornamento. Controlla il pannello di stato per eventuali messaggi di errore dall'API.
* **D: Il download storico non funziona. Perché?**
* **R:** La modalità storica richiede credenziali API di OpenSky Network valide e correttamente inserite nel file `data/config.py`. L'accesso anonimo non permette di scaricare dati storici.
* **D: Posso cambiare l'aspetto della mappa?**
* **R:** Attualmente, l'applicazione usa OpenStreetMap come fornitore di tile. Future versioni potrebbero permettere di selezionare altri stili di mappa.
* **D: Dove vengono salvati i file di log?**
* **R:** Per default, nella sottocartella `Atc_download` all'interno della cartella principale dell'applicazione. È possibile cambiare questo percorso tramite il pulsante "Browse...".
### 8. Risoluzione dei Problemi
* **L'applicazione non si avvia:** Assicurati che tutti i requisiti elencati nella Sezione 2 siano installati correttamente. Esegui l'applicazione da un terminale per visualizzare eventuali messaggi di errore all'avvio.
* **La mappa mostra solo quadrati grigi:** Questo indica che i "tile" della mappa non possono essere caricati. Controlla la tua connessione internet. Se il problema persiste, la cache dei tile potrebbe essere corrotta. Prova a cancellare la cartella `flightmonitor_tile_cache`.
* **Vedo errori nel pannello di Log:** Messaggi di errore come "RATE_LIMITED" o "API_ERROR" indicano problemi temporanei con il servizio API. L'applicazione tenterà di riconnettersi automaticamente. Se l'errore è "PERMANENT_FAILURE", controlla le tue credenziali API.
## Risoluzione dei problemi
Problemi comuni e relative soluzioni.