Teknologi

Realtid, offline-läge, äldre skärmar: så är det byggt

En ändring av spellistan når skärmen på några sekunder, sändningen fortsätter när nätverket faller bort, och en skärm köpt för åtta år sedan stöds fortfarande. Här är mekanismerna som gör det möjligt, och vad de kostar.

Realtidskontroll — plattformen och skärmen

Demonstration

Din tur — Zooma, rotera, applicera en effekt: skärmen följer med, och plattformen visar tillbaka vad den sänder.

Skärm "Entréhall"

Skärmsida · Entréhall Online
Sett live
Zoom×1.00
Innehållsrotation
Effekt
Animation

Varje inställning skickas direkt till skärmen — ingen ny driftsättning, ingen åtgärd på plats.

Miniatyrbilden "Sett live" är en verklig skärmavbild som skickas tillbaka från playern, inte en lokal förhandsvisning: du ser vad som sänds, även på tusen kilometers avstånd. Demonstrationsscen, simulerad video.

Skärmcast — från telefonen till rummets skärm

Demonstration

Din tur — Ange koden som visas på skärmen, välj vad du delar, sänd: telefonen kopierar då det rummet ser.

Skärmdelning

Salle Confluence

Öppna smart-signage.app/cast
ange sedan koden

K7F2

Skärm "Rum Confluence" — spellista pågår

Castsmart-signage.app/cast

Kod visad på skärmen

Dela

Delningen sker via webbläsaren, med WebRTC: inget att installera på telefonen eller datorn, och ingen kabel att koppla in på skärmen. Koden ändras varje session. Demonstration — videoflödet är simulerat.

Realtid: att skicka, snarare än att fråga

Det vanliga sättet att uppdatera en skärm är att låta den fråga servern med jämna mellanrum: var femte minut, var femtonde minut. Innehållet kommer till slut fram, men med förseningen från den pågående cykeln, och varje skärm förbrukar nätverk även när inget har ändrats.

Smart-Signage fungerar tvärtom. Plattformen håller en permanent kanal öppen mot varje skärm, via Server-Sent Events, och skickar händelsen i det ögonblick den inträffar. Ni ändrar en spellista eller ett schema: ändringen skickas omedelbart och skärmen tillämpar den på några sekunder. Det finns ingen uppdateringscykel att vänta på, och inget skickas så länge inget rör sig.

Detta val ställer krav på infrastrukturen. Man måste hålla ett stort antal ständigt öppna anslutningar, vilket inte är det driftläge en webbserver är inställd på som standard. Reverse-proxyn Caddy valdes bland annat för sin förmåga att hantera dessa långa anslutningar.

Kanalen används i båda riktningarna, och det är det som gör övervakningen tillförlitlig:

  • varje skärm sänder en regelbunden hjärtslagssignal, som visar att den är i drift;
  • plattformen visar flottans faktiska tillstånd, skärm för skärm: online, tyst, och vad var och en visar just nu;
  • en skärm som slutar sända syns omedelbart, utan att någon behöver bege sig dit för att konstatera det.

När nätverket faller bort, och när uppdateringen går fel

En skärm som är beroende av nätverket är en potentiell svart skärm. Innehåll cachas därför lokalt av en Service Worker: om anslutningen försvinner fortsätter sändningen med det som redan finns på plats, och skärmen synkroniseras om så fort nätverket är tillbaka. Ingen behöver ingripa på plats.

En verklighet från fältet kräver här en försiktighetsåtgärd som är värd att nämna: Android WebViews sätter ett tak för storleken på filer de accepterar att cacha. En tung video som laddas som ett enda block överstiger detta tak och skulle aldrig cachas, och därmed aldrig vara tillgänglig offline. Stora medier läses därför i på varandra följande segment snarare än på en gång. Det är denna uppdelning som gör offline-läget verkligen tillförlitligt på denna hårdvara.

Den andra risken är inte nätverksbortfallet, det är själva uppdateringen. En övervakare skriven i JavaScript ES5 körs innan applikationskoden och styr Service Workern. Om tre på varandra följande uppstarter inte är felfria återgår skärmen självmant till den senast kända fungerande versionen. En säkerhetsspärr begränsar dessutom automatiska omladdningar till två per minut, för att utesluta scenariot med en skärm som blinkar i loop. Konkret konsekvens: en misslyckad driftsättning blockerar inte en installerad flotta, den reparerar sig själv.

