Etna Tremor Monitor
Questo progetto Python monitora il tremore vulcanico del Monte Etna recuperando dati sismici, calcolando i valori RMS orari, generando report e inviando notifiche tramite Telegram. L'interpretazione basata sull'IA sfrutta un modello locale servito tramite Ollama.
✨ Caratteristiche Principali
Acquisizione Dati Sismici
Scarica dati da stazioni sismiche intorno all'Etna tramite servizi web FDSN (INGV).
Download Incrementale
Gestisce un download efficiente e l'archiviazione locale di file miniSEED, scaricando solo dati nuovi.
Calcolo RMS
Elabora i dati grezzi per calcolare i valori RMS medi orari, un indicatore dell'ampiezza del tremore.
Interpretazione AI
Utilizza un modello Ollama locale per fornire un'analisi testuale dei pattern di tremore osservati.
Reportistica PDF
Crea un report PDF completo con grafici, tabelle, mappe di polarizzazione e analisi AI.
Notifiche Telegram
Invia grafici, riepiloghi, report PDF e file Excel a una chat Telegram specificata.
Embeddings dei Bollettini
Calcola gli embedding dei bollettini INGV per trovare i comunicati più pertinenti per le risposte AI.
Containerizzazione Docker
Fornito con un `docker-compose.yml` e un `Dockerfile` a più stadi per un deployment semplice.
Analisi di Polarizzazione
Elabora i 3 componenti sismici per calcolare il back-azimuth e la direzione di provenienza del segnale.
🚀 Setup e Avvio
1. Prerequisiti
Assicurarsi di avere installato Docker e Docker Compose. È necessario anche un bot Telegram e il servizio Ollama in esecuzione.
2. Configura le Variabili d'Ambiente
Copia il file .env.example in .env e personalizza le variabili (token, URL, etc.).
TELEGRAM_BOT_TOKEN=IL_TUO_TOKEN_BOT_TELEGRAM
TELEGRAM_CHAT_ID=IL_TUO_ID_CHAT_TELEGRAM
OLLAMA_MODEL=qwen3:1.7b
OLLAMA_URL=http://ollama:11434
# ... e altre variabili
3. Build e Avvia con Docker Compose
Il primo comando avvia il servizio LLM, il secondo avvia l'applicazione.
# Avvia il servizio Ollama e scarica il modello
docker-compose up --build -d ollama
# Avvia il servizio principale di Etna
docker-compose up -d etna-service
4. Controllare i Log (Opzionale)
Per visualizzare l'output dello script in esecuzione:
docker-compose logs -f etna-service
⚙️ Come Funziona
Lo script etna.cli, orchestrato da etna.scheduler, esegue un flusso di lavoro automatizzato per il monitoraggio.
Inizializzazione e Finestra Temporale
Carica la configurazione e definisce il periodo di analisi (es. ultimi 7 giorni).
Acquisizione e Calcolo RMS
Per ogni stazione, scarica i file miniSEED e calcola i valori RMS aggregandoli su base oraria.
Generazione Artefatti
Crea il grafico RMS, la mappa di polarizzazione e interroga il modello AI per un'interpretazione testuale.
Creazione Report PDF
Assembla tutti gli artefatti (grafici, tabelle, testo AI) in un unico report PDF completo.
Notifica
Invia il report, i grafici e i dati su Telegram, e infine pulisce i file temporanei.
🔧 Configurazione
La configurazione è gestita tramite variabili d'ambiente (nel file .env) e file di configurazione YAML.
Variabili d'Ambiente Principali
TELEGRAM_BOT_TOKEN: Token del bot Telegram.TELEGRAM_CHAT_ID: ID della chat per le notifiche.OLLAMA_MODEL: Modello LLM da utilizzare (es.qwen3:1.7b).OLLAMA_URL: URL del servizio Ollama.ETNA_CRON: Espressione cron per il report giornaliero (default0 8 * * *).STATIONS_CONFIG: Percorso del file di configurazione delle stazioni (defaultconfig/stations.yaml).ETNA_HOST: Nome di dominio per il servizio API (usato da Nginx e Certbot).
🚧 Roadmap
- ✅ Estendere `etna.cli` con analisi SSAM.
- ✅ Supporto a 3 componenti sismiche con polarizzazione.
- ⏳ Refactoring scientifico del codice con copertura di test.
- ⏳ Integrazione dati infrasonici e flussi di gas (SO₂) (funzioni sperimentali presenti).
- 📋 Creazione dashboard multiparametrica.
- 📋 Correlazione RMS sismico + acustico + geochimico.
- ⏳ Addestramento Autoencoder LSTM per rilevamento anomalie (funzioni sperimentali presenti).
- 📋 Dataset supervisionati per classificazione stati vulcanici.
- ✅ Gestione dataset di classificazione con il comando `etna dataset`.
- 📋 Reti neurali per previsione probabilistica di eventi eruttivi.
📜 Disclaimer
I dati e le interpretazioni forniti da questo script sono intesi per scopo informativo e di monitoraggio personale. Per informazioni ufficiali e allerte sullo stato di attività del Monte Etna, fare sempre riferimento ai bollettini e ai comunicati emessi dall'Istituto Nazionale di Geofisica e Vulcanologia (INGV) - Osservatorio Etneo: www.ct.ingv.it.