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
Din tur — Zooma, rotera, applicera en effekt: skärmen följer med, och plattformen visar tillbaka vad den sänder.
Skärm "Entréhall"
Varje inställning skickas direkt till skärmen — ingen ny driftsättning, ingen åtgärd på plats.
Skärmcast — från telefonen till rummets skärm
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
Kod visad på skärmen
Dela
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.