Documentazione

Schermi: comandi CLI

Associa, elenca, pubblica su, assegna, etichetta, sposta, ricarica, cattura ed elimina schermi e gestisci cartelle, link, video wall e vista live.

Ogni comando funziona come descritto nel riferimento CLI: flag globali, output JSON, codici uscita, revisioni e ritentativi.

Schermi

Uno schermo è un lettore. Questi comandi lo leggono, lo puntano a una playlist e gestiscono la sua vita. Le precondizioni di revisione sono opzionali nelle scritture.

I tag raggruppano gli schermi in flotte. Ogni schermo porta da 0 a 16 tag unici di 1 a 32 lettere o cifre, impostati con screen tag. screen assign, screen reload, screen toast, screen tag e screen screenshot prendono un id schermo, più id o --tag TAG, e una risposta flotta riporta ogni schermo: vedi Risultati flotta.

Le cartelle di schermi raggruppano gli schermi per luogo, una cartella per schermo. Anche un comando di flotta accetta --folder ID: vedi Cartelle di schermi.

Uno schermo in una cartella protetta risponde a una modifica della playlist con pending_review per un secondo approvatore, e rifiuta le modifiche di tag, campi, posizione, fuso orario, video wall, sostituzione, eliminazione, archiviazione, sospensione, display, volume, toast e pagina da riprodurre con protected_target (exit 5).

Un avviso storage_full su screen list, screen show, screen update, screen assign o screen publish significa che il dispositivo su cui gira il Player non ha spazio per i suoi contenuti: libera spazio di archiviazione lì, poi riprova.

screen pair#

Associa un Player con il codice mostrato sul suo schermo.

screen pair <code...> [--name NAME] [--folder ID]
ParametroTipoObbligatorioPredefinitoNote
<code...>stringsìnessunoIl codice di associazione di sei caratteri che il Player mostra. Spazi, trattini e maiuscole/minuscole vengono ignorati, quindi un codice mostrato in due gruppi funziona con o senza virgolette.
--name NAMEstringnoun Screen N inutilizzatoNome visualizzato dello schermo, da 1 a 120 caratteri.
--folder IDstringnoradice del progettoLa cartella di schermi sfd_ in cui inserire lo schermo. Un agent limitato alle cartelle di schermi deve indicare una cartella del proprio ambito; la radice del progetto e ogni altra cartella rispondono outside_screen_scope (exit 3).
screenrig screen pair "$PAIRING_CODE" --name "Lobby"
screenrig screen pair "$PAIRING_CODE" --folder sfd_01EXAMPLEFOLDER000000000

La risposta contiene public_url e il valore screen associato. Il Player completa l’associazione la prossima volta che contatta il servizio, senza nulla da fare sul display: screen show riporta state active e online true quando l’ha fatto. Dopo una richiesta interrotta, riesegui lo stesso identico comando per riutilizzare la chiave di idempotenza salvata.

browser setup#

Completa la configurazione di un Player browser dal codice che mostra.

browser setup --code CODE [--open]
ParametroTipoObbligatorioPredefinitoNote
--code CODEstringsìnessunoIl codice di configurazione mostrato dal Player browser.
--openbooleannospentoApri il Player browser.
screenrig browser setup --code SETUP_CODE --open

La risposta contiene code, status (claimed), screen_id e player_public_url dello schermo. La CLI trattiene un URL che non supera i controlli di sicurezza, con l’avviso player_url_withheld. Un codice non valido o scaduto non crea alcuno schermo. Dopo una richiesta interrotta, riesegui lo stesso comando.

screen list#

Elenca gli schermi. Gli schermi archiviati sono esclusi a meno che non vengano richiesti

screen list [--state archived] [--tag TAG] [--folder ID|root] [--field NAME=VALUE...] [--near LAT,LON,KM]
ParametroTipoObbligatorioPredefinitoNote
--statestringnoschermi attiviL’unico valore accettato è archived, che elenca solo gli schermi archiviati.
--tag TAGstringnoogni schermoElenca solo gli schermi con questo tag esatto
--folder ID|rootstringnoogni schermoElenca solo gli schermi direttamente dentro questa cartella di schermi sfd_, non quelli delle sue sottocartelle, o con root solo gli schermi fuori da ogni cartella.
--field NAME=VALUEstringnonessunoElenca solo gli schermi il cui campo NAME contiene esattamente VALUE. Ripetibile, ogni nome una sola volta; uno schermo deve corrispondere a tutti.
--near LAT,LON,KMstringnonessunoElenca solo gli schermi situati entro KM chilometri dal punto, espresso in gradi decimali; KM è maggiore di 0. Uno schermo senza posizione viene escluso.
screenrig screen list --tag Lobby
screenrig screen list --folder sfd_01EXAMPLEFOLDER000000000
screenrig screen list --field region=north
screenrig screen list --near 47.6062,-122.3321,25

I filtri si combinano. Ogni riga riporta tags, folder_id, fields e location dello schermo quando presenti. Con --human, la tabella aggiunge una colonna solo quando uno schermo elencato ha il valore: PLATFORM, REASON (archive_reason di uno schermo archiviato), TAGS, FOLDER, FIELDS, LOCATION, ASSIGNED (uno schermo che riproduce qualcosa di diverso dalla sua playlist predefinita), HEALTH (uno schermo che richiede attenzione) e UPGRADE (uno schermo il cui Player sta ancora passando alla versione della playlist emessa, o non ci è riuscito). --state archived elenca anche gli schermi che un Player ha archiviato da sé (device_reset, device_unpair) e gli schermi archiviati da screen replace (replaced).

screen show#

Leggi uno schermo, inclusi revisione, assegnazione e stato online.

screen show <id>
ParametroTipoObbligatorioPredefinitoNote
<id>stringsìnessunoL’ID schermo scr_.
screenrig screen show scr_01EXAMPLESCREEN00000000

tags elenca i tag della flotta dello schermo. effective_playlist, takeover e playlist_schedule riportano cosa riproduce lo schermo e perché; vedi Programmazioni e takeover. health e le capacità host del Player sono in Salute e alimentazione del dispositivo. online è vero mentre un Player è connesso, inclusa una breve finestra di riconnessione. last_online_at e last_ip opzionali appaiono dopo la prima connessione. observation opzionale riporta le superfici dipinte da un Player: id, width, height, pixel_ratio e presentation. Tutti questi sono di sola lettura; screen update non può inviarli, e uno schermo archiviato restituisce comunque la sua riga.

commands elenca gli ultimi 10 riavvii, ricaricamenti, svuotamenti della cache, riavvii dell'app e aggiornamenti dello schermo, dal più vecchio, ciascuno con il suo type, il suo state (queued, sent, done, failed, expired, cancelled o superseded), il suo source (schedule per un riavvio emesso da una programmazione dei riavvii; assente per uno richiesto da una persona), il suo expires_at e quando è stato inviato o completato. reboot_schedule e next_reboot_at riportano la programmazione dei riavvii dello schermo e l'inizio della sua prossima finestra di riavvio. Uno svuotamento della cache, un riavvio dell'app o un aggiornamento concluso dal Player contiene anche il suo cause e un breve detail, che --human stampa come colonna CAUSE e come riga sotto la tabella. suspension contiene message e since di uno schermo sospeso. Uno schermo archiviato da screen replace riporta replaced_by, lo schermo a cui è passato il suo dispositivo. Con --human, screen show li stampa tutti.

last_outage riporta l’ultima interruzione dello schermo: offline_since, back_at e duration_s e, quando un report di salute la determina, una likely_cause tra device_restart, app_crash, app_restart, network o platform; è assente quando screenRIG non riesce a determinarla. Un riavvio viene stabilito al ritorno dello schermo, mentre una causa di rete o di screenRIG attende il successivo report di salute del Player, che può richiedere fino a quindici minuti. glass contiene i verdetti che screenRIG ha tratto dai report di riproduzione e dagli screenshot dello schermo. Con --human, screen show stampa Last outage e Likely cause, e Playlist stalled, Blank screen o Frozen picture per un verdetto che ha trovato un problema; Notifiche dice cosa i verdetti lasciano fuori.

folder_id indica la cartella dello schermo ed è assente nella radice del progetto. fields, location e wall compaiono una volta impostati: vedi screen update e screen wall set. Ogni voce di observation.surfaces riporta anche rotation quando il Player può leggerlo, e un video wall riporta una voce per output, con i nomi che richiede screen wall set.

manifest_upgrade indica se il Player è passato alla versione della playlist emessa per lui. Il suo state è none, pending, downloading, preparing, activating, retrying, failed, blocked, partial o current, accanto a desired_playlist e active_playlist (id, name e revision), l’ultima versione che il Player ha confermato, il che non prova che ogni sessione la mostri. Un aggiornamento in errore o parziale riporta anche code, attempt, retry_at e missing_page_count. --human stampa Target v42 · Playing v41. Un aggiornamento fallito non pianifica alcun nuovo tentativo: correggi la causa, poi esegui screen reload oppure assegna di nuovo la playlist. Un’assegnazione salvata non conferma la riproduzione.

