Teknologi

Realtid, offline-drift, ældre skærme: sådan er det bygget

Et playlisteskift når skærmen på få sekunder, visningen fortsætter, når netværket falder ud, og en skærm købt for otte år siden understøttes fortsat. Her er de mekanismer, der gør det muligt, og hvad de koster.

Realtidsstyring — platformen og skærmen

Demonstration

Prøv selv — Zoom, rotér, anvend en effekt: skærmen følger med, og platformen sender dig, hvad den viser.

Skærm »Reception«

Skærmark · Reception Online
Set live
Zoom×1.00
Indholdsrotation
Effekt
Animation

Hver indstilling sendes til skærmen med det samme — ingen ny udrulning, ingen indgriben på stedet.

Miniaturebilledet »Set live« er et rigtigt skærmbillede sendt af playeren, ikke en lokal forhåndsvisning: du ser, hvad der rent faktisk afspilles, selv tusinde kilometer væk. Demonstrationsscene, simuleret video.

Skærmcast — fra telefonen til lokalets skærm

Demonstration

Prøv selv — Indtast koden vist på skærmen, vælg hvad du deler, send: telefonen genskaber derefter, hvad lokalet ser.

Skærmdeling

Salle Confluence

Åbn smart-signage.app/cast
og indtast koden

K7F2

Skærm »Mødelokale Confluence« — afspilningsliste i gang

Castsmart-signage.app/cast

Kode vist på skærmen

Del

Delingen sker via browseren, med WebRTC: intet at installere på telefonen eller computeren, og intet kabel til skærmen. Koden skifter for hver session. Demonstration — videostrømmen er simuleret.

Realtid: at skubbe frem for at forespørge

Den sædvanlige måde at opdatere en skærm på består i at lade den forespørge serveren med faste intervaller: hvert femte minut, hvert femtende minut. Indholdet når til sidst frem, men med forsinkelsen fra det igangværende interval, og hver skærm bruger netværk, selv når intet er ændret.

Smart-Signage fungerer den anden vej. Platformen opretholder en permanent kanal til hver skærm, via Server-Sent Events, og skubber begivenheden ud i det øjeblik, den sker. I ændrer en playliste eller en plan: ændringen sendes øjeblikkeligt, og skærmen anvender den på få sekunder. Der er ingen opdateringscyklus at vente på, og intet sendes, så længe intet ændrer sig.

Dette valg stiller krav til infrastrukturen. Der skal opretholdes et stort antal permanent åbne forbindelser, hvilket ikke er den driftsform, en webserver som standard er indstillet til. Reverse-proxyen Caddy blev blandt andet valgt for dens evne til at håndtere disse langvarige forbindelser.

Kanalen bruges i begge retninger, og det er dét, der gør overvågningen troværdig:

  • hver skærm udsender et regelmæssigt hjerteslag, der viser, at den er i live;
  • platformen viser flådens reelle status, skærm for skærm: online, stille, og hvad hver enkelt viser i øjeblikket;
  • en skærm der holder op med at sende bliver synlig med det samme, uden at nogen skal møde op for at konstatere det.

Når netværket falder ud, og når en opdatering går galt

En skærm, der afhænger af netværket, er en potentielt sort skærm. Indholdet caches derfor lokalt af en Service Worker: hvis forbindelsen forsvinder, fortsætter visningen med det, der allerede er på plads, og skærmen synkroniserer sig igen, så snart netværket vender tilbage. Ingen skal foretage sig noget på stedet.

En praktisk begrænsning kræver her et forbehold, det er værd at nævne: Android WebViews sætter et loft over størrelsen på filer, de accepterer at gemme i cache. En stor video indlæst i én blok overstiger dette loft og ville aldrig blive cachet og dermed aldrig være tilgængelig offline. Store medier afspilles derfor i på hinanden følgende blokke frem for på én gang. Det er denne opdeling, der gør offline-tilstanden reelt pålidelig på dette udstyr.

Den anden risiko er ikke netværksfejl, det er selve opdateringen. En overvåger skrevet i JavaScript ES5 kører før applikationskoden og styrer Service Worker'en. Hvis tre på hinanden følgende opstarter ikke er sunde, vender skærmen selv tilbage til den sidst kendte sunde version. Desuden begrænser en sikkerhedsmekanisme automatiske genindlæsninger til to pr. minut, for at udelukke scenariet med en skærm, der blinker i loop. Den konkrete konsekvens: en mislykket udrulning blokerer ikke en installeret flåde, den reparerer sig selv.