En befintlig flotta är ingen flotta att kassera

Det är punkten vi ger minst efter på: mjukvaran anpassar sig till befintlig hårdvara, inte tvärtom. Playern levereras i två versioner från samma källkod, en modern version för nya enheter och en ES5-version för äldre inbäddade webbläsare. Samma funktioner, samma produkt; det som skiljer är hur koden kompileras och levereras.

Den verkliga flottan inom dynamisk skyltning är inte en ny flotta. Många skärmar installerade för fem, åtta eller tio år sedan har en webbläsare fastlåst vid sin ursprungsversion, som ingen någonsin kommer att uppdatera. Chrome 44 och senare versioner stöds. LG webOS 4 har en motor motsvarande Chromium 53, som inte känner till CSS Grid: dessa enheter får reservlayouter skrivna särskilt för dem, så att kompositionen håller ihop i stället för att staplas på måfå.

Detta arbete har ett pris, och vi står för det: varje gränssnittsförändring måste verifieras mot den gamla grunden innan den levereras. I gengäld tvingar ett byte av visningsmjukvara inte fram ett byte av skärmar, och hårdvarubudgeten faller bort ur ekvationen vid beslutstillfället.

Vad som stöds:

  • webben, på alla enheter med en webbläsare;
  • Android, med en dedikerad app, även på gamla WebViews;
  • LG webOS, äldre generationer inkluderade;
  • ingen påtvingad egen hårdvara: valet av skärmleverantör förblir ert eget.

Vad en IT-avdelning vill kontrollera innan man skriver på

Hostingen sker hos OVH, på servrar belägna inom EU. Ingen data lagras utanför EU, och GDPR-efterlevnaden är dokumenterad.

På nätverkssidan behöver skärmen bara utgående åtkomst till plattformen. Den permanenta kanalen är en vanlig anslutning som initieras av skärmen själv: det finns ingen inkommande trafik att öppna upp mot era lokaler, och ingen server att installera på er infrastruktur.

Kvar finns kompromissen, för det finns en. Att inrikta sig på äldre webbläsare gör att man inte kan använda webbens nyheter så fort de släpps, och tvingar fram validering av två grunder i stället för en: utvecklingen går långsammare, och vissa gränssnittsfinesser väljs bort eftersom de inte skulle fungera överallt. Vi föredrar ett något enklare gränssnitt som visas på alla skärmar framför ett flashigt gränssnitt som lämnar en del utanför. Den som köper dynamisk skyltning byter mjukvara mycket oftare än hen byter hårdvara, och det är den relationen arkitekturen skyddar.

Questions fréquentes

Hur lång tid tar det innan en ändring når skärmen?

Några sekunder. Plattformen låter inte skärmen fråga servern med jämna mellanrum: den håller en permanent kanal öppen mot varje skärm, via Server-Sent Events, och skickar ändringen i det ögonblick den sparas. Det finns alltså ingen uppdateringscykel att vänta på för en ändring av spellista eller schema.

Måste man byta ut befintliga skärmar för att använda Smart-Signage?

Nej. Playern levereras i två versioner från samma källkod: en modern version för nya enheter och en ES5-version för äldre inbäddade webbläsare. Chrome 44 och senare versioner stöds, liksom LG webOS 4, vars motor motsvarar Chromium 53 och får reservlayouter i brist på CSS Grid. En skärm köpt för åtta år sedan går fortfarande att använda.

Vad händer om nätverket faller bort eller en uppdatering misslyckas?

Vid nätverksavbrott fortsätter skärmen att sända innehåll som cachats lokalt av en Service Worker, och synkroniseras sedan om när anslutningen är tillbaka. Vid en felaktig uppdatering upptäcker en övervakare i JavaScript ES5, som körs innan applikationskoden, tre på varandra följande felaktiga uppstarter och växlar tillbaka skärmen till den senast kända fungerande versionen, med en gräns på två automatiska omladdningar per minut.

Var lagras datan, och på vilka system fungerar playern?

Datan lagras hos OVH, på servrar belägna inom EU; ingen data lagras utanför EU och GDPR-efterlevnaden är dokumenterad. Playern fungerar på webben, på Android med en dedikerad app och på LG webOS, utan påtvingad egen hårdvara.

Pour aller plus loin