applications_unsupported compare finché il Player associato non può mostrare pagine application o iframe: il manifest resta invariato e il Player le salta. recovery_pending compare finché un display che ha perso la propria identità memorizzata si offre di riconnettersi come questo schermo, con expires_at dell’offerta e i valori platform, model, firmware e manufacturer che il display segnala: vedi screen recover.

screen update#

Modifica in una sola chiamata il nome, l’assegnazione della playlist, l’override del fuso orario, i campi o la posizione di uno schermo.

screen update <id> [--name NAME] [--playlist-id ID | --clear-playlist] [--timezone ZONE | --clear-timezone] [--field NAME=VALUE...] [--unset-field NAME...] [--clear-fields] [--location LAT,LON [--location-name NAME] [--address TEXT] | --clear-location] [--expect-rev REVISION]
ParametroTipoObbligatorioPredefinitoNote
<id>stringsìnessunoL’ID schermo scr_.
--name NAMEstringnoinvariatoNome schermo.
--playlist-id IDstringnoinvariatoLa playlist pl_ che questo schermo deve eseguire. Non con --clear-playlist.
--clear-playlistbooleannospentoCancella l’assegnazione predefinita propria dello schermo. L’associazione e ogni altro livello di contenuto restano, e lo schermo risulta inattivo quando nessuno si applica. Uno schermo archiviato risponde screen_archived. Non con --playlist-id.
--timezone ZONEstringnoinvariatoSostituisce il fuso orario dello schermo con un identificatore di zona IANA come America/Los_Angeles. Validato rispetto al database delle zone del server. Non insieme a --clear-timezone.
--clear-timezonebooleannospentoRimuove l’override, così lo schermo torna a seguire la zona che il suo dispositivo riporta. Non insieme a --timezone.
--field NAME=VALUEstringnoinvariatoImposta un campo e lascia gli altri. Ripetibile, ogni nome una sola volta. NAME è composto da 1 a 32 lettere minuscole, cifre o trattini bassi, VALUE da 1 a 200 caratteri dopo la rimozione degli spazi, e uno schermo contiene al massimo 32 campi. Non con --clear-fields.
--unset-field NAMEstringnoinvariatoRimuove un campo. Ripetibile. Non con --clear-fields.
--clear-fieldsbooleannospentoRimuove tutti i campi. Non con --field o --unset-field.
--location LAT,LONstringnoinvariatoDove si trova lo schermo, in gradi decimali: latitudine da -90 a 90, longitudine da -180 a 180. Sostituisce l’intera posizione, quindi ripeti --location-name e --address per mantenerli. Non con --clear-location.
--location-name NAMEstringnonessunoIl nome breve del luogo che una card mostra, da 1 a 40 caratteri. Richiede --location.
--address TEXTstringnonessunoUn indirizzo per persone e agent, da 1 a 200 caratteri. Richiede --location.
--clear-locationbooleannospentoRimuove la posizione. Non con --location.
--expect-rev REVISIONstringnonessunoPrecondizione opzionale di revisione. Ometti per scrivere la risorsa corrente. Un valore obsoleto fornito è revision_conflict: rifetch, reapply, retry.

Indica almeno uno tra --name, --playlist-id, --clear-playlist, --timezone, --clear-timezone, --field, --unset-field, --clear-fields, --location o --clear-location.

screenrig screen update scr_01EXAMPLESCREEN00000000 --name "Lobby"
screenrig screen update scr_01EXAMPLESCREEN00000000 --field store_number=0142 --field region=north
screenrig screen update scr_01EXAMPLESCREEN00000000 --location 47.6062,-122.3321 --location-name "Seattle HQ"
screenrig screen update scr_01EXAMPLESCREEN00000000 --clear-playlist --expect-rev 3

In revisione, una modifica solo a --playlist-id è proposta come screen assign; una sessione Proponi non può modificare gli altri campi.

Modificare campi o posizione cambia la revisione del manifest dello schermo, quindi uno schermo che mostra una playlist recepisce i nuovi valori. Le card e le pagine iframe li leggono per schermo, quindi una sola playlist mostra i valori propri di ciascuno schermo: {screen.field.NAME}, {screen.name} e {screen.timezone} riempiono qualsiasi parametro di testo di una card, "location": "{screen.location}" riempie la posizione di una card nella forma che quella card accetta, e una chiave dati di una card può contenere {screen.field.NAME}, ad esempio menu-{screen.field.store_number}. Uno schermo che non ha un campo mostra quel testo vuoto, e la card rimane senza quella chiave dati o posizione. screen show elenca i campi e la posizione di uno schermo, e screen list trova gli schermi in base a essi. Vedi Token dello schermo negli indirizzi iframe e nei parametri dell’applicazione.

screen publish#

Crea una nuova playlist da un file preparato e assegnala a uno schermo.

screen publish <id> <file> [--expect-rev REVISION] [--note TEXT] [--no-wait] [--poll-ms MS] [--timeout MS] [--no-progress]
ParametroTipoObbligatorioPredefinitoNote
<id>stringsìnessunoL’ID schermo scr_.
<file>pathsìnessunoIl documento della playlist preparato, o - per stdin.
--expect-rev REVISIONstringnonessunoPrecondizione opzionale di revisione schermo. Ometti per scrivere la risorsa corrente. Un valore obsoleto fornito è revision_conflict: rifetch, reapply, retry.
--note TEXTstringnonessunoUna nota per la persona che revisiona la modifica: testo semplice, massimo 280 caratteri. Ignorata se la modifica si applica subito.
--no-waitbooleannospentoRitorna subito dopo l’assegnazione senza attendere che il Player mostri la playlist.
--poll-ms MSintegerno2000Intervallo tra i poll dello schermo durante l’attesa.
--timeout MSintegerno120000Scadenza per l’attesa. Limita anche ogni richiesta sottostante.
--no-progressbooleannospentoSopprimi le righe di fase su stderr.
screenrig screen publish scr_LOBBY lobby.json

Questo crea una nuova playlist e la assegna. Non aggiorna una playlist esistente per nome. Controlla prima il documento preparato. Ripeti l’input identico per riprendere un errore ambiguo. La lettura dell’assegnazione non prova la riproduzione; richiedi uno screenshot separatamente. In revisione restituisce stage: pending_review con entrambe le revisioni. Vedi Prepara, pubblica e modifica playlist.

Dopo l’assegnazione il comando attende finché il Player non mostra la playlist: data.stage è playing e data.playback_verified è true. I cambi di fase vengono stampati su stderr man mano che avvengono, come righe JSON o, con --human, come testo. Ripetere lo stesso identico comando dopo il termine di una pubblicazione riporta quella pubblicazione (data.already_published) finché lo schermo mostra ancora la sua playlist, e pubblica di nuovo quando lo schermo è passato ad altro.

screen assign#

Indirizza uno schermo, o una flotta di schermi, a una playlist.

screen assign (<id>... | --tag TAG | --folder ID) --playlist-id ID [--expect-rev REVISION] [--note TEXT]
ParametroTipoObbligatorioPredefinitoNote
<id>...stringuno tra <id>, --tag o --foldernessunoUno o più ID schermo scr_. Diversi ID vengono eseguiti come una singola richiesta flotta.
--tag TAGstringuno tra <id>, --tag o --foldernessunoOgni schermo attivo con questo tag.
--folder IDstringuno tra <id>, --tag o --foldernessunoOgni schermo attivo in questa cartella schermi sfd_ e nelle cartelle al suo interno.
--playlist-id IDstringsìnessunoLa playlist pl_ da eseguire.
--expect-rev REVISIONstringnonessunoSolo un ID schermo. Condizione di revisione opzionale. Ometti per scrivere la risorsa corrente. Un valore stale fornito è revision_conflict: rifetch, reapply, retry.
--note TEXTstringnonessunoUna nota per la persona che revisiona la modifica: testo semplice, massimo 280 caratteri. Ignorata se la modifica si applica subito.
screenrig screen assign scr_01EXAMPLESCREEN00000000 --playlist-id pl_01EXAMPLEPLAYLIST000000
screenrig screen assign --tag Lobby --playlist-id pl_01EXAMPLEPLAYLIST000000
screenrig screen assign --folder sfd_01EXAMPLEFOLDER000000000 --playlist-id pl_01EXAMPLEPLAYLIST000000

Una playlist che programma pagine si assegna a qualsiasi schermo: le programmazioni sono lette nel fuso orario proprio dello schermo (il suo override, altrimenti la zona che il suo dispositivo riporta, altrimenti UTC).

Per pubblicare su una flotta, crea la playlist una volta con playlist create, poi esegui screen assign --tag TAG --playlist-id ID. screen publish punta a uno schermo.

Con l’accesso Propose, o in un progetto che richiede la revisione per le modifiche degli agent, la modifica a uno schermo o all’intera flotta risponde invece pending_review: data.review contiene l’ID della revisione e il relativo url nella dashboard, un avviso pending_review nomina l’url, e data.next è reviews show ID. Nulla cambia sullo schermo finché una persona non la approva, quindi non ripetere la scrittura. Su uno schermo in una cartella protetta questo risponde pending_review a ogni livello di accesso, e la decide un approvatore diverso da te e dalla persona per cui lavori (altrimenti second_approver_required, exit 3). Un chiamante limitato alle cartelle di schermi assegna solo su schermi del proprio ambito. Un’assegnazione salvata non conferma la riproduzione; screen screenshot mostra cosa c’è sullo schermo.

