Tecnologia

Tempo real, offline, ecrãs antigos: como isto é construído

Uma mudança de playlist chega ao ecrã em poucos segundos, a difusão continua quando a rede cai, e um ecrã comprado há oito anos continua a ser suportado. Eis os mecanismos que o tornam possível, e o que custam.

Controlo em tempo real — a plataforma e o ecrã

Demonstração

A si de jogar — Aumente o zoom, rode, aplique um efeito: o ecrã acompanha, e a plataforma devolve-lhe o que ele exibe.

Ecrã «Hall de entrada»

Ficha do ecrã · Hall de entrada Em linha
Visto em direto
Zoom×1.00
Rotação do conteúdo
Efeito
Animação

Cada ajuste é aplicado no ecrã imediatamente — sem reimplantação, sem intervenção no local.

A miniatura «Visto em direto» é uma captura real do ecrã devolvida pelo player, não uma pré-visualização local: vê o que está a ser difundido, mesmo a mil quilómetros. Cena de demonstração, vídeo simulado.

Cast de ecrã — do telefone para o ecrã da sala

Demonstração

A si de jogar — Introduza o código exibido no ecrã, escolha o que partilha, difunda: o telefone reproduz então o que a sala vê.

Partilha de ecrã

Salle Confluence

Abra smart-signage.app/cast
depois introduza o código

K7F2

Ecrã «Sala Confluence» — playlist em curso

Castsmart-signage.app/cast

Código exibido no ecrã

Partilhar

A partilha passa pelo navegador, em WebRTC: nada a instalar no telefone nem no computador, e nenhum cabo a ligar ao ecrã. O código muda a cada sessão. Demonstração — o fluxo de vídeo é simulado.

O tempo real: empurrar, em vez de perguntar

A forma habitual de atualizar um ecrã consiste em fazê-lo consultar o servidor a intervalos fixos: a cada cinco minutos, a cada quinze minutos. O conteúdo acaba por chegar, mas com o atraso do ciclo em curso, e cada ecrã consome rede mesmo quando nada mudou.

O Smart-Signage funciona no sentido inverso. A plataforma mantém um canal permanente com cada ecrã, em Server-Sent Events, e envia o evento no momento em que este ocorre. Modifica uma playlist ou um calendário: a alteração parte de imediato e o ecrã aplica-a em poucos segundos. Não há ciclo de atualização a aguardar, e nada circula enquanto nada muda.

Esta escolha compromete a infraestrutura. É preciso manter um grande número de ligações abertas permanentemente, o que não é o regime de funcionamento para o qual um servidor web está configurado por defeito. O proxy reverso Caddy foi escolhido, entre outras razões, pelo seu desempenho nessas ligações longas.

O canal serve nos dois sentidos, e é isso que torna a supervisão honesta:

  • cada ecrã emite um batimento cardíaco regular, que sinaliza que está ativo;
  • a plataforma mostra o estado real do parque de ecrãs, ecrã a ecrã: online, silencioso, e o que cada um está a exibir naquele momento;
  • um ecrã que deixa de emitir torna-se visível de imediato, sem que ninguém tenha de se deslocar para o constatar.

Quando a rede cai, e quando uma atualização corre mal

Um ecrã que depende da rede é um ecrã preto em potência. Os conteúdos ficam por isso em cache localmente através de um Service Worker: se a ligação desaparecer, a difusão continua com o que já está no local, e o ecrã ressincroniza-se assim que a rede volta. Ninguém precisa de intervir no local.

Uma restrição de terreno impõe aqui uma precaução que vale a pena nomear: as WebViews Android limitam o tamanho dos ficheiros que aceitam manter em cache. Um vídeo pesado carregado de uma só vez ultrapassa esse limite e nunca ficaria em cache, logo nunca disponível offline. Os médias grandes são por isso lidos em blocos sucessivos em vez de de uma só vez. É essa divisão que torna o modo offline realmente fiável neste tipo de material.

O segundo risco não é a falha de rede, é a própria atualização. Um supervisor escrito em JavaScript ES5 executa-se antes do código aplicacional e pilota o Service Worker. Se três arranques consecutivos não forem saudáveis, o ecrã regressa sozinho à última versão saudável conhecida. Um limite adicional restringe ainda as reinicializações automáticas a duas por minuto, para evitar o cenário do ecrã que pisca em ciclo. Consequência concreta: uma implementação falhada não bloqueia um parque instalado, ele repara-se sozinho.

