Agente Linux — Funzionamento
Servizio systemd
L'agente gira come kiosk-browser.service. Si avvia automaticamente sulla VT7 all'accensione del sistema, con Restart=on-failure.
| Operazione | Comando |
|---|---|
| Vedere lo stato | systemctl status kiosk-browser |
| Log in tempo reale | journalctl -u kiosk-browser -f |
| Log dell'app | tail -f /tmp/kiosk.log |
| Riavviare | systemctl restart kiosk-browser |
| Arrestare | systemctl stop kiosk-browser |
| Vedere il browser | chvt 7 |
Heartbeat e integrazione con RDS
- Heartbeat ogni 60 secondi: l'agente si registra come dispositivo Linux e invia il proprio stato.
- GPS / info del dispositivo ogni 5 minuti (include lat/lon, uptime, distribuzione e versione lette da
/etc/os-release, modello hardware DMI). - Caricamento dei log a ogni heartbeat — disponibili nel pannello: Dispositivi → Azioni → Logs.
- Configurazione remota: a ogni heartbeat l'agente riceve dal pannello la modalità (Web/Playlist), l'URL iniziale, l'allowlist e il passcode aggiornati.
- Screenshot remoti: se il pannello richiede un'acquisizione da Azioni → Screenshot, l'agente lancia
scrotsu$DISPLAY=:0, comprime in JPEG (qualità 70) e carica l'immagine firmata con HMAC v2. Dettaglio.
Geolocalizzazione (GPS + IP)
L'agente comunica la posizione attraverso due vie, in quest'ordine:
- gpsd locale (
127.0.0.1:2947) — se ha un modulo GPS collegato (USB seriale / NMEA) egpsd.socketè attivo (l'installer lo lascia abilitato), l'agente legge l'ultimo fix conmode ≥ 2(2D / 3D). - Geolocalizzazione via IP — fallback automatico. Interroga
https://ipwho.is/e mantiene il risultato in cache in memoria per 1 ora; sufficiente per un kiosk che non si sposta.
Se entrambe le vie falliscono, invia 0,0 e RDS lo interpreta come "nessun fix" (non sovrascrive l'ultimo valore valido).
Collegare un GPS USB
gpsd è preinstallato con USBAUTO=true: colleghi il ricevitore, non serve altro — la lettura successiva di gpsd restituirà un fix non appena il ricevitore avrà segnale.
Supporto dei touch screen
Abilitato di serie su qualsiasi pannello riconosciuto da libinput come dispositivo touch:
- Il browser integrato riceve eventi
TouchEventreali invece del mouse emulato (flag Chromium--touch-events=enabled --enable-pinchinrun.sh). - Pinch-to-zoom funzionante.
- L'hot-corner delle Settings (5 tocchi nell'angolo in alto a sinistra in 2 s) accetta
TouchBeginoltre alla pressione del mouse. - Tastiera a schermo: la finestra Impostazioni avvia automaticamente
onboardall'apertura e lo chiude alla chiusura della finestra. Può configurare l'agente anche senza tastiera fisica.
Modalità Web Kiosk
Avvia il browser su un URL configurabile con:
- Navigazione basata su allowlist — si caricano solo i domini consentiti; il resto viene reindirizzato all'URL iniziale.
- Pulsanti flottanti Back, Reload e Home nell'angolo in basso a sinistra.
- Blocca l'apertura di nuove schede/finestre — tutti i link si aprono nella stessa vista.
Modalità Playlist
Riproduce lo slideshow di video/immagini gestito dal pannello web.
- I file vengono scaricati automaticamente sul disco locale.
- Verifica CRC32 prima di contrassegnare un file come scaricato.
- Riproduce dalla cache locale subito dopo il riavvio — non serve la connessione al server per iniziare.
- Schermo intero, edge-to-edge — senza barra di stato né pulsanti.
- Si adatta automaticamente a qualsiasi risoluzione (SD, FHD, 4K) senza riavvio.
Log
I log dell'agente vengono conservati localmente e caricati sul server a ogni heartbeat. Per consultarli:
- In locale:
tail -f /tmp/kiosk.logvia SSH. - Dal pannello: Dispositivi → riga del dispositivo → Azioni → Logs.
Aggiornamenti
Gli aggiornamenti si effettuano rieseguendo lo stesso installer one-liner usato per l'installazione. Quando rileva /opt/promobrowser/.git, esegue git fetch + reset --hard origin/main, riapplica i pacchetti di sistema (in modo idempotente tramite apt-get install -y) e riscrive la unit di systemd. Poi riavvii il servizio:
curl -fsSL https://rds.digitalsignagerds.com/install.sh | sudo bash
sudo systemctl restart kiosk-browser
L'installer non riavvia il servizio automaticamente — lo faccia lei con
systemctl restartdopo l'aggiornamento.
Configurazione di rete
Il menu admin (5 tocchi nell'angolo in alto a sinistra) include una scheda Network con:
Stato attuale
Pannello a spaziatura fissa nella parte superiore, con aggiornamento automatico ogni 5 secondi. Mostra, per ogni interfaccia connessa:
- Nome e tipo (ethernet / wifi)
- Nome del profilo di NetworkManager
- IP, maschera, gateway, DNS
WiFi
- Scan again — aggiorna l'elenco delle reti disponibili (
nmcli device wifi rescan). - Tabella con SSID, segnale % e tipo di sicurezza. La rete attualmente in uso è contrassegnata da un ✓ verde.
- Connect — selezioni una rete nella tabella e prema Connect. Se è cifrata, viene richiesta la password. Richiama
nmcli device wifi connect. - Forget current network — elimina il profilo della rete WiFi attualmente attiva (
nmcli connection delete).
Sugli apparecchi senza adattatore WiFi (kiosk esclusivamente cablati) il pannello compare ugualmente e mostra "No WiFi adapter detected" quando si preme Scan/Connect.
Ethernet
- Selettore DHCP (consigliato) / Static.
- In modalità Static compaiono i campi:
- IP / CIDR — ad es.
192.168.1.50/24 - Gateway — ad es.
192.168.1.1 - DNS — uno o più, separati da virgole
- IP / CIDR — ad es.
- Apply Ethernet config richiama
nmcli connection modify ipv4.method auto|manual …seguito da un down/up del profilo, per applicare le modifiche all'istante.
La modifica può interrompere momentaneamente la connessione se è collegato via SSH attraverso lo stesso cavo. I servizi del kiosk (heartbeat) si ripristinano automaticamente.
Tutte le operazioni di rete vengono registrate in agent.log sotto la categoria NETWORK.
Risoluzione dei problemi più frequenti
| Sintomo | Diagnosi |
|---|---|
| Schermo bianco all'avvio | systemctl status kiosk-browser — se è attivo ma non vede nulla, provi chvt 7. |
| Non si connette al server | Controlli Server URL e Device ID in Settings → Server → Test Connection. |
| I video non vengono riprodotti | Manca qualche pacchetto gstreamer. Reinstalli: sudo apt install gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav. |
La sequenza 12345 non apre Settings |
Il watcher X11 RECORD richiede python3-xlib — reinstalli il pacchetto. |
| Le modifiche del pannello non arrivano | Attenda l'heartbeat successivo (60 s); in caso di dubbio usi journalctl -u kiosk-browser -f per vedere le chiamate. |