screen set-timezone#

Imposta l’override del fuso orario in cui sono lette le regole civili di uno schermo, oppure rimuovilo.

screen set-timezone <id> (--timezone ZONE | --clear) [--expect-rev REVISION]
ParametroTipoObbligatorioPredefinitoNote
<id>stringsìnessunoL’ID schermo scr_.
--timezone ZONEstringuno tra --timezone o --clearnessunoSostituisce il fuso orario dello schermo con un identificatore di zona IANA come Europe/Berlin.
--clearbooleanuno tra --timezone o --clearspentoRimuove l’override, così lo schermo torna a seguire la zona che il suo dispositivo riporta. Non insieme a --timezone.
--expect-rev REVISIONstringnonessunoPrecondizione opzionale di revisione. Ometti per scrivere la risorsa corrente. Un valore obsoleto fornito è revision_conflict: rifetch, reapply, retry.
screenrig screen set-timezone scr_01EXAMPLESCREEN00000000 --timezone America/Los_Angeles
screenrig screen set-timezone scr_01EXAMPLESCREEN00000000 --clear

Ogni schermo ha un fuso orario effettivo, e ogni regola civile lo legge: visibilità delle pagine, slot pubblicitari, programmazioni delle playlist, takeover, campagne, programmazioni dei display e dei riavvii, e {screen.timezone}. È questo override, altrimenti la zona che il Player dello schermo riporta dal suo dispositivo, altrimenti UTC. Uno schermo non necessita di override finché il suo dispositivo riporta la zona giusta. screen show stampa la zona effettiva come Timezone con la sua origine, effective_timezone e timezone_source (screen, device o default) in --json. Cambiare la zona effettiva rigenera la revisione del manifest.

ZONE è Area/City, come America/New_York o Asia/Tokyo, oppure UTC.

screen wall set#

Imposta il video wall di uno schermo: un solo Player che pilota da due a dodici display come un unico canvas.

screen wall set <id> --outputs NAMES --arrangement row|column|grid [--columns N] [--rotation 0|90|180|270] [--expect-rev REVISION]
ParametroTipoObbligatorioPredefinitoNote
<id>stringsìnessunoL’ID schermo scr_.
--outputs NAMESstringsìnessunoDa due a dodici nomi di output separati da virgole in ordine fisico, da sinistra a destra e poi dall’alto verso il basso, come li elenca screen show in observation.surfaces, ad esempio HDMI-A-1,HDMI-A-2. Ciascuno è composto da 1 a 64 lettere, cifre, punti, trattini bassi o trattini, indicato una sola volta.
--arrangement ARRANGEMENTstringsìnessunorow (una riga, da sinistra a destra), column (una colonna, dall’alto verso il basso) o grid (righe di --columns output, dall’alto verso il basso).
--columns Nintegersì, per gridnessunoOutput per riga di una griglia: da 2 a 6, in modo che gli output si dividano in almeno 2 righe. Rifiutato per row e column.
--rotation DEGREESstringno0Rotazione in senso orario di ogni output: 0, 90, 180 o 270. 90 e 270 sono pannelli verticali.
--expect-rev REVISIONstringnonessunoPrecondizione opzionale di revisione. Ometti per scrivere la risorsa corrente. Un valore obsoleto fornito è revision_conflict: rifetch, reapply, retry.
screenrig screen wall set scr_01EXAMPLESCREEN00000000 --outputs HDMI-A-1,HDMI-A-2 --arrangement row
screenrig screen wall set scr_01EXAMPLESCREEN00000000 --outputs DP-1,DP-2,DP-3 --arrangement row --rotation 90 --expect-rev 4
screenrig screen wall set scr_01EXAMPLESCREEN00000000 --outputs DP-1,DP-2,DP-3,DP-4,DP-5,DP-6 --arrangement grid --columns 3

Un solo Player pilota i display come un unico video wall, quindi una pagina della playlist si estende su tutti. L’impostazione sostituisce l’intero video wall, quindi ripeti --rotation e --columns per mantenerli. Solo l’installazione kiosk del Player Linux e il Player Windows dichiarano la capacità display.wall; qualsiasi altro Player risponde wall_unsupported (exit 5) e nulla cambia. L’accesso Propose non può modificare un video wall (insufficient_access). Un wall da 2 o 3 schermi richiede Plus o superiore, uno da 4 a 12 schermi Enterprise: un piano senza risponde feature_not_in_plan (uscita 8), mentre screen wall clear e un’impostazione che mantiene il wall salvato restano disponibili. Vedi Video wall.

Crea la playlist per la forma del video wall con playlist init e l’ID dello schermo, che scrive il canvas corrispondente e format (displays, arrangement, orientation e columns per una griglia). L’elenco displays di una primitiva, ad esempio [2] o [1, 2, 5, 6], indica i numeri dei display che copre, contati da 1 da sinistra a destra e poi dall’alto verso il basso, e deve riempire un rettangolo del video wall. Assegnare una playlist il cui formato non corrisponde alla forma del video wall dà playlist_format_mismatch (exit 5); una playlist senza formato viene riprodotta allo stesso modo su ogni display. Quando lo schermo riproduce una playlist con un formato corrispondente, ogni display mostra il proprio numero e nome per 20 secondi dopo una modifica, così puoi verificare l’ordine sullo schermo.

screen wall clear#

Rimuovi il video wall di uno schermo.

screen wall clear <id> [--expect-rev REVISION]
ParametroTipoObbligatorioPredefinitoNote
<id>stringsìnessunoL’ID schermo scr_.
--expect-rev REVISIONstringnonessunoPrecondizione opzionale di revisione. Ometti per scrivere la risorsa corrente. Un valore obsoleto fornito è revision_conflict: rifetch, reapply, retry.
screenrig screen wall clear scr_01EXAMPLESCREEN00000000

La playlist assegnata non viene ricontrollata: se ha un format, il manifest dello schermo passa a uno stato degradato (wall_format_mismatch) e il Player mantiene l’ultima pagina valida finché non assegni una playlist senza formato. Uno schermo senza video wall risponde senza modifiche. L’accesso Propose non può modificare un video wall (insufficient_access).

screen archive#

Nascondi uno schermo e scurisci il vetro.

screen archive <id> [--expect-rev REVISION]
ParametroTipoObbligatorioPredefinitoNote
<id>stringsìnessunoL’ID schermo scr_.
--expect-rev REVISIONstringnonessunoPrecondizione opzionale di revisione. Ometti per scrivere la risorsa corrente. Un valore obsoleto fornito è revision_conflict: rifetch, reapply, retry.
screenrig screen archive scr_01EXAMPLESCREEN00000000

L’archiviazione nasconde lo schermo dall’elenco predefinito e scurisce il vetro. Non dissocia il lettore.

Chi possiede la chiave del display può comunque connettersi mentre lo schermo è archiviato. Per ritirare definitivamente l’hardware, lascia lo schermo archiviato, oppure sposta lo schermo su un nuovo hardware con screen recover o screen replace, che ritirano la vecchia chiave.

screen unarchive#

Ripristina uno schermo archiviato nella lista predefinita.

screen unarchive <id> [--expect-rev REVISION]
ParametroTipoObbligatorioPredefinitoNote
<id>stringsìnessunoL’ID schermo scr_.
--expect-rev REVISIONstringnonessunoPrecondizione opzionale di revisione. Ometti per scrivere la risorsa corrente. Un valore obsoleto fornito è revision_conflict: rifetch, reapply, retry.
screenrig screen unarchive scr_01EXAMPLESCREEN00000000

Un Player può anche archiviare il proprio schermo: un reset confermato su un Player che detiene una chiave, o la dissociazione di un Player browser associato tramite cookie. screen show quindi segnala archive_reason come device_reset o device_unpair (project per un archivio richiesto), con archived_at. Lo schermo mantiene il suo vincolo dispositivo per ogni motivo, quindi un Player che ancora detiene quella chiave o cookie dispositivo resta spento e riprende su ripristino senza nuova associazione. Il Player che è stato resettato o dissociato perde la sua chiave o cookie e si associa di nuovo come nuovo schermo. Una chiave sostituita da un recupero schermo confermato resta ritirata.

Uno schermo archiviato come replaced da screen replace non mantiene alcun vincolo dispositivo, quindi il ripristino dall’archivio lo rifiuta e screen delete lo rimuove.

screen suspend#

Mostra un avviso su uno schermo al posto dei suoi contenuti, finché non viene ripreso.

screen suspend <id> --message TEXT [--expect-rev REVISION]
ParametroTipoObbligatorioPredefinitoNote
<id>stringsìnessunoL’ID schermo scr_.
--message TEXTstringsìnessunoL’avviso che lo schermo mostra: da 1 a 280 caratteri dopo il trim. Il ritorno a capo è l’unico carattere di controllo, e il Player manda a capo il testo e ne mantiene i ritorni a capo.
--expect-rev REVISIONstringnonessunoPrecondizione opzionale di revisione. Ometti per scrivere la risorsa corrente. Un valore obsoleto fornito è revision_conflict: rifetch, reapply, retry.
screenrig screen suspend scr_01EXAMPLESCREEN00000000 --message "Closed for stocktake. Back at 9am."