Um parque existente não é um parque para deitar fora

É o ponto onde menos cedemos: o software adapta-se ao equipamento existente, não o contrário. O player é entregue em duas versões geradas a partir do mesmo código-fonte, uma versão moderna para aparelhos recentes e uma versão ES5 para navegadores embutidos antigos. Mesmas funções, mesmo produto; o que muda é a forma como o código é compilado e servido.

O parque real da sinalização digital não é um parque recente. Muitos ecrãs instalados há cinco, oito ou dez anos trazem um navegador fixo na sua versão de origem, que ninguém irá atualizar. O Chrome 44 e as versões seguintes são suportados. O LG webOS 4 traz um motor equivalente ao Chromium 53, que não conhece CSS Grid: estes aparelhos recebem composições de recurso escritas especificamente para eles, para que a composição se mantenha em vez de se empilhar ao acaso.

Este trabalho tem um custo, e assumimo-lo: cada evolução de interface tem de ser verificada na base antiga antes de ser lançada. Em troca, mudar de software de sinalização não obriga a mudar os ecrãs, e o orçamento de hardware sai da equação no momento da decisão.

O que é suportado:

  • a Web, em qualquer aparelho com navegador;
  • Android, com uma aplicação dedicada, incluindo em WebViews antigas;
  • LG webOS, gerações antigas incluídas;
  • nenhum hardware proprietário imposto: a escolha do fornecedor de ecrãs continua a ser sua.

O que um departamento de TI vai querer verificar antes de assinar

O alojamento é assegurado pela OVH, em servidores situados na União Europeia. Nenhum dado é alojado fora da UE, e a conformidade com o RGPD está documentada.

Do lado da rede, o ecrã só precisa de um acesso de saída para a plataforma. O canal permanente é uma ligação comum iniciada pelo próprio ecrã: não há fluxo de entrada a autorizar para as suas instalações, nem servidor a instalar na sua infraestrutura.

Resta o compromisso, porque existe um. Visar navegadores antigos impede o uso das novidades da Web assim que estas surgem, e obriga a validar duas bases em vez de uma: o desenvolvimento é mais lento, e certos refinamentos de interface são postos de lado porque não funcionariam em todo o lado. Preferimos uma interface um pouco mais sóbria que se exibe em todos os ecrãs a uma interface brilhante que deixa uma parte deles de fora. Um comprador de sinalização digital muda de software com muito mais frequência do que muda de hardware, e é essa relação que a arquitetura protege.

Questions fréquentes

Em quanto tempo uma alteração chega ao ecrã?

Em poucos segundos. A plataforma não faz o ecrã consultar o servidor a intervalos fixos: mantém um canal permanente com cada ecrã, em Server-Sent Events, e envia a alteração no momento em que é registada. Não há, portanto, ciclo de atualização a aguardar para uma mudança de playlist ou de calendário.

É preciso substituir os ecrãs existentes para usar o Smart-Signage?

Não. O player é entregue em duas versões geradas a partir do mesmo código-fonte: uma versão moderna para aparelhos recentes e uma versão ES5 para navegadores embutidos antigos. O Chrome 44 e as versões seguintes são suportados, assim como o LG webOS 4, cujo motor equivale ao Chromium 53 e recebe composições de recurso por falta de CSS Grid. Um ecrã comprado há oito anos continua utilizável.

O que acontece se a rede cair ou se uma atualização falhar?

Em caso de corte de rede, o ecrã continua a difundir os conteúdos guardados em cache localmente por um Service Worker, ressincronizando-se depois assim que a ligação volta. Em caso de atualização defeituosa, um supervisor em JavaScript ES5 que se executa antes do código aplicacional deteta três arranques não saudáveis consecutivos e reverte o ecrã para a última versão saudável conhecida, com um limite de duas reinicializações automáticas por minuto.

Onde são alojados os dados, e em que sistemas funciona o player?

Os dados são alojados na OVH, em servidores situados na União Europeia; nenhum dado é alojado fora da UE e a conformidade com o RGPD está documentada. O player funciona na Web, no Android com uma aplicação dedicada e no LG webOS, sem hardware proprietário imposto.

Pour aller plus loin