En eksisterende skærmpark er ikke en park, der skal kasseres

Det er det punkt, vi går mindst på kompromis med: softwaren tilpasser sig hardwaren på stedet, ikke omvendt. Playeren leveres i to versioner udviklet fra samme kildekode, en moderne version til nyere enheder og en ES5-version til ældre indbyggede browsere. Samme funktioner, samme produkt; det, der ændrer sig, er måden koden kompileres og leveres på.

Den reelle skærmpark inden for digital skiltning er ikke en ny park. Mange skærme installeret for fem, otte eller ti år siden har en browser fastlåst til sin oprindelige version, som ingen nogensinde vil opdatere. Chrome 44 og senere versioner understøttes. LG webOS 4 har en motor svarende til Chromium 53, som ikke kender CSS Grid: disse enheder modtager tilbagefaldslayouts skrevet specielt til dem, så opsætningen holder i stedet for at stables tilfældigt.

Dette arbejde har en pris, og vi står ved den: hver ændring af brugerfladen skal verificeres på det gamle fundament, før den udrulles. Til gengæld kræver et skift af visningssoftware ikke et skift af skærme, og hardwarebudgettet tages ud af ligningen på beslutningstidspunktet.

Hvad der understøttes:

  • Web, på ethvert apparat med en browser;
  • Android, med en dedikeret app, også på ældre WebViews;
  • LG webOS, ældre generationer inklusive;
  • intet proprietært udstyr påtvunget: valget af skærmleverandør forbliver jeres.

Hvad en it-afdeling vil kontrollere, før den underskriver

Hostingen varetages hos OVH, på servere placeret i EU. Ingen data hostes uden for EU, og overensstemmelse med GDPR er dokumenteret.

På netværkssiden har skærmen kun brug for udgående adgang til platformen. Den permanente kanal er en almindelig forbindelse, initieret af skærmen selv: der er ingen indgående trafik, der skal tillades ind i jeres lokaler, og ingen server der skal installeres på jeres infrastruktur.

Tilbage står kompromiset, for der er ét. At sigte mod ældre browsere forhindrer brug af nye webfunktioner, så snart de udkommer, og kræver validering af to fundamenter i stedet for ét: udviklingen bliver langsommere, og visse finesser i brugerfladen fravælges, fordi de ikke ville virke overalt. Vi foretrækker en lidt mere afdæmpet brugerflade, der vises på alle skærme, frem for en flot brugerflade, der udelukker en del af dem. En køber af digital skiltning skifter software langt oftere, end vedkommende skifter udstyr, og det er dette forhold, arkitekturen beskytter.

Questions fréquentes

Hvor lang tid tager det, før en ændring når skærmen?

Nogle få sekunder. Platformen lader ikke skærmen forespørge serveren med faste intervaller: den opretholder en permanent kanal til hver skærm, via Server-Sent Events, og skubber ændringen ud i det øjeblik, den gemmes. Der er derfor ingen opdateringscyklus at vente på ved et skift af playliste eller plan.

Skal eksisterende skærme udskiftes for at bruge Smart-Signage?

Nej. Playeren leveres i to versioner udviklet fra samme kildekode: en moderne version til nyere enheder og en ES5-version til ældre indbyggede browsere. Chrome 44 og senere versioner understøttes, ligesom LG webOS 4, hvis motor svarer til Chromium 53 og modtager tilbagefaldslayouts på grund af manglende CSS Grid. En skærm købt for otte år siden kan stadig bruges.

Hvad sker der, hvis netværket falder ud, eller en opdatering fejler?

Ved netværksudfald fortsætter skærmen med at vise indhold cachet lokalt af en Service Worker og synkroniserer sig derefter igen, når forbindelsen vender tilbage. Ved en fejlbehæftet opdatering opdager en overvåger i JavaScript ES5, der kører før applikationskoden, tre på hinanden følgende usunde opstarter og skifter skærmen tilbage til den sidst kendte sunde version, med en grænse på to automatiske genindlæsninger pr. minut.

Hvor hostes data, og på hvilke systemer fungerer playeren?

Data hostes hos OVH, på servere placeret i EU; ingen data hostes uden for EU, og overensstemmelse med GDPR er dokumenteret. Playeren fungerer på Web, på Android med en dedikeret app og på LG webOS, uden noget proprietært udstyr påtvunget.

Pour aller plus loin