Uno schermo sospeso mostra il messaggio al posto dei suoi contenuti. Non cambia nient’altro: la sua playlist, la programmazione, il takeover e il controllo del display restano al loro posto e continuano a evolversi, e screen resume mostra ciò che lo schermo starebbe mostrando ora. screen show riporta suspension con message e since; sospendere uno schermo già sospeso sostituisce il messaggio e mantiene since. Sospendere aggiorna la revisione dello schermo, e il Player recupera subito i dati aggiornati. Uno schermo archiviato risponde screen_archived.

screen resume#

Termina la sospensione di uno schermo così che torni a mostrare i propri contenuti.

screen resume <id> [--expect-rev REVISION]
ParametroTipoObbligatorioPredefinitoNote
<id>stringsìnessunoL’ID schermo scr_.
--expect-rev REVISIONstringnonessunoPrecondizione opzionale di revisione. Ometti per scrivere la risorsa corrente. Un valore obsoleto fornito è revision_conflict: rifetch, reapply, retry.
screenrig screen resume scr_01EXAMPLESCREEN00000000

Riprendere mostra di nuovo i contenuti propri dello schermo, a partire da ciò che lo schermo starebbe mostrando ora, e il Player recupera subito i dati aggiornati. Uno schermo non sospeso risponde invariato, senza cambio di revisione. Uno schermo archiviato risponde screen_archived.

screen delete#

Elimina uno schermo.

screen delete <id> [--expect-rev REVISION]
ParametroTipoObbligatorioPredefinitoNote
<id>stringsìnessunoL’ID schermo scr_.
--expect-rev REVISIONstringnonessunoPrecondizione opzionale di revisione. Ometti per scrivere la risorsa corrente. Un valore obsoleto fornito è revision_conflict: rifetch, reapply, retry.
screenrig screen delete scr_01EXAMPLESCREEN00000000

Eliminare rimuove uno schermo solo finché nessuna chiave Player è associata ad esso, e screen show riporta deletable: true per quello schermo. Un Player che si associa tramite codice, nativo o browser, detiene una chiave, e la chiave resta associata al suo schermo: eliminare quello schermo risponde 409 screen_archive_required (codice di uscita 5); archiviarlo invece. Solo un Player browser associato tramite cookie non detiene alcuna chiave, e il suo schermo si elimina sia che sia associato sia che sia ancora in attesa.

Per associare come nuovo schermo un display che possiede una chiave, conferma un reset sul Player stesso, poi richiedi con screen pair il codice che mostra; il vecchio schermo resta archiviato. Per spostare uno schermo su hardware sostitutivo, usa screen recover, oppure screen replace quando quell’hardware è già associato come schermo a sé.

screen recover#

Ricollega un display che ha perso la propria identità memorizzata allo schermo con cui era stato associato.

screen recover <id> [--expect-rev REVISION]
ParametroTipoObbligatorioPredefinitoNote
<id>stringsìnessunoL’ID schermo scr_.
--expect-rev REVISIONstringnonessunoPrecondizione opzionale di revisione. Ometti per scrivere la risorsa corrente. Un valore obsoleto fornito è revision_conflict: rifetch, reapply, retry.
screenrig screen show scr_01EXAMPLESCREEN00000000
screenrig screen recover scr_01EXAMPLESCREEN00000000

Un display che ha perso la propria identità memorizzata e ora segnala, durante l’associazione, gli identificatori hardware di questo schermo fa un’offerta. screen show la riporta come recovery_pending con la sua scadenza e, quando il display li segnala, platform, model, firmware e manufacturer. Nulla viene ricollegato finché questo comando non lo conferma: lo schermo mantiene etichetta, playlist, fuso orario, programmazioni e cronologia, e la nuova chiave del display sostituisce la precedente, che decade dopo una finestra di grazia di quindici minuti. Uno schermo archiviato da un reset del dispositivo resta archiviato finché non viene eseguito screen unarchive.

Prima di confermare, confronta il modello e il firmware segnalati con il display che ti aspetti: qualsiasi applicazione in esecuzione su un display può leggerne gli identificatori, quindi la sola offerta non prova da quale display proviene. Il servizio rifiuta un’offerta finché il Player attuale dello schermo è ancora online, e uno schermo accetta al massimo tre offerte all’ora. Senza un’offerta il comando risponde recovery_not_offered, un’offerta la cui sessione di associazione è scaduta risponde recovery_expired, e identificatori collegati a più di uno schermo rispondono recovery_ambiguous; nulla viene ricollegato. Il recupero non attraversa mai i progetti.

screen replace#

Sposta su questo schermo il dispositivo associato come un altro schermo, mantenendo le impostazioni e la cronologia di questo schermo.

screen replace <id> --with ID [--expect-rev REVISION]
ParametroTipoObbligatorioPredefinitoNote
<id>stringsìnessunoLo schermo scr_ da mantenere.
--with IDstringsìnessunoLo schermo scr_ il cui dispositivo associato subentra. Deve essere un altro schermo del progetto.
--expect-rev REVISIONstringnonessunoPrecondizione opzionale di revisione sullo schermo da mantenere. Ometti per scrivere la risorsa corrente. Un valore obsoleto fornito è revision_conflict: rifetch, reapply, retry.
screenrig screen replace scr_01EXAMPLESCREEN00000000 --with scr_01EXAMPLENEWSCREEN000000

Associa prima il nuovo hardware come schermo a sé stante, poi sostituisci. La chiave del dispositivo, o la credenziale di un Player browser, ora apre <id>, che mantiene nome, tag, fuso orario, playlist, programmazioni, takeover, programmazione display e override, video wall, commenti, campi, posizione e cronologia, e prende l’host e il Player dello schermo sostitutivo. Salute, stato, spazio di archiviazione e comandi in coda ricominciano da zero. Lo schermo indicato da --with viene archiviato con archive_reason replaced e replaced_by che indica <id>. Non mantiene alcun vincolo dispositivo, quindi screen unarchive non può ripristinarlo e screen delete lo rimuove. La chiave che <id> deteneva viene ritirata dopo una finestra di grazia di quindici minuti, poi il suo vecchio dispositivo viene rifiutato. Entrambi gli schermi devono essere attivi con un Player associato: uno schermo ancora in attesa di associazione risponde resource_conflict, uno archiviato risponde screen_archived, e un video wall richiede un Player sostitutivo che dichiara display.wall (wall_unsupported). La richiesta porta sempre una chiave di idempotenza, e un retry esatto restituisce la risposta originale.

Per ricollegare un display che ha perso la propria identità memorizzata e ora segnala gli identificatori di questo schermo, usa screen recover.

screen rotate-public-id#

Emettere un nuovo ID pubblico per uno schermo.

screen rotate-public-id <id> [--expect-rev REVISION]
ParametroTipoObbligatorioPredefinitoNote
<id>stringsìnessunoL’ID schermo scr_.
--expect-rev REVISIONstringnonessunoPrecondizione opzionale di revisione. Ometti per scrivere la risorsa corrente. Un valore obsoleto fornito è revision_conflict: rifetch, reapply, retry.
screenrig screen rotate-public-id scr_01EXAMPLESCREEN00000000

Il valore public_id dello schermo, la credenziale nel suo URL pubblico, viene sostituito e ogni sessione aperta con il precedente termina. L’associazione del Player resta: un Player associato apre una nuova sessione e continua a mostrare i suoi contenuti.

screen reload#

Chiedi al lettore di uno schermo, o a tutti i lettori di una flotta, di ricaricare una volta.

screen reload (<id>... | --tag TAG | --folder ID) [--expires-in DURATION] [--expect-rev REVISION]
ParametroTipoObbligatorioPredefinitoNote
<id>...stringuno tra <id>, --tag o --foldernessunoUno o più ID schermo scr_. Diversi ID vengono eseguiti come una singola richiesta flotta.
--tag TAGstringuno tra <id>, --tag o --foldernessunoOgni schermo attivo con questo tag.
--folder IDstringuno tra <id>, --tag o --foldernessunoOgni schermo attivo in questa cartella schermi sfd_ e nelle cartelle al suo interno.
--expires-in DURATIONstringno24h, applicato dal serverQuanto a lungo la richiesta attende che uno schermo offline torni online: 90s, 30m, 2h o 1d, da 60s a 24h.
--expect-rev REVISIONstringnonessunoSolo un ID schermo. Condizione di revisione opzionale.
screenrig screen reload scr_01EXAMPLESCREEN00000000
screenrig screen reload scr_01EXAMPLESCREEN00000000 --expires-in 2h
screenrig screen reload --tag Lobby
screenrig screen reload --folder sfd_01EXAMPLEFOLDER000000000

