Technologia

Czas rzeczywisty, tryb offline, stare ekrany: jak to zbudowano

Zmiana playlisty dociera do ekranu w kilka sekund, wyświetlanie trwa dalej, gdy sieć zawiedzie, a ekran kupiony osiem lat temu wciąż jest obsługiwany. Oto mechanizmy, które to umożliwiają, i ich koszt.

Sterowanie w czasie rzeczywistym — platforma i ekran

Demonstracja

Twoja kolej — Powiększ, obróć, zastosuj efekt: ekran reaguje, a platforma przesyła Ci to, co on wyświetla.

Ekran „Hol recepcji”

Karta ekranu · Hol recepcji Online
Widok na żywo
Zoom×1.00
Obrót treści
Efekt
Animacja

Każde ustawienie trafia na ekran natychmiast — bez ponownego wdrożenia, bez interwencji na miejscu.

Miniatura „Widok na żywo” to prawdziwy zrzut ekranu przesłany przez player, a nie lokalny podgląd: widzisz to, co jest wyświetlane, nawet tysiąc kilometrów dalej. Scena demonstracyjna, wideo symulowane.

Cast ekranu — z telefonu na ekran sali

Demonstracja

Twoja kolej — Wpisz kod wyświetlony na ekranie, wybierz, co udostępniasz, rozpocznij transmisję: telefon odtwarza wtedy to, co widzi sala.

Udostępnianie ekranu

Salle Confluence

Otwórz smart-signage.app/cast
, a następnie wpisz kod

K7F2

Ekran „Sala Confluence” — playlista w trakcie odtwarzania

Castsmart-signage.app/cast

Kod wyświetlony na ekranie

Udostępnij

Udostępnianie odbywa się przez przeglądarkę, w technologii WebRTC: nic do zainstalowania na telefonie ani na komputerze, żadnego kabla do podłączenia do ekranu. Kod zmienia się przy każdej sesji. Demonstracja — strumień wideo jest symulowany.

Czas rzeczywisty: wypychanie, a nie odpytywanie

Zwykły sposób aktualizowania ekranu polega na tym, że sam odpytuje serwer w stałych odstępach czasu: co pięć minut, co piętnaście minut. Treść w końcu dociera, ale z opóźnieniem bieżącego cyklu, a każdy ekran zużywa łącze, nawet gdy nic się nie zmieniło.

Smart-Signage działa odwrotnie. Platforma utrzymuje stały kanał do każdego ekranu, przez Server-Sent Events, i wypycha nim zdarzenie w momencie, gdy się ono pojawia. Zmieniacie playlistę lub harmonogram: zmiana wychodzi natychmiast, a ekran stosuje ją w kilka sekund. Nie ma cyklu odświeżania, na który trzeba by czekać, i nic nie krąży, dopóki nic się nie dzieje.

Ten wybór ma konsekwencje dla infrastruktury. Trzeba utrzymywać dużą liczbę stale otwartych połączeń, co nie jest domyślnym trybem pracy serwera WWW. Reverse-proxy Caddy został wybrany między innymi ze względu na dobre zachowanie przy tych długich połączeniach.

Kanał działa w obie strony, i to sprawia, że nadzór jest rzetelny:

  • każdy ekran emituje regularny sygnał życia, potwierdzający, że działa;
  • platforma pokazuje rzeczywisty stan floty urządzeń, ekran po ekranie: online, milczy, oraz co faktycznie wyświetla w danej chwili;
  • ekran, który przestaje emitować sygnał, staje się widoczny natychmiast, bez konieczności fizycznej weryfikacji przez kogokolwiek.

Gdy sieć zawiedzie i gdy aktualizacja pójdzie źle

Ekran zależny od sieci to potencjalnie czarny ekran. Treści są więc buforowane lokalnie przez Service Worker: jeśli połączenie zniknie, wyświetlanie trwa dalej z tym, co już jest na miejscu, a ekran synchronizuje się ponownie natychmiast po powrocie sieci. Nikt nie musi interweniować na miejscu.

Praktyczne ograniczenie wymaga tu środka ostrożności, który warto nazwać wprost: WebView na Androidzie mają limit rozmiaru plików akceptowanych do zapisania w pamięci podręcznej. Duże wideo załadowane jako jeden blok przekracza ten limit i nigdy nie zostałoby zbuforowane, a więc nigdy nie byłoby dostępne offline. Z tego powodu duże pliki multimedialne są odczytywane kolejnymi fragmentami zamiast za jednym razem. To właśnie ten podział czyni tryb offline naprawdę niezawodnym na tym sprzęcie.

Drugim zagrożeniem nie jest awaria sieci, lecz sama aktualizacja. Nadzorca napisany w JavaScript ES5 uruchamia się przed kodem aplikacji i steruje Service Workerem. Jeśli trzy kolejne uruchomienia nie są zdrowe, ekran sam wraca do ostatniej znanej, sprawnej wersji. Dodatkowe zabezpieczenie ogranicza automatyczne przeładowania do dwóch na minutę, aby wykluczyć scenariusz migoczącego w kółko ekranu. Praktyczny skutek: nieudane wdrożenie nie blokuje zainstalowanej floty urządzeń, tylko naprawia się samo.

