Real time, offline, oude schermen: hoe het gebouwd is
Een wijziging in een afspeellijst bereikt het scherm binnen enkele seconden, de weergave loopt door als het netwerk uitvalt, en een acht jaar oud scherm blijft ondersteund. Dit zijn de mechanismen die dat mogelijk maken, en wat ze kosten.
Realtime bediening — het platform en het scherm
Aan u de beurt — Zoom in, draai, pas een effect toe: het scherm volgt, en het platform stuurt terug wat het weergeeft.
Scherm "Ontvangsthal"
Elke instelling wordt onmiddellijk op het scherm toegepast — geen nieuwe uitrol, geen tussenkomst ter plaatse.
Scherm casten — van de telefoon naar het scherm van de zaal
Aan u de beurt — Voer de code in die op het scherm wordt getoond, kies wat u deelt, start de uitzending: de telefoon toont dan wat de zaal ziet.
Scherm delen
Salle Confluence
Open smart-signage.app/cast
en voer daarna de code in
K7F2
Scherm "Vergaderzaal Confluence" — afspeellijst actief
Code getoond op het scherm
Delen
Real time: pushen in plaats van bevragen
De gebruikelijke manier om een scherm bij te werken is het op vaste tijdstippen de server laten bevragen: elke vijf minuten, elke vijftien minuten. De content komt uiteindelijk aan, maar met de vertraging van de lopende cyclus, en elk scherm verbruikt netwerkverkeer, zelfs als er niets is veranderd.
Smart-Signage werkt andersom. Het platform houdt een permanent kanaal open naar elk scherm, via Server-Sent Events, en pusht de gebeurtenis op het moment dat ze zich voordoet. U wijzigt een afspeellijst of een rooster: de wijziging vertrekt onmiddellijk en het scherm past ze binnen enkele seconden toe. Er is geen ververscyclus om op te wachten, en er circuleert niets zolang er niets verandert.
Deze keuze legt beslag op de infrastructuur. Er moeten permanent veel open verbindingen worden onderhouden, wat niet het standaardregime is waarvoor een webserver doorgaans is afgesteld. De reverse-proxy Caddy is met name gekozen om zijn stabiliteit bij deze langdurige verbindingen.
Het kanaal werkt in beide richtingen, en dat maakt de monitoring eerlijk:
- elk scherm zendt een regelmatige heartbeat uit, die aangeeft dat het actief is;
- het platform toont de werkelijke staat van het park, scherm per scherm: online, stil, en wat elk scherm op dat moment daadwerkelijk uitzendt;
- een scherm dat stopt met uitzenden, wordt onmiddellijk zichtbaar, zonder dat iemand ter plaatse hoeft te gaan kijken.
Als het netwerk uitvalt, en als een update misloopt
Een scherm dat afhankelijk is van het netwerk, is een potentieel zwart scherm. De content wordt daarom lokaal in cache bewaard door een Service Worker: als de verbinding wegvalt, loopt de weergave door met wat al ter plaatse is, en synchroniseert het scherm zich opnieuw zodra het netwerk terugkeert. Niemand hoeft ter plaatse in te grijpen.
Een praktijkbeperking vraagt hier om een voorzorgsmaatregel die het vermelden waard is: Android WebViews stellen een plafond aan de grootte van bestanden die ze in cache willen bewaren. Een zware video die in één blok wordt geladen, overschrijdt dat plafond en zou nooit in cache komen, dus nooit offline beschikbaar zijn. Grote mediabestanden worden om die reden in opeenvolgende delen gelezen in plaats van in één keer. Die opsplitsing maakt de offlinemodus op dit type hardware daadwerkelijk betrouwbaar.
Het tweede risico is niet de netwerkstoring, maar de update zelf. Een supervisor geschreven in ES5-JavaScript wordt uitgevoerd vóór de applicatiecode en bestuurt de Service Worker. Als drie opeenvolgende opstarts niet gezond zijn, keert het scherm vanzelf terug naar de laatst bekende gezonde versie. Een vangnet beperkt bovendien automatische herlaadbeurten tot twee per minuut, om het scenario van een scherm dat in lus knippert uit te sluiten. Concreet gevolg: een mislukte uitrol blokkeert een geïnstalleerd park niet, het herstelt zichzelf.
Een bestaand park is geen park om weg te gooien
Dit is het punt waarop wij het minst toegeven: de software past zich aan de aanwezige hardware aan, niet andersom. De player wordt geleverd in twee versies afkomstig uit dezelfde broncode, een moderne versie voor recente apparaten en een ES5-versie voor oude embedded browsers. Dezelfde functies, hetzelfde product; wat verandert is de manier waarop de code wordt gecompileerd en geleverd.
Het werkelijke park van digital signage is geen recent park. Veel schermen die vijf, acht of tien jaar geleden zijn geïnstalleerd, dragen een browser die vastzit op zijn oorspronkelijke versie, die niemand ooit zal bijwerken. Chrome 44 en latere versies worden ondersteund. LG webOS 4 heeft een engine die overeenkomt met Chromium 53, die geen CSS Grid kent: deze apparaten krijgen speciaal voor hen geschreven fallback-lay-outs, zodat de compositie standhoudt in plaats van willekeurig te stapelen.
Dat werk heeft een prijs, en die dragen wij: elke evolutie van de interface moet worden gecontroleerd op de oude basis voordat ze wordt uitgeleverd. In ruil daarvoor verplicht het wisselen van weergavesoftware niet tot het vervangen van de schermen, en valt het hardwarebudget weg uit de beslissing.
Wat wordt ondersteund:
- het web, op elk apparaat met een browser;
- Android, met een speciale app, ook op oude WebViews;
- LG webOS, oudere generaties inbegrepen;
- geen enkele verplichte proprietaire hardware: de keuze van de schermleverancier blijft de uwe.
Wat een IT-afdeling zal willen controleren vóór ondertekening
De hosting gebeurt bij OVH, op servers in de Europese Unie. Er worden geen gegevens buiten de EU gehost, en de AVG-conformiteit is gedocumenteerd.
Aan de netwerkkant heeft het scherm alleen uitgaande toegang tot het platform nodig. Het permanente kanaal is een gewone, door het scherm zelf geïnitieerde verbinding: er hoeft geen inkomend verkeer naar uw locaties te worden toegestaan, en er hoeft geen server op uw infrastructuur te worden geïnstalleerd.
Er blijft een compromis over, want dat is er. Mikken op oude browsers verbiedt het gebruik van nieuwe webfuncties zodra ze verschijnen, en vereist het valideren van twee basissen in plaats van één: de ontwikkeling is trager, en sommige interfaceverfijningen worden geschrapt omdat ze niet overal zouden werken. Wij verkiezen een iets soberdere interface die op alle schermen wordt weergegeven boven een schitterende interface die een deel van het park buitensluit. Een koper van digital signage wisselt veel vaker van software dan van hardware, en precies die verhouding beschermt deze architectuur.
Questions fréquentes
Hoe snel bereikt een wijziging het scherm?
Binnen enkele seconden. Het platform laat het scherm de server niet op vaste tijdstippen bevragen: het houdt een permanent kanaal open naar elk scherm, via Server-Sent Events, en pusht de wijziging op het moment dat ze wordt opgeslagen. Er is dus geen ververscyclus om op te wachten bij een wijziging van afspeellijst of rooster.
Moeten bestaande schermen vervangen worden om Smart-Signage te gebruiken?
Nee. De player wordt geleverd in twee versies afkomstig uit dezelfde broncode: een moderne versie voor recente apparaten en een ES5-versie voor oude embedded browsers. Chrome 44 en latere versies worden ondersteund, evenals LG webOS 4, waarvan de engine overeenkomt met Chromium 53 en fallback-lay-outs krijgt bij gebrek aan CSS Grid. Een acht jaar oud scherm blijft bruikbaar.
Wat gebeurt er als het netwerk uitvalt of een update mislukt?
Bij een netwerkstoring blijft het scherm de lokaal door een Service Worker in cache bewaarde content uitzenden en synchroniseert het zich vervolgens opnieuw zodra de verbinding terugkeert. Bij een gebrekkige update detecteert een supervisor in ES5-JavaScript, die vóór de applicatiecode draait, drie opeenvolgende ongezonde opstarts en schakelt het scherm terug naar de laatst bekende gezonde versie, met een limiet van twee automatische herlaadbeurten per minuut.
Waar worden de gegevens gehost, en op welke systemen werkt de player?
De gegevens worden gehost bij OVH, op servers in de Europese Unie; er worden geen gegevens buiten de EU gehost en de AVG-conformiteit is gedocumenteerd. De player werkt op het web, op Android met een speciale app en op LG webOS, zonder verplichte proprietaire hardware.