Links da frota
Um link de frota é uma URL do Player que você coloca em um gerenciador de dispositivos, como um app de quiosque no console Google Admin. Cada dispositivo que a abre se torna sua própria tela neste projeto, sem código de pareamento. Uma organização tem no máximo 50 links de frota em todos os seus projetos.
Cada nova tela recebe as tags, os campos e a playlist do link, e um rótulo do dispositivo: primeiro o ID de ativo do administrador, depois a localização, ou então o próximo rótulo padrão. Um dispositivo mantém sua única tela entre recarregamentos e reinicializações. Após um powerwash ou reinstalação, um dispositivo que reporta o número de série ou DUID de uma tela criada por um link de frota deste projeto recupera essa tela em vez de criar outra, assim que sua chave antiga ficar inativa por dez minutos. screen show retorna fleet_link_id para uma tela criada por um link de frota, e --human imprime Created by fleet link: flk_…. O id permanece após o link ser excluído.
Um link pode terminar no momento que você escolher: --expires-at o impede de criar e recuperar telas a partir de então, como faz um link desativado, e um dispositivo que o abre mostra seu código de pareamento. As telas que ele criou continuam reproduzindo. fleet-links show --android-provisioning imprime o payload que provisiona um dispositivo Android restaurado de fábrica como proprietário do dispositivo; veja Proprietário do dispositivo Android por código QR.
A URL, https://play.screenrig.ai/player/#fleet=srfl_…, é uma credencial que cria telas. Dê-a somente ao gerente do dispositivo. O segredo viaja no fragmento da URL, que os navegadores nunca enviam a um servidor. Uma credencial somente leitura recebe data.url vazia com url_redacted: true, e a saída humana então diz URL: withheld from a Read only credential. Caso contrário, a saída humana imprime a URL sob um rótulo Sensitive fleet link URL, e fleet-links list --human nunca a imprime. O CLI verifica uma URL retornada antes de imprimi-la: HTTPS, o caminho /player/ e o segredo somente em #fleet=. Ele retém uma URL que falha na verificação, com o aviso fleet_link_url_withheld, e mantém respostas de link de frota fora do seu log de operação.
| Código do problema | Sair | Significado |
|---|---|---|
fleet_link_limit_reached | 5 | A organização já tem 50 links de frota. Nada foi criado. Exclua um primeiro. |
invalid_request | 8 | Um campo foi recusado, como um --playlist-id que não nomeia nenhuma playlist neste projeto. error.next é playlist list para uma playlist desconhecida. |
not_found | 4 | Nenhum link de frota tem este id no projeto. |
revision_conflict | 6 | A revisão --expect-rev estava desatualizada. Execute fleet-links show e tente novamente. |
fleet_link_secret_unavailable | 3 | fleet-links show --android-provisioning não recebeu nenhuma URL utilizável, como acontece com uma credencial somente leitura. Um login Manage a recebe. |
fleet-links create#
Criar um link de frota e receber sua URL do Player.
fleet-links create --name NAME [--tag TAG]... [--field NAME=VALUE]... [--playlist-id ID] [--max-screens N]
[--expires-at TIME] [--disabled]| Parâmetro | Tipo | Obrigatório | Padrão | Notas |
|---|---|---|---|---|
--name NAME | string | sim | nenhum | O nome do link, de 1 a 80 caracteres sem caracteres de controle. |
--tag TAG | string | não | sem tags | Uma tag para cada nova tela, de 1 a 32 letras ou dígitos. Repita-a, ou liste tags separadas por vírgula; no máximo 16. |
--field NAME=VALUE | string | não | sem campos | Um campo para cada nova tela, que os cartões leem como {screen.field.NAME}. NAME tem de 1 a 32 letras minúsculas, dígitos ou sublinhados, e VALUE de 1 a 200 caracteres. Repita-o; no máximo 32. |
--playlist-id ID | string | não | nenhum | A playlist pl_ atribuída a cada nova tela. |
--max-screens N | integer | não | sem limite | O máximo de telas que o link cria, de 1 a 10000. |
--expires-at TIME | string | não | nunca | Quando o link deixa de criar e recuperar telas: um horário RFC 3339 com segundos e fuso, como 2026-12-31T23:59:59Z. Um horário que já passou faz o link expirar na hora. |
--disabled | boolean | não | desligado | Criar desativado. Não cria telas até fleet-links update --enable. |
screenrig fleet-links create --name "Lobby displays" --tag Lobby --tag Floor2 --playlist-id pl_01EXAMPLEPLAYLIST000000screenrig fleet-links create --name "Trade show" --field booth=A12 --expires-at 2026-12-31T23:59:59ZO envelope é o link da frota com sua URL do Player em data.url. Coloque essa URL no gerenciador de dispositivos. Após uma criação interrompida ou ambígua, execute novamente o comando idêntico dentro de 24 horas: ele reutiliza a chave de idempotência salva, e o servidor retorna o mesmo link em vez de criar outro.
fleet-links list#
Listar os links da frota deste projeto, do mais antigo para o mais recente.
fleet-links listscreenrig fleet-links listUma credencial somente leitura recebe cada data.items[].url vazia com url_redacted: true. --human imprime ID, LABEL, ENABLED, SCREENS, TAGS e LAST_USED, acrescenta EXPIRES enquanto um link listado tem expiração e marca com (expired) o que já a passou, e nunca imprime a URL. SCREENS é o número de telas que o link criou, ou criado/máximo com --max-screens; recuperações não são contadas.
fleet-links show#
Inspecione um link de frota e receba sua URL do Player.
fleet-links show <id> [--android-provisioning]| Parâmetro | Tipo | Obrigatório | Padrão | Notas |
|---|---|---|---|---|
<id> | string | sim | nenhum | O id do link da frota flk_. |
--android-provisioning | boolean | não | desligado | Imprime o JSON de provisionamento como proprietário do dispositivo Android deste link no lugar dos detalhes, para codificar como QR code em um dispositivo restaurado de fábrica. Ele contém o segredo do link, então exige um login Manage. |
screenrig fleet-links show flk_01EXAMPLELINK0000screenrig fleet-links show flk_01EXAMPLELINK0000 --android-provisioningscreens_created conta as telas que o link criou, e last_used_at é a última vez que criou ou recuperou uma. expires_at está presente quando o link tem expiração, e a saída legível a marca com (expired) depois que ela passou.
Com --android-provisioning, data.id e data.provisioning substituem os detalhes do link. O JSON contém o segredo do link: mostre o QR code dele apenas à pessoa que está com o dispositivo. Uma credencial somente leitura não recebe nenhuma URL para montá-lo e obtém fleet_link_secret_unavailable (saída 3). Proprietário do dispositivo Android por código QR lista o payload.
fleet-links update#
Alterar o que um link de frota fornece às telas que cria a partir de agora.
fleet-links update <id> [--name NAME] [--enable | --disable] [--tag TAG]... [--clear-tags]
[--field NAME=VALUE]... [--clear-fields]
[--playlist-id ID | --clear-playlist] [--max-screens N | --clear-max-screens]
[--expires-at TIME | --clear-expires-at] [--expect-rev REVISION]| Parâmetro | Tipo | Obrigatório | Padrão | Notas |
|---|---|---|---|---|
<id> | string | sim | nenhum | O id do link da frota flk_. |
--name NAME | string | pelo menos uma alteração | inalterado | 1 a 80 caracteres. |
--enable | boolean | pelo menos uma alteração | desligado | O link cria e recupera telas novamente. |
--disable | boolean | pelo menos uma alteração | desligado | O link não cria nem recupera telas; um dispositivo que o abre mostra seu código de pareamento em vez disso. |
--tag TAG | string | pelo menos uma alteração | inalterado | Substitui o conjunto inteiro de tags. Repita, ou liste tags separadas por vírgula; no máximo 16. |
--clear-tags | boolean | pelo menos uma alteração | desligado | Novas telas não recebem tags. |
--field NAME=VALUE | string | pelo menos uma alteração | inalterado | Substitui todo o conjunto de campos, como em fleet-links create. Repita-o; no máximo 32. |
--clear-fields | boolean | pelo menos uma alteração | desligado | As novas telas não recebem campos. |
--playlist-id ID | string | pelo menos uma alteração | inalterado | A playlist pl_ para novas telas. |
--clear-playlist | boolean | pelo menos uma alteração | desligado | Novas telas não recebem playlist. |
--max-screens N | integer | pelo menos uma alteração | inalterado | O máximo de telas que o link cria no total, de 1 a 10000. |
--clear-max-screens | boolean | pelo menos uma alteração | desligado | Remover o limite. |
--expires-at TIME | string | pelo menos uma alteração | inalterado | Define ou move a expiração: um horário RFC 3339 com segundos e fuso. Um horário que já passou faz o link expirar na hora. |
--clear-expires-at | boolean | pelo menos uma alteração | desligado | Remove a expiração; o link nunca expira. |
--expect-rev REVISION | string | não | nenhum | Pré-condição opcional de revisão. |
screenrig fleet-links update flk_01EXAMPLELINK0000 --playlist-id pl_01EXAMPLEPLAYLIST000000update altera apenas os campos que você passar, e somente para telas que o link criar a partir de agora. Telas já criadas mantêm suas tags, playlist e rótulo. Um link expirado se comporta como um desativado até que sua expiração seja alterada ou removida. A URL permanece inalterada; use rotate para substituí-la.
fleet-links rotate#
Substituir a URL de um link de frota e receber a nova.
fleet-links rotate <id> [--expect-rev REVISION]| Parâmetro | Tipo | Obrigatório | Padrão | Notas |
|---|---|---|---|---|
<id> | string | sim | nenhum | O id do link da frota flk_. |
--expect-rev REVISION | string | não | nenhum | Pré-condição opcional de revisão. |
screenrig fleet-links rotate flk_01EXAMPLELINK0000O envelope carrega a nova URL em data.url. A URL antiga para de funcionar imediatamente: um dispositivo que a abre mostra seu código de pareamento. Monitores cujo link já foi criado continuam exibindo, porque um Player pareado nunca apresenta o link novamente. Coloque a nova URL no gerenciador de dispositivos. Após uma rotação interrompida ou ambígua, execute novamente o comando idêntico: ele reutiliza a chave de idempotência salva, e o servidor retorna a rotação que já aconteceu em vez de girar de novo.
fleet-links delete#
Excluir um link da frota. Sua URL para de funcionar imediatamente, e as telas que ele criou permanecem.
fleet-links delete <id> [--expect-rev REVISION]| Parâmetro | Tipo | Obrigatório | Padrão | Notas |
|---|---|---|---|---|
<id> | string | sim | nenhum | O id do link da frota flk_. |
--expect-rev REVISION | string | não | nenhum | Pré-condição opcional de revisão. |
screenrig fleet-links delete flk_01EXAMPLELINK0000Telas cujo link foi criado mantêm suas playlists e tags.
Migrar
migrate move para o projeto a mídia, as playlists, os layouts, as programações e as telas da sua plataforma de sinalização anterior. Roda no CLI, na sua máquina: a chave da plataforma é lida de um --credentials FILE de linhas NAME=VALUE, vai apenas para essa plataforma e nunca é armazenada, impressa, registrada em log nem enviada ao screenRIG, que vê apenas gravações comuns de mídia, playlist, link de frota, campanha e tela. migrate vendors lista as plataformas que ele lê, e o fallback files lê uma pasta ou .zip de mídia de qualquer outra plataforma.
Execute as etapas em ordem: migrate vendors (o que uma plataforma aceita), migrate scan (lê a conta e informa o que pode e o que não pode ser trazido; não precisa de login no screenRIG), migrate apply --dry-run (o plano), migrate apply (precisa de acesso Manage), depois migrate pair para cada tela.
--dir DIR é o diretório de migração, ./screenrig-migration-VENDOR por padrão, criado com o modo 0700. Ele contém scan.json (o scan e seu relatório), map.json (em qual objeto cada item antigo se tornou, vinculado a esta URL da API, projeto, fornecedor e conta de origem) e staging/ (downloads em andamento). apply e pair usam o único diretório screenrig-migration-* no diretório de trabalho, ou aceitam --dir; só um deles roda em um diretório por vez.
| Código do problema | Sair | Significado |
|---|---|---|
migration_dir_mismatch | 2 | O diretório foi criado para outro projeto, URL da API, fornecedor ou conta de origem. Use outro --dir. |
vendor_refused | 3 | A plataforma recusou a chave. Gere uma chave somente leitura (migrate vendors VENDOR mostra como), corrija o arquivo --credentials e execute o mesmo comando de novo. |
vendor_not_found | 4 | A plataforma respondeu 404. --url geralmente está errado. |
vendor_rate_limited | 7 | A plataforma está limitando a taxa da chave. Execute o comando de novo mais tarde. |
vendor_file_gone | 8 | O endereço de um arquivo de mídia expirou ou é protegido. Executar migrate scan de novo o renova, e --files fornece um arquivo que ainda falha. |
vendor_file_stalled | 8 | Um download de mídia ficou em silêncio. Execute apply novamente. |
vendor_bad_response | 9 | A plataforma enviou uma resposta que o CLI não consegue usar. |
vendor_unavailable | 9 ou 10 | Não foi possível acessar a plataforma ou ela continuou falhando. |
migrate vendors#
Lista as plataformas que migrate lê, o que cada uma aceita e como gerar sua chave somente leitura.
migrate vendors [VENDOR]| Parâmetro | Tipo | Obrigatório | Padrão | Notas |
|---|---|---|---|---|
VENDOR | string | não | todas as plataformas | O id de uma plataforma. Um id que não consta da lista é usage_error (exit 2) e nomeia os ids que existem. |
screenrig migrate vendors
screenrig migrate vendors filesFunciona offline e não precisa de login. data.vendors contém, para cada plataforma, id e name; inputs, com as flags que ela aceita (cada uma com flag e required, e values para uma região) e as linhas credentials que o arquivo de chave contém (name, secret, required e help); connect, os passos que geram uma chave somente leitura; maps, o que é migrado; skips, o que não é; docs; e example, um comando migrate scan funcional. As plataformas são ordenadas por id, com files por último. files aceita uma pasta ou .zip e um fuso horário opcional, e não precisa de chave.
migrate scan#
Lê uma conta de sinalização e informa o que pode e o que não pode ser trazido. Grava scan.json e não envia nada ao screenRIG.
migrate scan --from VENDOR [--url ADDRESS] [--region REGION] [--timezone ZONE] [--files PATH]
[--credentials FILE] [--dir DIR]| Parâmetro | Tipo | Obrigatório | Padrão | Notas |
|---|---|---|---|---|
--from VENDOR | string | sim | nenhum | A plataforma a ler: um id de migrate vendors, ou files. |
--url ADDRESS | string | por plataforma | nenhum | O endereço de uma plataforma auto-hospedada. |
--region REGION | string | por plataforma | nenhum | A região de uma conta hospedada, para uma plataforma que tem regiões. |
--timezone ZONE | string | não | nenhum | Um nome de fuso horário IANA como America/Toronto, definido em cada tela cuja plataforma antiga não nomeia nenhum. Sem ele, a tela segue o fuso que seu Player informa. |
--files PATH | caminho | por plataforma | nenhum | Uma pasta ou .zip. Com --from files, contém a mídia; com outra plataforma, contém os originais que a API dessa plataforma não consegue fornecer, associados à sua mídia pelo nome do arquivo. |
--credentials FILE | caminho | por plataforma | nenhum | O arquivo de chave: linhas NAME=VALUE com os nomes que migrate vendors VENDOR lista. Linhas em branco e comentários # são ignorados, e um valor pode ficar entre um par de aspas. Um nome obrigatório ausente do arquivo é usage_error (exit 2) e o nomeia. |
--dir DIR | caminho | não | ./screenrig-migration-VENDOR | O diretório de migração. |
screenrig migrate scan --from files --files ./signage-media
screenrig migrate scan --from files --files ./signage-media.zip --dir ./old-signage --timezone America/TorontoUma flag que a plataforma não aceita, ou que ela precisa e não tem, é usage_error (exit 2) e nomeia o que a plataforma aceita. Nenhuma flag recebe a própria chave. Um novo scan substitui scan.json e mantém map.json, e sai com 0 ao terminar, mesmo quando alguns itens não podem ser trazidos.
data é o relatório: vendor, label, scanned_at, found e importable (contagens de media, playlists, layouts, schedules, groups e screens), not_imported (cada um com kind, source_id, name, um reason e, em geral, um passo next), lossy (cada um com kind, source_id, name e o change que ocorre no caminho), notes, dir e scan_file. Um arquivo que a plataforma fornece é baixado em apply. Um arquivo que ela não fornece, ou fornece apenas como cópia recodificada, é associado pelo nome em --files; sem correspondência, ou com várias, ele fica em not_imported ou lossy com o passo que o corrige.
--from files não precisa de chave. Lê cada arquivo de imagem, vídeo e áudio pelo conteúdo, não pela extensão. Um playlists.csv opcional na raiz tem as colunas playlist, file (um caminho ou um nome de arquivo único), duration (segundos) e order; sem ele, cada pasta que contém mídia vira uma playlist em ordem natural de nome de arquivo, e os arquivos na raiz formam uma playlist com o nome da pasta ou do zip. Um screens.csv opcional tem name, group (vários separados por ;), playlist e timezone, e cada linha vira uma tela em espera com seus grupos como tags. Os demais arquivos e entradas de zip criptografadas ficam em not_imported. Um scan files não tem programações: crie-as com campaign create depois que as playlists existirem.
migrate apply#
Importa o que o scan encontrou: mídia, playlists e layouts, telas em espera e campanhas. É seguro executar de novo.
migrate apply [--dir DIR] [--dry-run] [--only KINDS] [--folder ID] [--canvas WIDTHxHEIGHT]
[--credentials FILE] [--concurrency N] [--no-transcode]| Parâmetro | Tipo | Obrigatório | Padrão | Notas |
|---|---|---|---|---|
--dir DIR | caminho | não | o único diretório ./screenrig-migration-* | O diretório de migração que contém scan.json. |
--dry-run | boolean | não | desligado | Lê o projeto e imprime o plano. Não grava nada e não precisa de chave. |
--only KINDS | string | não | todos os quatro | Separados por vírgula, cada um no máximo uma vez: media, playlists, screens, schedules. |
--folder ID | string | não | uma nova pasta chamada Imported from e o nome da plataforma | Uma pasta de mídia existente (mfd_…) para a mídia importada. |
--canvas WIDTHxHEIGHT | string | não | 1920x1080 | O canvas das playlists simples, com cada lado de pelo menos 16 pixels. Um layout mantém seu próprio tamanho. |
--credentials FILE | caminho | não | nenhum | O arquivo de chave, lido somente quando um arquivo de mídia é baixado da plataforma. |
--concurrency N | integer | não | 4 | Mídias importadas ao mesmo tempo, de 1 a 8. |
--no-transcode | boolean | não | desligado | Envie os bytes da fonte sem alterações, como media upload faz. |
screenrig migrate apply --dry-run
screenrig migrate apply --dir ./screenrig-migration-files
screenrig migrate apply --only media,playlists --concurrency 2apply importa em ordem: a mídia em uma pasta, as playlists e os layouts, uma tela em espera por tela antiga e uma campanha por programação que as campanhas conseguem expressar. Lê a plataforma de novo apenas para baixar arquivos de mídia. Uma playlist tem uma página por item: imagens e vídeos preenchem o canvas, um endereço web vira uma página iframe, o áudio vira a trilha sonora e uma playlist aninhada é incorporada. Um layout vira uma playlist em seu próprio canvas, com uma página por item de sua zona principal. Uma programação que se repete por mês, ano, hora ou minuto, ou em um dia da semana numerado do mês, não pode virar campanha: scan a lista em not_imported.
--dry-run lê apenas o projeto e responde data.plan (para media, playlists, layouts, screens e schedules: contagens de create, reuse, recreate, waiting e fail), data.items, data.bytes a baixar, contagens de data.placeholders e data.project, os links de frota e as campanhas em uso em relação aos máximos de 50 e 100. O progresso vai para stderr como linhas JSON (migrate_progress com phase, done e total), ou como texto com --human. Uma nova execução reaproveita o que ainda existe, refaz o que você excluiu e nunca altera o que criou. Uma execução real responde data.applied (as mesmas contagens), data.waiting (itens que esperam por mídia ou por uma playlist que não foi importada, cada um com um reason), data.failed, data.placeholders (uma entrada por tela antiga com source_id, name e state: linked, unlinked, paired, finished ou waiting), data.tags e data.folder_id.
Um grupo vira uma tag formada por letras e dígitos, numerada quando colide com uma tag que outra tela possui. Uma campanha tem como alvo as tags dos grupos e das telas que sua programação nomeia, com suas datas, dias, horas e prioridade. Uma campanha lê suas datas e horas no fuso horário próprio de cada tela e precisa de uma playlist padrão (no_default_playlist): scan anota as telas que não a têm, e screen assign a define após o pareamento.
Uma tela em espera é um link de frota de uma tela que carrega o nome antigo, os grupos como tags e a playlist. Uma organização comporta no máximo 50 links de frota em todos os seus projetos; os demais ficam unlinked em data.placeholders e esperam por um código Player (migrate pair). Um Player que abre um link vira uma tela, e executar apply de novo dá a ele o nome antigo e o fuso horário e exclui o link. apply nunca imprime a URL de um link de frota: fleet-links show imprime.
Um item com falha mantém ok true com data.failed (cada um com key, name, code, status e detail) e o aviso migration_items_failed; os itens que dependem dele esperam, e o código de saída segue o status da última falha. Um arquivo de mídia que falha sozinho (um endereço expirado, uma resposta que não é um arquivo, um download que fica em silêncio) falha somente essa mídia; para um endereço expirado, execute migrate scan de novo. Uma recusa que se repetiria para todos os itens (quota_exceeded, campaign_limit_reached, insufficient_access, pending_review, a plataforma recusando a chave, uma conexão perdida) encerra a execução com data.stopped (code, detail e next) e o código de saída desse problema. Corrija a causa e execute o mesmo comando de novo: ele continua de onde parou.
migrate pair#
Pareia um código Player com uma tela em espera, com o nome antigo, a playlist, o fuso horário e as tags dela.
migrate pair <CODE...> --screen ID_OR_NAME [--dir DIR]| Parâmetro | Tipo | Obrigatório | Padrão | Notas |
|---|---|---|---|---|
<CODE...> | string | sim | nenhum | O código que o Player mostra, como ABC 234: seis caracteres de 23456789ABCDEFGHJKMNPQRSTUVWXYZ, em maiúsculas ou minúsculas. Espaços e hifens entre eles são ignorados, então não precisa de aspas. |
--screen ID_OR_NAME | string | sim | nenhum | A tela em espera: seu id de origem ou seu nome antigo exato. Um nome que duas telas compartilham lista os ids delas. |
--dir DIR | caminho | não | o único diretório ./screenrig-migration-* | O diretório de migração. |
screenrig migrate pair ABC 234 --screen "Front desk"
screenrig migrate pair ABC234 --screen 3 --dir ./old-signageExecute migrate apply primeiro: o pareamento precisa do mapa e da playlist que ele criou. pair reivindica o código para a tela com o nome antigo, define a playlist, o fuso horário e o campo migrated_from dela, define suas tags, exclui o link da tela em espera e registra o resultado. data contém source_id, name, screen_id, steps (paired, updated, tagged, link deleted, recorded), next e, quando esta execução reivindicou o código, public_url. Cada passo é registrado à medida que é concluído, então uma nova execução termina o que um pareamento interrompido deixou. Uma tela que já está pareada é resource_conflict (exit 5) e a nomeia. O Player conclui o pareamento na próxima vez que contata o serviço; screen show então informa state active.