La risposta include un reload_id, un state e un expires_at. Uno schermo online riceve subito la ricarica (state sent); uno schermo offline la mantiene in stato queued e la riceve quando torna online prima di expires_at, 24 ore dopo la richiesta salvo diversa indicazione in --expires-in. Una ricarica più recente sostituisce quella ancora in coda, screen show elenca i commands dello schermo e screen command cancel annulla una ricarica ancora in coda. In una flotta, il reload di ogni risultato contiene lo stesso state. Un Player web si ricarica al prossimo cambio pagina; un Player nativo si ricollega, recupera il manifesto e verifica aggiornamenti. Un Player ignora una ricarica entro dieci minuti dall’ultima eseguita. La ricarica funziona su schermi attivi e archiviati e non cambia la revisione dello schermo.

screen toast#

Invia un messaggio transitorio come stage chrome su uno schermo live o una flotta.

screen toast (<id>... | --tag TAG | --folder ID) --text TEXT [--level info|alert|error] [--duration-ms MS]
ParametroTipoObbligatorioPredefinitoNote
<id>...stringuno tra <id>, --tag o --foldernessunoUno o più ID schermo scr_. Diversi ID vengono eseguiti come una singola richiesta flotta.
--tag TAGstringuno tra <id>, --tag o --foldernessunoOgni schermo attivo con questo tag.
--folder IDstringuno tra <id>, --tag o --foldernessunoOgni schermo attivo in questa cartella schermi sfd_ e nelle cartelle al suo interno.
--text TEXTstringsìnessunoDa uno a 120 caratteri, interruzione solo a capo, massimo tre righe.
--level LEVELstringnoinfoinfo, alert o error. Uno schermo può impostare il livello di toast più basso che mostra, e i toast error vengono sempre mostrati. Un Player mostra un toast su una riga, con ogni ritorno a capo reso come spazio. Il successo del comando non stabilisce la visibilità.
--duration-ms MSintegerno60000, applicato dal serverTra 2000 e 60000 se fornito.
screenrig screen toast scr_01EXAMPLESCREEN00000000 --text "Lobby closed"
screenrig screen toast --tag Lobby --text "Closing in ten minutes"
screenrig screen toast --folder sfd_01EXAMPLEFOLDER000000000 --text "Closing in ten minutes"

Un toast non è un primitivo: non occupa slot canvas, non ha layer e non partecipa a readiness o crossfade. Vince l’ultimo, non c’è coda né annulla, e l’involucro accettato è solo { expires_at }. Non mettere mai credenziali o altri materiali segreti nel testo.

screen identify#

Mostra il nome di uno schermo sopra i suoi contenuti per un po’, così da trovarlo in loco.

screen identify <id> [--duration DURATION]
ParametroTipoObbligatorioPredefinitoNote
<id>stringsìnessunoL’ID schermo scr_.
--duration DURATIONstringno60s, applicato dal serverQuanto a lungo resta visibile la sovrapposizione, contando da quando il Player riceve la richiesta: 30s, 2m o 1m30s, da 2s a 10m.
screenrig screen identify scr_01EXAMPLESCREEN00000000
screenrig screen identify scr_01EXAMPLESCREEN00000000 --duration 2m

Il Player disegna una sovrapposizione a schermo intero sopra i propri contenuti, con il nome dello schermo molto grande e il suo ID in piccolo sotto. La riproduzione continua al di sotto, e un’identificazione più recente sostituisce la sovrapposizione. La busta accettata contiene identify_id, duration_ms e un expires_at 60 secondi dopo la richiesta, così uno schermo offline non la mostra mai in seguito. Solo un Player che dichiara la capacità identify mostra la sovrapposizione: qualsiasi altro schermo risponde 409 identify_unsupported (codice di uscita 5) e non viene inviato nulla, quindi aggiorna il Player o mostra il nome con screen toast. Uno schermo archiviato risponde screen_archived e uno schermo ancora in attesa di associazione risponde resource_conflict. Identificare non cambia la revisione dello schermo.

screen play-page#

Avvia una pagina della playlist che uno schermo sta riproducendo ora, per verificarla con uno screenshot.

screen play-page <id> --page-id ID
ParametroTipoObbligatorioPredefinitoNote
<id>stringsìnessunoL’ID schermo scr_.
--page-id IDstringsìnessunoUna pagina della playlist che lo schermo sta riproducendo ora: da 1 a 128 caratteri.
screenrig screen play-page scr_01EXAMPLESCREEN00000000 --page-id welcome
screenrig screen screenshot scr_01EXAMPLESCREEN00000000

La pagina riparte dall’inizio sul Player dello schermo e la rotazione prosegue da lì, quindi uno screenshot fatto subito dopo mostra quella pagina senza attendere la fine della rotazione. La pagina deve appartenere alla playlist che lo schermo riproduce ora: il suo takeover, altrimenti una campagna che lo detiene, altrimenti la sua programmazione, altrimenti la playlist assegnata. Qualsiasi altra pagina risponde page_not_on_screen (exit 5), e il problema nomina quella playlist. Un Player che non dichiara la capacità play_page nel proprio report host risponde play_page_unsupported (exit 5) e non viene inviato nulla: aggiorna il Player.

La risposta contiene playlist_id, page_id, manifest_revision e expires_at. La richiesta scade dopo 60 secondi e non modifica la revisione dello schermo. Uno schermo archiviato risponde screen_archived e uno schermo ancora in attesa di associazione risponde resource_conflict. Un nuovo tentativo con la stessa chiave di idempotenza riproduce la risposta originale.

screen screenshot#

Cattura un fermo immagine di uno schermo attivo, o di ogni schermo in una flotta, e scrivilo su disco.

screen screenshot <id> [--output FILE] [--timeout MS] [--poll-ms MS]
screen screenshot (<id> <id>... | --tag TAG | --folder ID) [--output DIRECTORY] [--concurrency N] [--timeout MS] [--poll-ms MS]
ParametroTipoObbligatorioPredefinitoNote
<id>...stringuno tra <id>, --tag o --foldernessunoUno o più ID schermo scr_.
--tag TAGstringuno tra <id>, --tag o --foldernessunoOgni schermo attivo con questo tag, senza limite al numero di schermi.
--folder IDstringuno tra <id>, --tag o --foldernessunoOgni schermo attivo in questa cartella di schermi sfd_ e nelle cartelle al suo interno, senza limite al numero di schermi.
--output FILEpathno./<id>.webpPer uno schermo, un percorso file; un file esistente viene sovrascritto senza richiesta. Per più ID, --tag o --folder, una directory, creata se mancante, che riceve un <screen_id>.webp per schermo.
--concurrency Nintegerno4Catture in corso contemporaneamente per diversi ID, --tag o --folder, da 1 a 8.
--timeout MSintegerno35000Quanto tempo attendere per la cattura.
--poll-ms MSintegerno500Intervallo tra i poll di stato cattura.
screenrig screen screenshot scr_01EXAMPLESCREEN00000000 --output ./lobby.webp
screenrig screen screenshot --tag Lobby --output ./lobby-shots
screenrig screen screenshot --folder sfd_01EXAMPLEFOLDER000000000 --output ./north-shots

Il comando resta in attesa finché il WebP non è su disco. La busta riporta screen_id, capture_id, path, bytes, sha256, width e height, e mai i byte dell’immagine. Vince l’ultima richiesta: una richiesta successiva sostituisce un’acquisizione in corso. Uno screenshot dell’app web del Player disegna ogni pagina iframe come un riquadro grigio scuro con l’etichetta "Embedded web page" e ogni applicazione come la rende l’applicazione stessa; l’immagine non contiene alcun indicatore del riquadro, quindi non prova che una pagina iframe sia stata visualizzata.

Con più ID, --tag o --folder, la risposta è un risultato di flotta con action: "screenshot", il selector e la directory output; ogni risultato ok riporta path, bytes, sha256, width e height. Con --tag, la CLI elenca prima gli schermi con tag, seguendo ogni pagina dell’elenco; ogni pagina dell’elenco è una richiesta agente e le acquisizioni stesse non sono contate, e più ID non richiedono un elenco. --idempotency-key è rifiutato in questa forma, perché ogni acquisizione usa la propria chiave. Se un’acquisizione fallisce in modo imprevisto, il risultato di quello schermo è unexpected_error, non partono nuove acquisizioni, gli schermi ancora in attesa riportano not_attempted e il codice di uscita è 1.

Per un solo schermo la busta contiene anche frame.flat, che indica se questa immagine è di un solo tono uniforme, e picture, il verdetto dello schermo su vuoto o bloccato quando ne ha uno. Un’immagine uniforme da sola non è un verdetto: una transizione tra pagine, o una pagina nera di proposito, appare uguale. Con --folder, la CLI elenca la cartella e ogni cartella al suo interno, con un’esecuzione di screen list --folder per cartella, e uno schermo che l’elenco mostra offline viene segnalato come fallito senza acquisizione.

