Player — daemon
Poll al server (programmazione)5 s
Controllo overlay LIVE5 s
Watchdog battito → riavvia Chromium2,5 min
Campionamento memoria (cron)10 min
Pulizia cache mediaa soglia spazio
vdjx-daemon.js
Player — pagina a schermo
/state (contenuto + stato + download)5 s
Battito verso il daemon30 s
Poll pairing (solo in abbinamento)3 s
Countdown pairing1 s
Scadenza codice pairing10 min
vdjx-daemon.js — pagine generate
Player — riproduzione
Riallineamento all'orologio (solo con sync)2 s
Guardia stallo video — controllo1 s
Guardia stallo — recupero a fine video2 s
Guardia stallo — recupero a metà video6 s
Guardia stallo — in attesa di dati30 s
portal/vdjx-player.js
Player — aggiornamenti OTA
Controllo manifest5 min
Timeout health-check90 s
rpi-config/vdjx-updater.js
Player — webapp
Controllo stato HDMI5 s
Push grabber (solo se attivo)1 s
rpi-config/webapp-server.js
Server
Cache meteo (TTL)10 min
Pausa dopo errore meteo5 min
Backup database03:30 · retention 14
Script firewall (cron sistema)5 min
Sincronizzazione NTP (chrony)~17 min
fail2ban: tentativi / finestra5 / 10 min → ban 1 h
vdjx-server.js · cron · /etc
Portale (nel browser)
Sync collezioni col server30 s
Stato player15 s
Refresh pagine di monitoraggio10 s
Anteprima compositore5 s
Orologi e countdown1 s
portal/*.html
Note
Il sync multi-player non ha un intervallo: ogni player calcola la posizione
dall'orologio assoluto (adesso mod durata), quindi si allineano senza
scambiarsi messaggi. La sincronizzazione NTP è ciò che tiene allineati gli orologi.
Battito e watchdog sono legati: il watchdog (2,5 min) deve restare almeno 4-5
volte il battito (30 s), altrimenti Chromium verrebbe riavviato per errore.
Attenzione al polling delle pagine: fino alla build 15 erano 3-4 cicli a 1,5 s
con riscrittura del DOM a ogni giro, e costavano ~240 MB/ora di memoria per player.
Non tornare a valori più frequenti né a scritture incondizionate.
La guardia stallo video controlla ogni secondo, ma è l'unica eccezione
legittima al limite dei 5 s: non fa richieste HTTP e non scrive nel DOM, legge due
proprietà del tag <video>. Le tre soglie di recupero non sono
interscambiabili: 2 s a fine video (lì un tempo fermo non ha altra spiegazione),
6 s a metà con i fotogrammi già in buffer, 30 s quando il buffer è esaurito —
perché in quel caso il video sta solo aspettando dati e riportarlo a zero
farebbe danno.