Istniejąca flota to nie flota do wyrzucenia

To punkt, z którego rezygnujemy najmniej chętnie: oprogramowanie dostosowuje się do sprzętu, który już jest, nie odwrotnie. Player dostarczany jest w dwóch wersjach z tego samego kodu źródłowego, wersji nowoczesnej dla nowszych urządzeń i wersji ES5 dla starych, wbudowanych przeglądarek. Te same funkcje, ten sam produkt; zmienia się sposób, w jaki kod jest kompilowany i serwowany.

Rzeczywista flota digital signage nie jest flotą nowoczesną. Wiele ekranów zainstalowanych pięć, osiem czy dziesięć lat temu ma wbudowaną przeglądarkę zamrożoną na wersji pierwotnej, której nikt nigdy nie zaktualizuje. Obsługiwany jest Chrome 44 i wersje nowsze. LG webOS 4 ma silnik odpowiadający Chromium 53, który nie obsługuje CSS Grid: te urządzenia otrzymują zapasowe układy napisane specjalnie dla nich, aby kompozycja trzymała się kupy zamiast losowo się piętrzyć.

Ta praca ma swój koszt i bierzemy go na siebie: każda zmiana interfejsu musi być zweryfikowana na starym sprzęcie, zanim zostanie wdrożona. W zamian zmiana oprogramowania do wyświetlania nie wymusza zmiany ekranów, a budżet na sprzęt wypada z równania w momencie decyzji.

Co jest obsługiwane:

  • Sieć, na dowolnym urządzeniu z przeglądarką;
  • Android, z dedykowaną aplikacją, także na starych WebView;
  • LG webOS, łącznie ze starszymi generacjami;
  • żaden narzucony sprzęt zastrzeżony: wybór dostawcy ekranów pozostaje wasz.

Co dział IT będzie chciał sprawdzić przed podpisaniem

Hosting zapewnia OVH, na serwerach zlokalizowanych w Unii Europejskiej. Żadne dane nie są przechowywane poza UE, a zgodność z RODO jest udokumentowana.

Od strony sieciowej ekran potrzebuje tylko dostępu wychodzącego do platformy. Stały kanał to zwykłe połączenie inicjowane przez sam ekran: nie ma ruchu przychodzącego do autoryzowania w waszej infrastrukturze, ani serwera do instalowania po waszej stronie.

Pozostaje kompromis, bo jakiś istnieje. Celowanie w stare przeglądarki uniemożliwia korzystanie z nowości webowych zaraz po ich wydaniu i zmusza do walidacji dwóch środowisk zamiast jednego: rozwój jest wolniejszy, a niektóre subtelności interfejsu są odrzucane, bo nie działałyby wszędzie. Wolimy nieco bardziej stonowany interfejs, który wyświetla się na wszystkich ekranach, niż błyskotliwy interfejs, który część z nich pomija. Kupujący digital signage zmienia oprogramowanie znacznie częściej niż sprzęt, i to właśnie tę relację chroni architektura.

Questions fréquentes

W jakim czasie zmiana dociera do ekranu?

W kilka sekund. Platforma nie zmusza ekranu do odpytywania serwera w stałych odstępach czasu: utrzymuje stały kanał do każdego ekranu, przez Server-Sent Events, i wypycha nim zmianę w momencie jej zapisania. Nie ma więc cyklu odświeżania, na który trzeba by czekać przy zmianie playlisty lub harmonogramu.

Czy trzeba wymienić istniejące ekrany, aby korzystać ze Smart-Signage?

Nie. Player dostarczany jest w dwóch wersjach z tego samego kodu źródłowego: nowoczesnej dla nowszych urządzeń i ES5 dla starych, wbudowanych przeglądarek. Obsługiwany jest Chrome 44 i wersje nowsze, a także LG webOS 4, którego silnik odpowiada Chromium 53 i otrzymuje zapasowe układy z powodu braku CSS Grid. Ekran kupiony osiem lat temu pozostaje użyteczny.

Co się dzieje, gdy sieć zawiedzie lub aktualizacja się nie powiedzie?

W razie przerwy sieciowej ekran nadal wyświetla treści zbuforowane lokalnie przez Service Worker, a następnie synchronizuje się ponownie po powrocie połączenia. W razie wadliwej aktualizacji nadzorca w JavaScript ES5, uruchamiany przed kodem aplikacji, wykrywa trzy kolejne niezdrowe uruchomienia i przełącza ekran z powrotem na ostatnią znaną, sprawną wersję, z limitem dwóch automatycznych przeładowań na minutę.

Gdzie przechowywane są dane i na jakich systemach działa player?

Dane są przechowywane u OVH, na serwerach zlokalizowanych w Unii Europejskiej; żadne dane nie są przechowywane poza UE, a zgodność z RODO jest udokumentowana. Player działa w sieci, na Androidzie z dedykowaną aplikacją oraz na LG webOS, bez narzuconego sprzętu zastrzeżonego.

Pour aller plus loin