Il server ammette 10 acquisizioni per schermo, 30 per organizzazione e 30 per indirizzo al minuto; la CLI ritenta le risposte 429 e 5xx con backoff e rispetta Retry-After. Un’acquisizione che non può essere completata è screenshot_unavailable (exit 5): lo schermo è offline, la richiesta ha dato timed_out, la pagina mostrata contiene una superficie che il Player non può acquisire (unsupported_surface, ad esempio un iframe di terze parti visibile nel Player del browser), l’acquisizione del Player è fallita (capture_failed), oppure l’acquisizione era ancora in sospeso quando il tempo di --timeout si è esaurito. --timeout 0 lascia l’attesa al server, che fa scadere una richiesta senza risposta dopo 30 secondi. Un’acquisizione fallita contiene error.display quando il Player ha segnalato il proprio display: power, connected, reported_at e stale (dopo 35 minuti). Un report off o standby recente suggerisce di riprovare quando il display è acceso.

screen live start#

Avvia la vista live di uno schermo, o rinnovala, e stampa la pagina della dashboard che la mostra.

screen live start <id> [--duration DURATION] [--wait DURATION]
ParametroTipoObbligatorioPredefinitoNote
<id>stringsìnessunoL’ID schermo scr_.
--duration DURATIONstringno5mQuanto dura la sessione se non viene rinnovata: da 30s a 5m, ad esempio 90s o 5m. Una sessione termina al più tardi cinque minuti dopo il suo inizio.
--wait DURATIONstringno30sQuanto attendere che il Player inizi a pubblicare: da 1s a 10m, oppure 0 per tornare subito.
screenrig screen live start scr_01EXAMPLESCREEN00000000
screenrig screen live start scr_01EXAMPLESCREEN00000000 --duration 2m --wait 60s

La vista live mostra come video nella dashboard ciò che uno schermo riproduce; la CLI avvia, legge e termina la sessione e non trasporta mai il video. data è la sessione con viewer_url, la pagina da aprire. Avviare uno schermo che ha già una sessione la rinnova: il lease si estende fino alla più tarda tra la sua fine attuale e --duration da adesso, mai oltre cinque minuti dopo l’inizio della sessione. Poi la sessione termina da sola: nulla la rinnova né la riavvia, e la sessione successiva richiede un nuovo screen live start. Termina prima quando il lease scade, con screen live stop, o quando la termina il Player.

Il comando chiede al Player di pubblicare e legge la sessione ogni secondo per --wait finché il Player non segnala di essere connesso. Se il Player non si è connesso allo scadere dell’attesa, la risposta è comunque ok con l’avviso live_not_ready: leggi di nuovo screen live status, oppure apri viewer_url. Una sessione terminata durante l’attesa è live_unavailable (exit 5) e il suo dettaglio nomina ended_reason, ad esempio consent_timeout (su Android, una persona davanti allo schermo consente l’acquisizione dello schermo una volta a ogni avvio del Player). Anche uno schermo offline è live_unavailable, e uno archiviato risponde screen_archived. Un Player che non dichiara la capacità live_view risponde live_unsupported (exit 5) e non viene inviato nulla: aggiorna il Player. Un server senza relay multimediale risponde feature_unavailable: usa screen screenshot. La vista live è gratuita. Vedi Vista live.

screen live status#

Leggi la sessione di vista live di uno schermo.

screen live status <id>
ParametroTipoObbligatorioPredefinitoNote
<id>stringsìnessunoL’ID schermo scr_.
screenrig screen live status scr_01EXAMPLESCREEN00000000

state è idle (nessuna sessione), requested (al Player è stato chiesto), publishing (il relay ne ha il video) o ended, con ended_reason per dieci minuti. publisher.connected è la segnalazione del Player stesso, risalente a non più di 45 secondi fa, e non prova che ci sia un’immagine. data include viewer_url.

screen live stop#

Termina la sessione di vista live di uno schermo.

screen live stop <id>
ParametroTipoObbligatorioPredefinitoNote
<id>stringsìnessunoL’ID schermo scr_.
screenrig screen live stop scr_01EXAMPLESCREEN00000000

Termina la sessione e dice al Player di smettere di pubblicare, poi stampa la sessione così com’è: ended con ended_reason stopped. Riesce anche quando non esiste alcuna sessione. Una sessione termina anche da sola quando il suo lease scade.

screen live frame#

Salva fotogrammi JPEG di ciò che uno schermo riproduce, dal suo stream live, per verificare riproduzione e movimento.

screen live frame <id> [--output PATH] [--count N] [--interval DURATION] [--duration DURATION] [--wait DURATION] [--stop]
ParametroTipoObbligatorioPredefinitoNote
<id>stringsìnessunoL’ID schermo scr_.
--output PATHpathnola directory di lavoroUn file per un solo fotogramma, oppure una directory che riceve frame-<captured_at>.jpg per ogni fotogramma, con i due punti dell’ora scritti come trattini. --count superiore a 1 richiede una directory.
--count Nintegerno1Quanti nuovi fotogrammi salvare.
--interval DURATIONstringno1sPausa tra i fotogrammi: da 1s a 5m, oppure 0 per prendere ogni fotogramma appena arriva.
--duration DURATIONstringno2mLease della sessione live avviata da questo comando: da 30s a 5m. Viene allungato per coprire i fotogrammi più 30 secondi, e un’esecuzione che richiede più di cinque minuti viene rifiutata.
--wait DURATIONstringno30sQuanto attendere che il Player inizi a pubblicare, e per ogni fotogramma: da 1s a 10m, oppure 0 per provare una sola volta.
--stopbooleannospentoTermina la sessione live al termine, anche quando un fotogramma è fallito.
screenrig screen live frame scr_01EXAMPLESCREEN00000000
screenrig screen live frame scr_01EXAMPLESCREEN00000000 --output now.jpg --stop
screenrig screen live frame scr_01EXAMPLESCREEN00000000 --output frames/ --count 5 --interval 1s

Il comando avvia la sessione live, attende che il Player pubblichi, chiede i fotogrammi al relay multimediale e legge ogni nuovo fotogramma una sola volta. Un fotogramma è il video così come l’ha inviato l’encoder del Player, ridimensionato a un massimo di 1280x720 e con perdita di qualità, circa uno al secondo: mostra il movimento e ciò che è sullo schermo adesso, quindi confronta i fotogrammi (--count 5 --interval 1s) per verificare che il contenuto si muova. Non è uno screenshot, che resta la prova del layout. I fotogrammi sono gratuiti.

data è {screen_id, live_id, frames}, con path, captured_at, width, height, bytes e sha256 per fotogramma, e stopped true quando --stop ha terminato la sessione. Senza --stop la sessione viene lasciata al suo lease. Un Player che non pubblica entro --wait, o che non invia nessun nuovo fotogramma entro tale tempo, è live_not_ready (exit 5); su Android, una persona davanti allo schermo consente l’acquisizione dello schermo una volta a ogni avvio del Player. Una sessione terminata, o i cui fotogrammi hanno smesso di arrivare, è live_unavailable (exit 5). Un Player senza la capacità live_view risponde live_unsupported, e un server senza relay multimediale o fotogrammi risponde feature_unavailable (exit 4): usa screen screenshot.

screen tag#

Imposta, aggiungi, rimuovi o cancella i tag su uno schermo o una flotta.

screen tag (<id>... | --tag TAG | --folder ID) (--set TAGS | --add TAGS | --remove TAGS | --clear) [--expect-rev REVISION]
ParametroTipoObbligatorioPredefinitoNote
<id>...stringuno tra <id>, --tag o --foldernessunoUno o più ID schermo scr_. Diversi ID vengono eseguiti come una singola richiesta flotta.
--tag TAGstringuno tra <id>, --tag o --foldernessunoOgni schermo attivo con questo tag.
--folder IDstringuno tra <id>, --tag o --foldernessunoOgni schermo attivo in questa cartella schermi sfd_ e nelle cartelle al suo interno.
--set TAGSstringesattamente un’azionenessunoSostituisci l’intero set con questi tag separati da virgola, come Lobby,Floor2.
--add TAGSstringesattamente un’azionenessunoAggiungi questi tag separati da virgola.
--remove TAGSstringesattamente un’azionenessunoRimuovi questi tag separati da virgola.
--clearbooleanesattamente un’azionespentoRimuovi ogni tag.
--expect-rev REVISIONstringnonessunoSolo un ID schermo. Condizione di revisione opzionale.
screenrig screen tag scr_01EXAMPLESCREEN00000000 --set Lobby,Floor2
screenrig screen tag scr_01EXAMPLESCREEN00000000 --add Spring
screenrig screen tag --tag Lobby --add Spring
screenrig screen tag --folder sfd_01EXAMPLEFOLDER000000000 --add Spring

Un tag è da 1 a 32 lettere o cifre, e uno schermo porta al massimo 16 tag unici. I tag selezionano flotte; non sono mai autorizzazione e non raggiungono mai il Player. Cambiare i tag aggiorna la revisione dello schermo, non quella del manifesto. Per uno schermo l’involucro è lo schermo aggiornato. --add e --remove leggono prima lo schermo e scrivono il nuovo set protetto da --expect-rev o dalla revisione appena letta, così un cambiamento concorrente restituisce revision_conflict (exit 6) invece di essere sovrascritto; rilancia il comando. In una flotta, --add e --remove si applicano atomicamente contro il set memorizzato di ogni schermo, e uno schermo che supererebbe 16 tag fallisce nel proprio risultato con invalid_request.

