Indice
Panoramica del sistema Dashboard Elenco Dispositivi Quota SIM/eSIM (1NCE) Dettaglio Dispositivo Mappa Solar (Pannelli) Fota (Aggiornamento Firmware) On-demand (Comandi remoti) MQTT Routing (Cambio broker) Logs (Eventi) Maintenance (Analisi dispositivo) Widget “Ultimi dispositivi attivi” Chiedi all’AI — Analisi assistita Profilo e Sicurezza Tema Chiaro / Scuro Domande Frequenti Fisheye CalibrationPanoramica del sistema
BT Gateway MQTT V2 è una piattaforma di monitoraggio per dispositivi IoT collegati tramite protocollo MQTT. Il sistema riceve messaggi dai dispositivi, li elabora e li presenta su una interfaccia web sicura (HTTPS).
Funzionalità principali:
- Monitoraggio in tempo reale di tutti i dispositivi registrati
- Visualizzazione su mappa geografica con filtri per ambiente e stato
- Storico messaggi, grafici trasmissioni 24h, dati telemetria e pannello solare
- Gestione foto inviate dai dispositivi
- Notifiche in tempo reale per nuovi dispositivi e allarmi
- Gestione firmware OTA (Fota): elenco, deploy e cancellazione dei firmware disponibili
- Invio comandi remoti On-demand: selezione dispositivo, accodamento comando e monitoraggio stato di polling in tempo reale
- Cambio broker MQTT MQTT Routing: reindirizzamento di un dispositivo tra l’ambiente di Sviluppo e quello di Produzione con verifica preventiva del broker
Dashboard
Cosa mostra
La Dashboard è la pagina iniziale dopo il login. Presenta una panoramica generale del sistema:
- Card riepilogo — Dispositivi totali, messaggi totali, messaggi ricevuti oggi, geolocalizzazioni odierne
- Tabella dispositivi — Elenco con IMEI, ambiente (Produzione/Sviluppo), conteggio messaggi, ultimo messaggio, stato (online ≤ 15 min)
- Mappa — Mini-mappa in basso. Cliccando un dispositivo nella tabella, la mappa lo centra con un'animazione radar
Colonne della tabella
- IMEI — Identificativo univoco del dispositivo
- Ambiente — Produzione o Sviluppo
- Messaggi — Totale messaggi ricevuti dal dispositivo
- Ultimo msg — Data e ora dell'ultimo messaggio ricevuto
- Loc — se il dispositivo ha una posizione GPS nota
- Sun — se ha dati pannello solare
- Foto — se ha inviato foto
- Stato — Online se attivo negli ultimi 15 minuti
- Cell — se ha dati cella telefonica
Elenco Dispositivi
La pagina Dispositivi mostra l'elenco completo di tutti i dispositivi registrati nel sistema.
Colonne tabella
- IMEI — identificativo univoco, cliccabile per aprire il dettaglio
- Quota — icona che apre il pannello SIM/eSIM 1NCE: stato, ICCID, IMSI, MSISDN, indirizzo IP, utilizzo dati con barra di avanzamento, scadenza e throughput massimo
- Ambiente — Produzione o Sviluppo
- Messaggi — totale messaggi ricevuti
- FW — versione firmware rilevata dall'ultimo payload heartbeat (badge blu
v4.1.6; grigioN/Dse non disponibile) - Last — data e ora dell'ultimo messaggio ricevuto
Ordinamento
Ogni intestazione di colonna è cliccabile: il primo click ordina in modo ascendente , il secondo in modo discendente . L'ordinamento avviene sull'intero dataset (non solo sulla pagina corrente).
Filtri
- Cerca IMEI — ricerca testuale istantanea
- Ambiente — Tutti / Sviluppo / Produzione
- Geolocalizzati — filtra per presenza/assenza coordinate GPS
Quota SIM/eSIM (1NCE)
Il gateway utilizza schede eSIM 1NCE con quota dati inclusa. Per ogni dispositivo è possibile consultare in tempo reale lo stato della SIM e il consumo dati direttamente dall’elenco dispositivi.
Come accedere
Nella colonna Quota della tabella dispositivi, clicca l’icona per aprire il pannello SIM del dispositivo.
Sui dispositivi con firmware precedente alla versione 4.1.9 l’icona appare grigia: i dati SIM potrebbero essere incompleti o non disponibili.
Contenuto del pannello
- Stato — badge Attiva oppure Disattiva ricevuto dalla piattaforma 1NCE
- ICCID — identificativo univoco della SIM, mostrato nell’intestazione del pannello
- IMSI — International Mobile Subscriber Identity
- MSISDN — numero di telefono assegnato alla SIM
- IP address — indirizzo IP assegnato all’ultima connessione dati
- Attivazione — data di attivazione della SIM
Utilizzo dati
La barra di avanzamento mostra graficamente quanto della quota totale è già stato consumato:
- Verde — consumo < 70 %
- Giallo — consumo tra 70 % e 90 %
- Rosso — consumo > 90 % (quota quasi esaurita)
Vengono mostrati: MB usati, MB residui, MB totali e la percentuale di utilizzo. Se disponibile viene indicato anche il throughput massimo (Kbps) e la quota SMS residua.
Dettaglio Dispositivo
La pagina di dettaglio di un singolo dispositivo (accessibile cliccando un IMEI) mostra:
- Info generali — IMEI, ambiente, indirizzo, data primo e ultimo messaggio
- Grafico trasmissioni 24h — Istogramma orario dei messaggi ricevuti nelle ultime 24 ore
- Telemetria — Dati sensori: temperatura, umidità, tensione batteria, segnale GSM
- Pannello solare — Tensione/corrente pannello e batteria (se disponibile)
- Mappa posizione — Posizione GPS del dispositivo su mappa
- Foto — Ultima foto ricevuta dal dispositivo (se supportato)
- Ultimi messaggi — Tabella degli ultimi messaggi raw ricevuti
Mappa
La pagina Mappe visualizza tutti i dispositivi con posizione GPS nota su una mappa interattiva.
Filtri disponibili
- Ambiente — Filtra per Tutti, Produzione o Sviluppo
- Allarmi — Switch per evidenziare in rosso i dispositivi in stato di allarme
- Inattivi 7g — Switch per evidenziare in giallo i dispositivi che non inviano dati da più di 7 giorni
Legenda colori marker
- Verde — Dispositivo in Produzione, attivo
- Ciano — Dispositivo in Sviluppo
- Rosso — Dispositivo in stato di allarme
- Giallo — Dispositivo inattivo da 7+ giorni
Suggerimento: Clicca su un marker per vedere il popup con IMEI (link al dettaglio), indirizzo e data ultimo messaggio.
Solar — Pannelli fotovoltaici
La pagina Solar raccoglie i pacchetti di statistiche solari (formato SSv2) inviati dai dispositivi e ne fornisce una vista device-first: pacchetti grezzi, riepilogo per dispositivo, calendario di attività, energia giornaliera ed export CSV.
Due schede principali: Pacchetti (lista grezza) e Device (vista per dispositivo).
Tab Pacchetti
Lista paginata dei pacchetti ricevuti, decodificati e archiviati nel database.
Filtri
- IMEI — supporta più valori separati da virgola, spazio o punto-e-virgola. Ogni IMEI inserito appare come chip sotto al campo, con pulsante × per rimuoverlo singolarmente. La lista dei suggerimenti (datalist) viene popolata automaticamente con tutti gli IMEI noti.
- Da / A — intervallo di date di ricezione
- Preset rapidi — pulsanti
1g,7g,30g,M(mese corrente) impostano automaticamente Da/A - Formato — SSv2 / SSv1 / Sconosciuto
- Stato — Decodificati / Errore
- Pulsante azzera tutti i filtri
Colonne
- Ricevuto — data/ora di arrivo del pacchetto al gateway
- Giorno — giorno coperto dalle statistiche (formato lungo, locale italiano)
- IMEI — identificativo del dispositivo
- Formato / Status / Samples / Size
- Azioni — apre il dettaglio decodificato e i 4 grafici (temperatura, tensione, corrente, RSSI); scarica il blob LZ4 originale
Toolbar
- Export CSV — esporta in CSV tutta la lista filtrata (no paginazione). UTF-8 con BOM per Excel
- Re-indicizza — ri-scansiona la cartella di lavoro e gli archivi
.pkts.gz
Tab Device — Card con KPI
Per ciascun dispositivo viene mostrata una card riepilogativa con:
- IMEI e tempo dall'ultimo upload — verde se < 24h, rosso se > 7g
- Pacchetti totali · Giorni con dati · Samples totali
- Sparkline (linea+area) dei pacchetti/giorno negli ultimi 30 giorni
- Azioni: Calendario, Energia, Pacchetti (apre la lista grezza filtrata per quel device)
In alto a destra, il toggle / consente di passare dalla vista a card alla tabella compatta.
Calendario — Heatmap stile GitHub
Cliccando Calendario su una card, si apre un pannello con:
- Selettore range: 30 / 60 / 90 (default) / 180 / 365 giorni
- Griglia: colonne = settimane (Lun → Dom), righe = giorni della settimana, etichette dei mesi sopra
- Colore della cella proporzionale al numero di samples del giorno (5 livelli + vuoto). Tooltip con data, pacchetti e samples
- La cella di oggi è evidenziata da un bordo blu
- Click su una cella → apre la tab Pacchetti filtrata per quell'IMEI e quel giorno
- Riquadro KPI sopra la griglia: Giorni con dati / range, Pacchetti totali, Media pacchetti/giorno, Picco con data
- Pulsante per chiudere il pannello
Tab Settimana
Grafico panoramico settimanale per un singolo IMEI, con navigazione per settimana e dettaglio giornaliero.
- Seleziona un IMEI dal menu a tendina in alto
- Naviga tra le settimane con i pulsanti /
- Il grafico mostra le curve di energia (Wh) per ciascun giorno della settimana, sovrapposto su una stessa scala oraria
- Clicca su una curva o sul giorno nella legenda per isolarla
- Sotto al grafico, una tabella KPI riepiloga i dati giorno per giorno (samples, picco, energia)
- Clicca su una riga della tabella KPI per espandere i 4 grafici di dettaglio (Temperatura, Tensione, Corrente, RSSI) per quel giorno
Energia giornaliera (SSv2)
Cliccando Energia su una card, si apre un grafico a barre dell'energia prodotta giorno per giorno (Wh), estratta dall'header SSv2 (energy_mWh). Quando ci sono più pacchetti per lo stesso giorno viene tenuto il valore massimo (totale running di fine giornata).
- Range:
7g/30g(default) /90g/1a - Tooltip multilinea: Energia (Wh), Picco (W), Ora picco (HH:MM)
- Riepilogo: totale, media/giorno, picco con data
- Export CSV del range corrente (
sample_date, energy_wh, peak_w, peak_time_min, peak_time_hhmm, packets)
Dettaglio pacchetto
L'icona nella tabella Pacchetti apre una finestra modale con:
- Header decodificato (data, energia, picco, n. samples)
- Tabella samples (ora, V bus, mA, V pannello, T °C, RSSI, batteria)
- 4 grafici 2×2: Temperatura, Tensione, Corrente, RSSI
- Hex dump del payload decompresso e bottoni di download
Fota — Firmware Over-The-Air
La pagina Fota mostra i firmware disponibili sul server per l'aggiornamento OTA dei dispositivi.
Card firmware
Ogni firmware disponibile viene mostrato come card con:
- Versione — numero versione (es.
v4.1.6) - Nome file — file
.signed.binda inviare al dispositivo - Descrizione e Note — dal file metadati
.zip_manifest.json - Badge — dimensione, target hardware, board, firma digitale (Signed)
- SDK, Commit, Build date, Autore
Azioni
- Deploy — non ancora disponibile.
- Elimina — disponibile solo per gli amministratori; richiede conferma e rimuove dal server sia il file
.binsia il relativo.zip_manifest.json
Gli utenti non-admin vedono il pulsante Elimina disabilitato con il tooltip "Solo admin".
On-demand — Comandi remoti
La pagina On-demand consente di inviare comandi remoti ai dispositivi che supportano il polling HTTP (firmware ≥ 4.1.9). La lista viene filtrata automaticamente per mostrare solo i dispositivi idonei.
Ricerca e filtri
- Barra di ricerca — filtra i dispositivi per IMEI in tempo reale
- Solo i dispositivi con firmware ≥
4.1.9compaiono nella lista - Paginazione automatica: 10 dispositivi per pagina
- Aggiornamento automatico ogni 20 secondi
Colonne della tabella
- IMEI — identificativo del dispositivo
- Ambiente — Produzione / Sviluppo
- Firmware — versione installata sul dispositivo
- Cap. — capacità batteria (se disponibile)
- Live — verde se l’ultima poll HTTP è avvenuta entro gap + 1 minuto (es. con gap 5 min → soglia 6 min); grigio se il device è fuori finestra o inattivo. La soglia si adatta automaticamente al gap configurato per ogni device.
- Cmd — comando attualmente in coda per il dispositivo (
none= nessun comando pendente) - Request — numero di poll HTTP ricevute dal dispositivo oggi
- Last Poll — data e ora dell’ultima poll HTTP ricevuta
Selezione del dispositivo
Clicca sulla riga del dispositivo per aprire il pannello comandi. Il pannello mostra lo stato del dispositivo e le sezioni di configurazione descritte di seguito.
Finestra Poll HTTP
Definisce l’intervallo orario in cui il device esegue il polling HTTP verso il server.
- Start / Stop — ora di inizio e fine della finestra (es. 07:00 – 20:00). Fuori da questo intervallo il device non effettua poll, risparmiando batteria e quota eSIM.
- Gap — minuti tra una poll e la successiva all’interno della finestra (min 5 min, max 1440 min).
Comando inviato al firmware: set_poll_window|HH|HH|GAP. Richiede ruolo Operatore o Amministratore.
Heartbeat MQTT — Intervallo invio
Imposta ogni quanti minuti il device invia il pacchetto heartbeat MQTT al server.
- Step disponibili: 30 min → 45 → 1 h, poi ogni 30 min fino a 24 h, poi ogni giorno fino a 7 giorni.
- Default: 30 min. Massimo: 10080 min (7 giorni).
Comando inviato al firmware: poll_set_hb_min|N. Richiede ruolo Operatore o Amministratore.
Invio MQTT immediato
Ordina al device di eseguire subito un invio MQTT senza attendere il prossimo heartbeat. Opzionalmente include uno scatto fotografico.
- Nessun grab — invio heartbeat senza fotografia.
- CAM0 / CAM1 — scatta e allega la foto dalla camera selezionata prima dell’invio.
- DUAL CAM — scatta da entrambe le camere (CAM0 + CAM1) e le include nell’invio.
Comando inviato al firmware: send_now|none, send_now|cam0, send_now|cam1 o send_now|dual. Richiede ruolo Operatore o Amministratore.
Modalità di lavoro CAM
Imposta la modalità di acquisizione delle camere.
- Dual Cam — il device acquisisce da entrambe le camere (CAM0 + CAM1) ad ogni scatto. Firmware:
set_dual_cam|1. Default attivo. - Singola Cam — il device acquisisce da CAM0 solamente. Firmware:
set_dual_cam|0.
Richiede ruolo Operatore o Amministratore.
Comandi generali
Comandi operativi inviati al device al prossimo ciclo di poll HTTP. Disponibili solo se il device ha effettuato almeno un poll e l’ora corrente è all’interno della finestra poll configurata.
- Apri Serratura — invia il comando di apertura serratura. Firmware:
poll_open_lock. - Chiudi Serratura — invia il comando di chiusura serratura. Firmware:
poll_close_lock. - Calibra Angolo — avvia la procedura di calibrazione del sensore angolo. Firmware:
poll_calibrate_angle. - Riavvia device — forza il riavvio del dispositivo remoto. Firmware:
poll_reboot. Usare con cautela.
Richiede ruolo Operatore o Amministratore. I comandi hanno un TTL di 15 minuti: se il device non esegue il poll entro tale limite il comando viene scartato automaticamente.
Barra di stato comando pendente
- Appare sotto il pannello non appena un comando viene accodato.
- Mostra il countdown al prossimo poll HTTP stimato e il testo del comando in attesa.
- Annulla — invia
noneper cancellare il comando prima che il device lo riceva. - Dopo 8 minuti senza risposta la barra torna automaticamente in stato Idle (il TTL di 15 min lato server rimane attivo).
MQTT Routing — Cambio broker
La pagina MQTT Routing consente di reindirizzare un dispositivo verso un diverso broker MQTT (Sviluppo ↔ Produzione). Il cambio viene applicato al prossimo ciclo di polling HTTP del dispositivo.
Visibile nel menu laterale per ruolo Operatore e Amministratore.
Elenco dispositivi
- IMEI — identificativo del dispositivo.
- Ambiente — badge colorato con l’ambiente MQTT attuale del dispositivo: Sviluppo o Produzione.
- Firmware — versione installata.
- Ultimo HB — data e ora dell’ultimo heartbeat MQTT ricevuto.
La lista si aggiorna automaticamente ogni 30 secondi e mostra solo i dispositivi che hanno inviato almeno un heartbeat.
Pannello di routing
Cliccando su un dispositivo si apre il pannello laterale con le informazioni e le opzioni di cambio broker.
- Badge ambiente corrente — mostra l’ambiente MQTT su cui il dispositivo è attualmente connesso (dalla lettura dell’ultimo heartbeat).
- Radio “Sviluppo” / “Produzione” — seleziona l’ambiente di destinazione. Il radio viene pre-selezionato automaticamente sull’ambiente opposto a quello corrente, in modo da facilitare il cambio.
Invio del comando di routing
Premendo Invia comando si apre un pannello di stato che esegue in sequenza:
- Contatto Endpoint — verifica la raggiungibilità del broker MQTT di destinazione.
- Verifica porta — controlla che la porta TCP sia aperta.
- Controllo credenziali — testa l’autenticazione MQTT (CONNECT → CONNACK).
- Se il test fallisce: viene mostrato il messaggio di errore e il comando non viene inviato.
- Se il test ha successo: il comando di routing viene accodato per il dispositivo e la pagina reindirizza automaticamente a On-demand per monitorare la consegna al prossimo poll HTTP.
Richiede ruolo Operatore o Amministratore. Il comando viene consegnato al dispositivo al prossimo ciclo di polling HTTP (TTL 15 minuti).
Note operative
- Il test del broker viene eseguito lato server (non dal browser): anche se il gateway è in una rete privata, il test è sempre affidabile.
- Il badge ambiente nella lista riflette l’ultimo heartbeat ricevuto, non il comando accodato: potrebbe non aggiornarsi immediatamente dopo l’invio.
- Se il dispositivo è fuori dalla finestra di polling, il comando resterà in coda fino al prossimo poll o fino allo scadere del TTL (15 minuti).
Logs — Eventi applicativi
La pagina Logs mostra il log degli eventi del sistema (tabella event_log): operazioni di archivio, decodifica, errori e attività MQTT. Sopra la tabella sono presenti 4 card di metriche aggregate dal database.
Card di riepilogo
- Heartbeat (DB) — pacchetti heartbeat totali, con incremento + ultime 24h
- Solar (DB) — pacchetti solar totali, con incremento + ultime 24h
- Ultimo ricevuto — timestamp dell'ultimo pacchetto registrato
- Live (sessione) — eventi arrivati durante la sessione corrente del browser
Le metriche DB si aggiornano automaticamente ogni 30 secondi.
Filtri
- Tipo (
kind) — Solar, Heartbeat/Alarm, MQTT, Poll HTTP - Livello — Info / Warn / Error
- IMEI — filtro esatto sul dispositivo
- Action — nome dell'azione (es.
indexed,archive_error,publish...) - Switch auto — ricarica la lista automaticamente
Toolbar
- Ricarica — aggiorna immediatamente la tabella
- Export CSV — esporta tutti gli eventi che corrispondono ai filtri attuali (no paginazione). UTF-8 con BOM, RFC 4180. Nome file
events_<timestamp>.csv - Cancella — elimina dal database tutti gli eventi che corrispondono ai filtri attuali. Mostra una finestra di conferma con il conteggio totale prima di procedere. Operazione irreversibile.
Colonne della tabella
- Quando — timestamp dell'evento
- Livello — badge Info/Warn/Error
- Tipo — badge colorato per categoria
- Azione — nome dell'evento (es.
indexed,publish,archive_error) - IMEI — dispositivo coinvolto (se applicabile)
- Dettagli — payload JSON dell'evento (filename, dimensioni, errore, ecc.)
Profilo e Sicurezza
Dalla pagina Profilo (accessibile cliccando sul tuo nome nella sidebar) puoi:
- Modificare il nome completo e l'email
- Cambiare la password — Inserisci la password attuale e la nuova password (minimo 8 caratteri)
Recupero credenziali
- Password dimenticata — Dalla pagina di login, clicca "Password dimenticata". Riceverai un'email con un link per reimpostarla
- Username dimenticato — Dalla pagina di login, clicca "Username dimenticato". Inserisci la tua email e riceverai lo username
Sessione e timeout automatico
La sessione di accesso ha una durata di inattività di 30 minuti. Il timer si azzera ad ogni operazione eseguita nel browser (caricamento pagina, ricerca, aggiornamento dati).
- Se non esegui alcuna azione per 30 minuti consecutivi, verrai reindirizzato automaticamente alla pagina di login.
- Qualsiasi dato non salvato (es. comandi non confermati, modifiche in corso) andrà perso allo scadere della sessione.
- Per sicurezza usa il pulsante Esci nella sidebar prima di lasciare il dispositivo incustodito.
Disattivazione account per mancato utilizzo
Gli account che non vengono mai utilizzati dopo la registrazione sono soggetti a disattivazione automatica:
- Dopo 89 giorni senza alcun accesso dall’attivazione, riceverai un’email di avviso che ti comunica che l’account verrà disattivato entro 24 ore.
- Se non effettui il login entro le successive 24 ore, l’account viene disattivato automaticamente e gli amministratori ne vengono notificati.
- Un account disattivato non consente l’accesso: contatta un amministratore per la riattivazione.
Questa regola si applica solo agli account che non hanno mai effettuato un login dall’attivazione. Gli utenti già attivi non sono soggetti a questo meccanismo.
Tema Chiaro / Scuro
Puoi passare dal tema scuro al tema chiaro (e viceversa) cliccando il pulsante nella parte inferiore della sidebar.
La preferenza viene salvata nel browser e mantenuta tra le sessioni.
Fisheye Calibration — Guida alla de-wrappazione
Cos’è la de-wrappazione fisheye?
Le lenti fisheye catturano un campo visivo molto ampio (fino a 220°) ma deformano l’immagine in modo radiale: le linee rette diventano curve, gli oggetti ai bordi appaiono “gonfiati”. La de-wrappazione (dewarp) esegue il processo inverso: converte l’immagine distorta in una vista rettilineare normale, come la percepirebbe un occhio umano.
Il sistema utilizza FFmpeg con il filtro v360=input=fisheye:output=flat. Questa pagina consente di regolare visivamente tutti i parametri e salvarli sul server affinché vengano applicati automaticamente a ogni elaborazione successiva.
Quando calibrare
- Al primo montaggio della camera
- Dopo aver spostato o ruotato fisicamente la camera
- Se nell’immagine de-wrappata le linee dritte appaiono storte o curve
- Se l’immagine mostra bordi neri o una zona centrale “bucata”
Procedura passo-passo
- Aprire la pagina Fisheye Calibration dal menu laterale
- Selezionare l’immagine Scacchiera come sorgente di test (le linee ortogonali permettono di valutare immediatamente la distorsione residua)
- Cliccare Applica dewarp per visualizzare il risultato con i parametri attuali
- Regolare i parametri nell’ordine consigliato: prima Crop, poi FOV ingresso, poi Orientamento, infine FOV uscita
- Dopo ogni modifica cliccare Applica dewarp (oppure attivare Auto-refresh per aggiornamento automatico)
- Quando il risultato è soddisfacente — linee dritte, niente bordi neri, orizzonte orizzontale — cliccare Salva
- Tornare alla scena reale selezionando Fisheye (default) e verificare il risultato finale
Attiva Auto-refresh per vedere il risultato aggiornarsi in tempo reale mentre sposti gli slider.
Gruppo 1 — Crop cerchio fisheye
Questi tre parametri dicono al sistema dove si trova il cerchio fisheye all’interno del fotogramma grezzo e quanto è grande. È il punto di partenza: se il crop è sbagliato, tutto il resto sarà storto indipendentemente dagli altri parametri.
-
crop_cx — coordinata X (orizzontale) del centro del cerchio, in pixel.
Default: 320. Range: 50–2000. Se il cerchio è spostato a destra nel fotogramma grezzo, aumentare questo valore. Spostato a sinistra → ridurre. -
crop_cy — coordinata Y (verticale) del centro del cerchio, in pixel.
Default: 240. Range: 50–2000. Se il cerchio è più in basso rispetto al centro, aumentare. Più in alto → ridurre. -
crop_r — raggio del cerchio fisheye, in pixel.
Default: 234. Range: 50–1000. Deve corrispondere esattamente al bordo visibile dell’immagine circolare. Troppo piccolo → immagine “bucata”. Troppo grande → bordi neri.
Come trovare i valori esatti: aprire il fotogramma grezzo in un editor di immagini (GIMP, Paint.NET, ecc.), portare il cursore al centro visivo del cerchio e leggere le coordinate X/Y. Poi misurare la distanza dal centro al bordo del cerchio per ottenere il raggio.
Gruppo 2 — FOV obiettivo fisheye (ingresso)
Descrivono le caratteristiche ottiche fisiche della lente montata sulla camera. Il FOV (Field of View = campo visivo) è l’angolo totale che la lente può “vedere”. Modificare questi valori solo se si conosce con certezza le specifiche della lente usata.
-
input_h_fov — campo visivo orizzontale della lente, in gradi.
Default: 185°. Range: 100–280°. Per lenti fisheye circolari simmetriche tipicamente 185–220°. -
input_v_fov — campo visivo verticale della lente, in gradi.
Default: 185°. Di norma uguale all’orizzontale per lenti fisheye circolari simmetriche.
Se si impostano valori errati l’immagine uscente risulterà “schiacciata” o “allungata” lungo un asse. In caso di dubbio lasciare i valori di default (185°/185°).
Gruppo 3 — FOV vista rettilineare (uscita)
Definiscono quanta porzione della scena de-wrappata viene inclusa nell’immagine finale. Più alto è il valore, più ampia è la vista (effetto “grandangolo”); più basso, più l’immagine è simile a un obiettivo normale con meno distorsione residua.
-
output_h_fov — ampiezza orizzontale della vista finale, in gradi.
Default: 115°. Range: 30–180°. Preset comuni: 90° (normale), 105°, 115° (default), 120° (grandangolo). Aumentare per “allargare” la scena, ridurre per “zoomare”. -
output_v_fov — ampiezza verticale della vista finale, in gradi.
Default: 86°. Range: 20–180°. Preset comuni: 78°, 86° (default), 90°. Di norma si mantiene proporzionale all’output_h_fov (circa rapporto 4:3).
Gruppo 4 — Orientamento camera
Correggono l’inclinazione fisica della camera. Se la camera è montata perfettamente dritta e non ruotata, tutti questi valori rimangono a 0. Modificarli solo per compensare un montaggio non ideale.
-
pitch — inclinazione su/giù (testa in su / in giù), in gradi.
Default: 0°. Range: −180° → +180°. Positivo = camera inclina verso l’alto. Negativo = verso il basso. Usare se l’orizzonte nell’immagine de-wrappata appare troppo in alto o troppo in basso. -
yaw — rotazione sinistra/destra (come scuotere la testa di lato), in gradi.
Default: 0°. Range: −180° → +180°. Positivo = ruota a destra. Negativo = a sinistra. Usare se la scena risulta ruotata orizzontalmente. -
roll — rotazione sul proprio asse (come inclinare la testa sulla spalla), in gradi.
Default: 0°. Range: −180° → +180°. Usare se l’orizzonte appare storto nell’immagine de-wrappata (non piatto). È il parametro più frequentemente necessario quando la camera non è montata perfettamente in piano. -
h_flip — specchio orizzontale (inverte sinistra/destra).
Attivare se la camera è montata con uno specchio o se l’immagine appare ribaltata orizzontalmente. -
v_flip — specchio verticale (inverte sopra/sotto).
Attivare se la camera è montata capovolta o se l’immagine appare ribaltata verticalmente.
Gruppo 5 — Dimensioni output
Definiscono la risoluzione dell’immagine de-wrappata finale generata da FFmpeg.
-
output_w — larghezza dell’immagine finale, in pixel.
Default: 640 px. Range: 320–1920 px (multipli di 16). Aumentare per avere più dettaglio nell’immagine risultante, a scapito del tempo di elaborazione. -
output_h — altezza dell’immagine finale, in pixel.
Default: 480 px. Range: 240–1440 px (multipli di 16). Tipici rapporti: 640×480 (4:3), 640×360 (16:9).
Pulsanti della pagina
- Fisheye (default) — carica l’immagine fisheye reale della camera come sorgente per la calibrazione.
- Scacchiera — carica un’immagine a scacchiera sintetica. Le righe e colonne della griglia devono risultare perfettamente dritte dopo il dewarp: è lo strumento più efficace per valutare la qualità della calibrazione geometrica.
- Applica dewarp — esegue la conversione fisheye → rettilineare con i parametri correnti e mostra il risultato a fianco dell’originale.
- Auto-refresh — quando attivo, il dewarp viene ricalcolato automaticamente ogni volta che si modifica uno slider, senza dover cliccare “Applica”. Utile per regolazioni fini; disattivare su connessioni lente.
- Salva — invia i parametri correnti al server. Da questo momento vengono usati per elaborare tutte le immagini fisheye ricevute dai dispositivi.
- Reset defaults — ripristina tutti gli slider ai valori di fabbrica (chiede conferma prima di procedere).
Consigli pratici & risoluzione problemi
- Inizia sempre dalla scacchiera: le linee ortogonali rendono immediatamente visibile qualsiasi distorsione residua.
- Ordine di calibrazione consigliato:
crop_cx/crop_cy/crop_r→input_h/v_fov→pitch/yaw/roll→output_h/v_fov. - Immagine “bucata” al centro:
crop_rè troppo piccolo → aumentarlo. - Bordi neri nell’immagine uscente:
crop_rè troppo grande, oppureoutput_h/v_fovè troppo ampio → ridurre uno dei due. - Orizzonte storto: correggere
roll. Se anche inclinato, correggere anchepitch. - Immagine schiacciata/allungata: verificare
input_h_foveinput_v_fov; devono corrispondere alle specifiche della lente. - Linee dritte ma scena troppo stretta/larga: regolare
output_h_foveoutput_v_fov. - Tutto appare specchiato: attivare
h_flipov_flipsecondo necessità.
Maintenance — Analisi dispositivo
La pagina Maintenance permette un'analisi diagnostica approfondita di un singolo dispositivo. Si seleziona l'IMEI, un intervallo di date e si clicca Analizza: il sistema carica fino a 500 record di log firmware e tutti i comandi registrati per quell'IMEI.
La pagina è organizzata in 6 tab:
Widget “Ultimi dispositivi attivi”
In cima alla pagina, sopra il selettore IMEI, è presente la card Ultimi 10 dispositivi attivi fw ≥ 4.1.9: mostra i 10 dispositivi che hanno inviato più di recente un pacchetto heartbeat con firmware idoneo.
- IMEI — cliccabile: popola automaticamente il campo IMEI nel selettore sottostante
- FW — versione firmware rilevata nell’ultimo heartbeat (badge blu)
- Ultimo HB — data e ora del pacchetto più recente
La lista viene aggiornata ad ogni caricamento della pagina. Vengono mostrati solo i dispositivi con firmware ≥ 4.1.9 che supportano il polling HTTP.
KPI — metriche istantanee
Subito sotto il selettore IMEI sono visibili 5 card di sintesi:
- Tot. eventi — numero di record firmware nel periodo selezionato
- Reboot/Reset — eventi di riavvio (soglie: ≥2 giallo, ≥5 rosso)
- Errori — eventi di errore/fault (soglie: ≥3 giallo, ≥10 rosso)
- Silenzio max — intervallo massimo senza eventi in ore (soglie: ≥3h giallo, ≥6h rosso)
- Comandi — totale comandi inviati al dispositivo (visibile solo a Operator/Admin)
- Health Score — punteggio 0–100 calcolato da reboot, errori, batteria critica, MQTT fail rate e silenzio; verde ≥70, giallo ≥40, rosso <40
Tab 1 — Firmware Events
Analisi degli eventi firmware registrati nel periodo:
- Bar chart — top 15 codici evento per frequenza
- Donut chart — distribuzione per categoria (Boot, Modem, MQTT, Camera…)
- Daily chart — eventi totali per giorno nel range selezionato
- Badge anomalie — rilevamento automatico di condizioni critiche (reboot multipli, batteria critica, flash repair, MQTT fail rate, SIM error, silenzi, camera fail, modem fail)
- Tabella — lista paginata (50 per pagina) con filtro per categoria, codice evento e testo; ogni riga mostra seq, timestamp device, codice, badge evento, descrizione, timestamp ricezione
- Export CSV — esporta i record filtrati con BOM UTF-8 per Excel
Tab 2 — Timeline
Vista cronologica unificata che mescola eventi firmware e comandi inviati ordinati per timestamp decrescente. I comandi vengono filtrati in base all'intervallo date selezionato.
- Contatori in testa: N eventi firmware, N comandi nel periodo, visibili / totali
- Ogni riga mostra: punto colorato (blu=boot/FW, rosso=errore, giallo=comando), timestamp, badge tipo, testo breve, extra info (codice+seq per FW; utente+ruolo per comandi)
- Badge Sost. se il comando è stato sostituito prima dell'invio; Canc. se cancellato
- Pulsante Carica altri per paginazione progressiva (100 elementi per volta)
I comandi sono visibili solo agli utenti con ruolo Operator o Administrator.
Tab 3 — Comandi
Storico di tutti i comandi inviati all'IMEI selezionato (max 100 record, senza filtro data):
- KPI Totale comandi — numero totale nel database per quell'IMEI
- Bar chart orizzontale — frequenza per tipo di comando (top 12); il tipo viene estratto dalla stringa MQTT (es.
Motor:Open,Config:Set) - Tabella — timestamp, IMEI, comando completo (in monospace), username, ruolo, stato (OK / Sostituito / Cancellato)
Visibile solo agli utenti con ruolo Operator o Administrator.
Tab 4 — Anomalie
Analisi focalizzata sugli eventi di errore e fault nel periodo selezionato:
- Health Score giornaliero — line chart con un punto per ogni giorno; il colore del punto riflette il livello di salute di quel giorno (verde ≥70, giallo ≥40, rosso <40). Formula: base 100 −5/reboot −3/errore per giorno.
- Heatmap calendario — griglia di celle (una per giorno) colorate in 4 livelli: 0 basso medio alto . Hover sulla cella per data e conteggio anomalie.
- Tabella per tipo — raggruppa gli eventi di errore per codice evento; ordinata per numero di occorrenze decrescente; mostra prima e ultima occorrenza; colonna Severità: Critica (codici gravi o ≥5 occ.), Attenzione (≥2 occ.), Bassa.
Tab 5 — Fleet Health
Vista aggregata su tutti i dispositivi della flotta, indipendente dall'IMEI selezionato. I dati vengono caricati manualmente cliccando Carica dati fleet.
- Window temporale — pulsanti
7g/14g/30gper il periodo di analisi - KPI — dispositivi attivi nel periodo, Health Score medio, contatori Critici (score <40) e Warning (score 40–69)
- Bar chart — top 12 dispositivi per numero di errori (barre colorate verde/giallo/rosso in base allo score); tooltip mostra errori e score
- Tabella — tutti i dispositivi ordinati per score crescente (peggiori in cima); colonne: IMEI, Env, Health Score badge, Events, Errori, Reboot, Batt.crit, MQTT fail, Ultimo evento
Analisi AI — Diagnostica dispositivo
Nel selettore in cima alla pagina, accanto al pulsante Analizza, è presente il pulsante (bordo giallo). Si abilita automaticamente appena si digita un IMEI; è disabilitato se il campo è vuoto.
Cliccandolo si apre un pannello modale con diagnostica automatica calcolata in tempo reale sui log già caricati. Il pannello è suddiviso in sezioni:
- Barra periodo — date from/to selezionate e contatore record.
- Stato log — tre scenari: nessun log (alert rosso), log datati >2 h (alert giallo), log aggiornati (badge verde). In caso di log assenti o vecchi compare il pulsante Richiedi log adesso & vai a On-demand che invia il comando
poll_get_logsal dispositivo e reindirizza automaticamente alla pagina On-demand. - Riepilogo periodo — griglia con record totali, giorni nel range, eventi/giorno (media), tipi evento distinti; più una riga sintetica con primo/ultimo log, evento più frequente, contatori reboot ed errori colorati per livello di severità.
- Catene pre-reboot — per ogni evento di reboot/reset rilevato mostra i 5 eventi immediatamente precedenti in ordine cronologico inverso (numerazione sequenza inclusa). Permette di ricostruire la causa di ogni riavvio (es. MQTT Fail → Conn Fail → Modem Fail → Reboot). La sezione si apre automaticamente se esistono reboot nel periodo.
-
Lacune di sequenza — analizza il campo
seqdi ogni record e segnala i salti numerici che indicano log non trasmessi (persi nella memoria flash del dispositivo). Per ogni lacuna: numeri seq di inizio/fine, record mancanti stimati, timestamp dell'ultimo record prima del gap. - Picchi di attività oraria — raggruppa gli eventi per ora e individua le finestre temporali con densità > media + 2σ. Ogni picco riporta il numero di eventi e il rapporto rispetto alla media oraria (es. “45 eventi in 14:xx — 8× la norma”).
- Aggiornamenti firmware (FOTA/DFU) — lista cronologica di tutti gli eventi FOTA/DFU nel periodo (Start, DL OK, Install, Fail, Cancel) con timestamp e descrizione. Gli eventi di fallimento sono evidenziati in rosso.
- Distribuzione per categoria — barre proporzionali per categoria di evento (Boot/Reset, MQTT, Modem/Rete, Batteria, Camera…) con conteggio e percentuale.
Tutta la diagnostica locale è calcolata client-side sui dati già caricati con Analizza — nessuna chiamata API aggiuntiva. Disponibile per tutti i ruoli.
Chiedi all’AI — Analisi assistita
All’interno del pannello diagnostica (in fondo, dopo la distribuzione per categoria) è presente il pulsante Chiedi all’AI. Invia un riepilogo strutturato dei log già caricati al servizio AI interno, che restituisce una valutazione diagnostica in linguaggio naturale italiano.
- Dati inviati all’AI — totale record, reboot, lacune di sequenza, esito FOTA, categorie eventi, ultimi errori e picchi di attività. Nessun dato personale è incluso.
- Risposta — testo libero in italiano con valutazione dello stato di salute del dispositivo, possibili cause anomalie e suggerimenti operativi.
- Servizio AI non disponibile — se il servizio AI non è raggiungibile viene mostrato un messaggio di errore generico; riprovare più tardi.
- Tempo di risposta — tipicamente 10–30 secondi in base al carico del servizio. Durante l’attesa compare uno spinner; il pulsante è disabilitato per evitare richieste duplicate.
La funzione richiede autenticazione attiva (sessione valida). L’elaborazione avviene interamente in locale — nessun dato viene inviato a servizi cloud esterni.
Domande Frequenti
Un dispositivo risulta "Offline" ma dovrebbe essere attivo?
Lo stato "Online" si basa sulla ricezione di messaggi negli ultimi 15 minuti. Se il dispositivo ha problemi di rete o è in modalità risparmio energetico, potrebbe risultare offline anche se funzionante.
Non vedo un dispositivo sulla mappa
Solo i dispositivi con coordinate GPS valide vengono mostrati sulla mappa. Se il dispositivo non ha ancora inviato dati di posizione, non apparirà. Verifica dal dettaglio dispositivo se la geolocalizzazione è presente.
Come faccio a sapere se c'è un allarme?
Gli allarmi vengono indicati nella mappa (marker rosso) e nel popup del dispositivo. Attiva lo switch "Allarmi" nella pagina Mappe per evidenziarli.
Cosa significa "Inattivo 7g"?
Un dispositivo è considerato inattivo se non ha inviato alcun messaggio negli ultimi 7 giorni. Questo può indicare un problema hardware, batteria scarica o disconnessione dalla rete.
Vengo reindirizzato al login senza aver fatto nulla
La sessione scade automaticamente dopo 30 minuti di inattività. Ogni azione sul sito (cambio pagina, ricerca, aggiornamento dati) azzera il timer. Se la sessione è scaduta, effettua nuovamente il login: i tuoi dati e configurazioni sono al sicuro sul server.
Come contatto il supporto?
Per assistenza tecnica scrivi a m.silvio@btengineering.it