Ovunque i tag cambino (screen tag, un aggiornamento dello schermo tramite l'API, l'editor di tag della dashboard), il levels della risposta elenca, sotto gained e lost, le campagne il cui pubblico di tag lo schermo ha raggiunto o lasciato, ciascuna con il suo source (campaign), il suo id, il conteggio di screens e, quando la campagna ha una copertura, reach_before e reach_after. Un screen tag di flotta li somma sulla flotta. Leggi levels.lost prima di considerare innocua una modifica di tag: rimuovere l'ultimo tag corrispondente dagli schermi di una campagna svuota quel gruppo e fa scattare le notifiche reach_dropped e group_empty.

screen move#

Sposta schermi e cartelle di schermi in una cartella di schermi, o di nuovo nella radice del progetto.

screen move <id>... (--folder ID | --root) [--note TEXT]
ParametroTipoObbligatorioPredefinitoNote
<id>...stringsìnessunoID schermo scr_ e ID cartella di schermi sfd_ in qualsiasi combinazione, ciascuno una sola volta, al massimo 1000 in tutto.
--folder IDstringuno tra --folder o --rootnessunoLa cartella di schermi sfd_ di destinazione.
--rootbooleanuno tra --folder o --rootspentoSposta nella radice del progetto, fuori da ogni cartella.
--note TEXTstringnonessunoUna nota per la persona che revisiona la modifica: testo semplice, massimo 280 caratteri. Ignorata se la modifica si applica subito.
screenrig screen move scr_01EXAMPLESCREEN00000000 --folder sfd_01EXAMPLEFOLDER000000000
screenrig screen move sfd_01EXAMPLEFOLDER000000000 --root

Lo spostamento è un’unica richiesta tutto o niente. Una cartella si sposta con tutto il suo contenuto e non può essere spostata in se stessa né in una cartella al suo interno; le cartelle si annidano fino a 10 livelli. Gli elementi già presenti nella destinazione restano come sono e non vengono contati. data.screens e data.folders contano ciò che è stato spostato. data.levels elenca, sotto gained e lost, le campagne il cui pubblico di cartella gli schermi spostati hanno raggiunto o lasciato (source campaign, con reach_before e reach_after) e le playlist predefinite di cartella che hanno iniziato o smesso di mostrare (source folder). Gli schermi risolvono di nuovo la loro playlist entro circa 15 secondi; screen show riporta effective_playlist, e campaign explain SCREEN_ID ne spiega il motivo.

Un chiamante limitato alle cartelle di schermi sposta solo schermi e cartelle del proprio ambito in una cartella dello stesso ambito; qualsiasi altra cosa, radice del progetto compresa, fa rifiutare l’intero spostamento con outside_screen_scope (exit 3). Uno spostamento dentro o fuori da una cartella protetta risponde pending_review con una revisione protected_change che decide un secondo approvatore, quindi non ripetere la scrittura; --note spiega all’approvatore il motivo. Dopo una richiesta interrotta, riesegui lo stesso identico comando per riutilizzare la chiave di idempotenza salvata.

screen folder list#

Elenca le cartelle di schermi del progetto come albero, con gli schermi attivi direttamente contenuti in ciascuna e la sua playlist predefinita.

screen folder list
screenrig screen folder list

Restituisce ogni cartella di schermi del progetto, al massimo 1000, ordinate per nome. data.items contiene per ogni cartella id, name, parent_id (null nella radice del progetto), default_playlist_id se impostato, protected se impostato, screens (gli schermi attivi direttamente al suo interno, non quelli delle cartelle sottostanti) e revision. Con --human, l’output è l’albero, una riga per cartella con il suo percorso. La cartella di uno schermo è folder_id in screen list e screen show, assente nella radice del progetto. Basta l’accesso di sola lettura.

screen folder show#

Ispeziona una cartella di schermi.

screen folder show <id>
ParametroTipoObbligatorioPredefinitoNote
<id>stringsìnessunoL’ID della cartella di schermi sfd_.
screenrig screen folder show sfd_01EXAMPLEFOLDER000000000

Restituisce una cartella con i campi che restituisce screen folder list. Basta l’accesso di sola lettura.

screen folder create#

Crea una cartella di schermi nella radice del progetto o all’interno di un’altra cartella.

screen folder create --name NAME [--parent ID] [--default-playlist-id ID] [--note TEXT]
ParametroTipoObbligatorioPredefinitoNote
--name NAMEstringsìnessunoNome della cartella, senza spazi iniziali e finali: da 1 a 100 caratteri, nessun carattere di controllo, diverso da . e da .., e univoco tra le cartelle dello stesso livello (resource_conflict, exit 5).
--parent IDstringnoradice del progettoCreala all’interno di questa cartella di schermi sfd_.
--default-playlist-id IDstringnonessunoLa playlist approvata pl_ che i suoi schermi mostrano quando non ne hanno una propria, a meno che una cartella più vicina allo schermo non ne imposti una (playlist_not_approved, exit 5).
--note TEXTstringnonessunoUna nota per la persona che revisiona la modifica: testo semplice, massimo 280 caratteri. Ignorata se la modifica si applica subito.
screenrig screen folder create --name "North Tower"
screenrig screen folder create --name "Level 2" --parent sfd_01EXAMPLEFOLDER000000000 --default-playlist-id pl_01EXAMPLEPLAYLIST000000

Un’organizzazione contiene al massimo 1000 cartelle in tutti i suoi progetti (quota_exceeded), annidate fino a 10 livelli (invalid_request). Inserisci gli schermi con screen move. Una cartella indica poi i suoi schermi nei comandi per la flotta e come pubblico di una campagna: vedi Cartelle di schermi.

Un chiamante limitato alle cartelle di schermi crea cartelle solo all’interno del proprio ambito: --parent deve essere una sua cartella (outside_screen_scope, exit 3). Una cartella creata in una cartella protetta risponde pending_review con una revisione protected_change che decide un approvatore diverso da te e dalla persona per cui lavori, quindi non ripetere la scrittura; --note spiega all’approvatore il motivo. Dopo una richiesta interrotta, riesegui lo stesso identico comando per riutilizzare la chiave di idempotenza salvata.

screen folder update#

Rinomina una cartella di schermi, spostala con tutto il suo contenuto, oppure imposta o cancella la sua playlist predefinita.

screen folder update <id> [--name NAME] [--parent ID | --root] [--default-playlist-id ID | --clear-default] [--expect-rev REVISION] [--note TEXT]
screen folder update <id> --unprotect [--expect-rev REVISION] [--note TEXT]
ParametroTipoObbligatorioPredefinitoNote
<id>stringsìnessunoL’ID della cartella di schermi sfd_.
--name NAMEstringnoinvariatoNuovo nome della cartella, con le regole di screen folder create.
--parent IDstringnoinvariatoSpostala, con tutto il suo contenuto, sotto questa cartella di schermi sfd_. Non con --root.
--rootbooleannospentoSpostala nella radice del progetto. Non con --parent.
--default-playlist-id IDstringnoinvariatoLa playlist approvata pl_ che i suoi schermi mostrano quando non ne hanno una propria. Non con --clear-default.
--clear-defaultbooleannospentoRimuovi la sua playlist predefinita. Non con --default-playlist-id.
--unprotectbooleannospentoPropone di rimuovere la protezione della cartella. Va inviata da sola, senza nessuna delle opzioni qui sopra, e la revisione viene decisa da un secondo approvatore.
--expect-rev REVISIONstringnonessunoPrecondizione opzionale di revisione. Ometti per scrivere la risorsa corrente. Un valore obsoleto fornito è revision_conflict: rifetch, reapply, retry.
--note TEXTstringnonessunoUna nota per la persona che revisiona la modifica: testo semplice, massimo 280 caratteri. Ignorata se la modifica si applica subito.

Indica almeno uno tra --name, --parent, --root, --default-playlist-id, --clear-default o --unprotect.

screenrig screen folder update sfd_01EXAMPLEFOLDER000000000 --name "Northern"
screenrig screen folder update sfd_01EXAMPLEFOLDER000000000 --root
screenrig screen folder update sfd_01EXAMPLEFOLDER000000000 --default-playlist-id pl_01EXAMPLEPLAYLIST000000 --expect-rev 3
screenrig screen folder update sfd_01EXAMPLEFOLDER000000000 --clear-default
screenrig screen folder update sfd_01EXAMPLEFOLDER000000000 --unprotect --note "Menu boards move next week"

Una cartella non può essere spostata in se stessa né in una cartella al suo interno, e gli stessi valori non hanno alcun effetto. Uno spostamento o una modifica del valore predefinito risolve di nuovo gli schermi al suo interno entro circa 15 secondi, e data.levels elenca le campagne il cui pubblico di cartella quegli schermi hanno raggiunto o lasciato (source campaign) e le playlist predefinite di cartella che hanno ottenuto o perso (source folder).

Una rinomina ha effetto immediato su una cartella protetta. Uno spostamento, o una playlist predefinita, di una cartella che è protetta o ne contiene una risponde pending_review con una revisione protected_change che decide un secondo approvatore (un approvatore diverso da te e dalla persona per cui lavori; altrimenti second_approver_required, exit 3). Fino ad allora nulla cambia, quindi non ripetere la scrittura; --note spiega all’approvatore il motivo. Una persona che può approvare protegge una cartella nella dashboard; la CLI propone soltanto di rimuovere la protezione con --unprotect. Vedi Cartelle protette. Un chiamante limitato alle cartelle di schermi modifica solo cartelle del proprio ambito e le sposta solo in una cartella superiore dello stesso ambito (outside_screen_scope, exit 3), e mai la protezione di una cartella nominata dal suo ambito.

screen folder delete#

Elimina una cartella di schermi; i suoi schermi e le sue cartelle salgono di un livello.

screen folder delete <id> [--expect-rev REVISION] [--note TEXT]
ParametroTipoObbligatorioPredefinitoNote
<id>stringsìnessunoL’ID della cartella di schermi sfd_.
--expect-rev REVISIONstringnonessunoPrecondizione opzionale di revisione. Ometti per scrivere la risorsa corrente. Un valore obsoleto fornito è revision_conflict: rifetch, reapply, retry.
--note TEXTstringnonessunoUna nota per la persona che revisiona la modifica: testo semplice, massimo 280 caratteri. Ignorata se la modifica si applica subito.
screenrig screen folder delete sfd_01EXAMPLEFOLDER000000000
screenrig screen folder delete sfd_01EXAMPLEFOLDER000000000 --expect-rev 3

Elimina solo la cartella: i suoi schermi e le sue cartelle salgono nella cartella superiore (la radice del progetto se non ne ha una) e quegli schermi risolvono di nuovo la loro playlist. data è id, deleted true e levels, le campagne e le playlist predefinite di cartella che gli schermi spostati hanno ottenuto o perso, con reach_before e reach_after di ciascuna campagna. Un pubblico di campagna che nomina la cartella rifiuta l’eliminazione con resource_conflict (exit 5): modifica o elimina prima quelle campagne.

Un chiamante limitato alle cartelle di schermi elimina solo cartelle all’interno del proprio ambito, mai una cartella nominata dal suo ambito (outside_screen_scope, exit 3). Una cartella che è protetta o ne contiene una risponde pending_review con una revisione protected_change che decide un secondo approvatore, quindi non ripetere la scrittura; --note spiega all’approvatore il motivo.

Risultati flotta

Con più ID schermo o --tag, screen assign, screen reload, screen toast e screen tag eseguono un’azione senza limite di schermi. La CLI segue automaticamente le pagine di risultati limitate, attende quando i budget di controllo sono esauriti e mantiene la stessa chiave e la stessa flotta selezionata per tutto il tempo. --tag seleziona solo gli schermi attivi; gli ID possono indicare qualsiasi schermo. Un solo ID schermo mantiene la risposta per schermo singolo. I comandi di flotta non accettano --expect-rev, perché i controlli di revisione sono per schermo. Ogni comando di flotta porta una chiave di idempotenza. Dopo una richiesta interrotta, come una connessione persa, riesegui lo stesso comando per riprodurre gli schermi finiti senza ripetere i loro effetti. Dopo una risposta definitiva con errori, riprova solo gli ID falliti: rieseguire l’intero comando agisce di nuovo su ogni schermo. Riutilizzare la stessa --idempotency-key esplicita entro 24 ore restituisce invece la risposta registrata.

Un comando per la flotta accetta ID schermo, --tag TAG o --folder ID; indicarne più di uno è un errore di utilizzo (exit 2).

La busta mantiene ok: true. Il successo parziale è una risposta normale, non un errore di trasporto:

{
  "ok": true,
  "data": {
    "action": "reload",
    "matched": 3, "succeeded": 2, "failed": 1,
    "results": [
      { "screen_id": "scr_LOBBY", "status": "ok", "reload": { "reload_id": "…", "expires_at": "…", "state": "sent" } },
      { "screen_id": "scr_GONE", "status": "failed", "problem": { "code": "not_found", "status": 404 } },
      { "screen_id": "scr_ENTRANCE", "status": "ok", "reload": { "reload_id": "…", "expires_at": "…", "state": "queued" } }
    ]
  },
  "warnings": [{ "code": "fleet_partial_failure", "message": "1 of 3 screens failed; 2 succeeded." }]
}

Un risultato ok contiene il risultato per singolo schermo: revision per assign, revision e tags per modifiche tag, reload per ricarica e toast per toast. Un risultato failed contiene il problema che la richiesta dello schermo avrebbe restituito. I limiti per schermo si applicano ancora dentro un’azione di flotta, quindi una ricarica o un toast di flotta può riportare rate_limited per uno schermo appena ricaricato o con toast; riprovare quell’id schermo più tardi. I limiti per schermo sono 6 ricariche e 20 toast al minuto. Le ricariche e i toast di flotta consumano anche un budget organizzazione di 600 schermi al minuto: il server si mette in pausa quando il budget residuo è esaurito, e la CLI rispetta Retry-After prima di continuare automaticamente.

RisultatoCodice uscitaAvviso
Ogni schermo abbinato ha avuto successo0nessuno
Alcuni o tutti gli schermi hanno fallitoIl codice del primo schermo fallito, come 4 per not_found o 6 per revision_conflictfleet_partial_failure
Nessuno schermo corrisponde0fleet_no_match
Selettore o azione malformati2 o il codice della richiesta; nessuna modifica allo schermonessuno

Cartelle schermi

Una cartella di schermi organizza gli schermi per luogo. L’id di una cartella inizia con sfd_, e uno schermo sta al massimo in una cartella, riportata come folder_id in screen show e screen list e assente alla radice del progetto. Un’organizzazione contiene al massimo 1000 cartelle in tutti i suoi progetti, annidate fino a 10 livelli, con nomi da 1 a 100 caratteri univoci tra le cartelle sorelle. I tag restano per i gruppi che attraversano i luoghi.

screen folder list
screen folder show <id>
screen folder create --name NAME [--parent ID] [--default-playlist-id ID] [--note TEXT]
screen folder update <id> [--name NAME] [--parent ID | --root] [--default-playlist-id ID | --clear-default] [--unprotect] [--expect-rev REVISION] [--note TEXT]
screen folder delete <id> [--expect-rev REVISION] [--note TEXT]
screen move <id>... (--folder ID | --root) [--note TEXT]
screenrig screen folder create --name "North Tower"
screenrig screen folder create --name "Level 2" --parent sfd_01EXAMPLEFOLDER000000000 --default-playlist-id pl_01EXAMPLEPLAYLIST000000
screenrig screen move scr_01EXAMPLESCREEN00000000 --folder sfd_01EXAMPLEFOLDER000000000

screen folder list restituisce tutte le cartelle in data.items con id, name, parent_id (null alla radice del progetto), default_playlist_id se impostato, screens (gli schermi attivi direttamente al suo interno) e revision. screen move accetta id di schermi e di cartelle in qualsiasi combinazione, al massimo 1000 in un’unica richiesta tutto o niente; una cartella si sposta con tutto il suo contenuto e non può essere spostata dentro se stessa né dentro una cartella che contiene. screen list --folder ID elenca solo gli schermi direttamente dentro una cartella.

Su ogni comando di flotta che accetta --tag TAG, --folder ID seleziona ogni schermo attivo di quella cartella e di ogni cartella al suo interno. Una campagna accetta lo stesso: --folder ID su campaign create e campaign update, oppure una regola {"folder":"sfd_…"} in --audience, che si combina con le regole di tag come in {"all":[{"folder":"sfd_BUILDING"},{"tag":"overhead"}]}.

La playlist predefinita di una cartella è ciò che i suoi schermi mostrano quando non hanno una playlist propria. Vince la cartella più vicina sopra uno schermo che ne imposta una, e effective_playlist riporta source folder con l’id della cartella come entry_id. Un takeover, una campagna, una programmazione e la playlist assegnata allo schermo stesso hanno tutti la precedenza su di essa; vedi Programmazioni e takeover. La playlist deve essere approvata (playlist_not_approved, exit 5).

Spostare schermi o una cartella, o cambiare la playlist predefinita di una cartella, risolve di nuovo gli schermi interessati entro circa 15 secondi. Il levels della risposta elenca, sotto gained e lost, le campagne il cui pubblico di cartella quegli schermi hanno raggiunto o lasciato e le playlist predefinite di cartella che hanno iniziato o smesso di mostrare, ciascuna con il suo source (campaign o folder), il suo id e il conteggio di screens. Eliminare una cartella non elimina nulla al suo interno: i suoi schermi e le sue cartelle salgono nella cartella superiore, e resource_conflict (exit 5) rifiuta l'eliminazione finché il pubblico di una campagna nomina la cartella. L'eliminazione risponde con 200 con levels, come uno spostamento.

Le scritture richiedono l’accesso Gestisci: una sessione Propose risponde 403 insufficient_access. Una modifica che raggiunge una cartella protetta attende un secondo approvatore e risponde pending_review, e --note TEXT spiega all’approvatore il motivo. Ogni scrittura aggiunge screen.folder_created, screen.folder_updated, screen.folder_deleted o screen.moved agli eventi del progetto.

Altri gruppi di comandi