
Programowanie
Tablice informacyjne w holu Urzędu Miejskiego w Starym Sączu
Dwa ekrany w holu urzędu: tablica z rozmieszczeniem pokoi w czterech budynkach i pokaz slajdów z aktualnościami, wydarzeniami, pogodą i mapą. Dane same płyną z portalu gminy, a kiosk przy telewizorze tylko je wyświetla.
26.10.2026
Urząd Miejski w Starym Sączu mieści się w czterech budynkach. Mieszkaniec, który przychodzi pierwszy raz, zwykle zaczyna od pytania na portierni, gdzie załatwi swoją sprawę.
W holu wisiały dwa telewizory, ale pokazywały starą, ręcznie przygotowaną stronę. Zastąpiłem ją dwiema tablicami informacyjnymi, które same pobierają dane z portalu gminy i nie wymagają żadnej obsługi.

Gdzie załatwić sprawę
Większy ekran pokazuje rozmieszczenie referatów i pokoi w budynkach A, B, C i D. Każdy budynek ma swój kolor, a ten sam kolor pojawia się na mapie na drugim ekranie i na oznaczeniach w portalu.
- lista pokoi pochodzi z tej samej kolekcji w CMS portalu, co strona kontaktowa urzędu,
- zmiana numeru pokoju w panelu pojawia się na tablicy bez żadnego wdrożenia,
- u góry godziny pracy urzędu i duży zegar z datą,
- na dole pasek z najnowszą aktualnością z portalu,
- kod QR prowadzi do portalu gminy w telefonie.

Dzień i noc
Telewizor w holu świeci także wieczorem. Tablica sama przechodzi w tryb nocny po zachodzie słońca i wraca do dziennego po wschodzie. Godziny wschodu i zachodu liczy dla Starego Sącza, bez zewnętrznej usługi.
Godzinę strona bierze z serwera, a nie z zegara telewizora. Dzięki temu nie trzeba pilnować, czy ktoś ustawił czas po zmianie na zimowy.

Slajdy: aktualności, wydarzenia, pogoda
Mniejszy ekran pokazuje na zmianę kilka slajdów:
- wyróżnione aktualności z portalu, ze zdjęciem i kodem QR do pełnego artykułu,
- najbliższe wydarzenia z kalendarza portalu, z informacją, za ile dni się zaczynają,
- prognozę pogody z Open-Meteo,
- jakość powietrza z czujników Syngeos,
- mapę budynków urzędu z oznaczeniem „Tu jesteś”.
Kod QR pojawia się tylko wtedy, gdy strona, do której prowadzi, rzeczywiście działa. Serwer sprawdza adresy co 5 minut, więc nikt nie zeskanuje kodu do błędu 404.


Mapa z OpenStreetMap, ale z własnego serwera
Obrysy budynków urzędu pochodzą z OpenStreetMap. Kafelki mapy serwer pobiera raz i trzyma u siebie, a legenda korzysta z tej samej listy pokoi co duża tablica.

Kiosk, który niczego nie wie
Przy telewizorze stoi mały komputer z Debianem. Uruchamia tylko Chromium w trybie kiosku w kompozytorze cage, bez pulpitu i bez możliwości wyjścia z przeglądarki. Watchdog restartuje go, gdy strona przestanie odpowiadać.
Cała logika jest na serwerze:
- usługa danych pobiera aktualności, wydarzenia, pogodę, powietrze, pokoje i mapę, a potem trzyma ostatnie dobre dane,
- kiosk pobiera wszystko, łącznie ze zdjęciami, tylko z serwera gminy,
- gdy na chwilę zabraknie internetu, tablica dalej pokazuje ostatnie dane, zamiast pustego ekranu,
- czas slajdów i źródła zmienia się w pliku konfiguracyjnym, bez przebudowy obrazu,
- nadzór na osobnym serwerze wysyła SMS, gdy ekran przestanie pytać o dane.
Ten sam mechanizm działa w tablicy przystankowej. Kolejne ekrany w gminie to już tylko nowy wpis w konfiguracji.
Wygląd z jednego szablonu
Obie tablice powstały z szablonu, z którego korzystają też inne usługi gminy. Mają te same kroje Atkinson Hyperlegible Next i Bricolage Grotesque, tę samą paletę i ten sam znak wieży. Układ jest jednak liczony pod telewizor oglądany z kilku metrów, a nie pod stronę czytaną z bliska.
Stack
- Astro (strony statyczne), Tailwind v4, fonty self-hosted,
- usługa danych w Node 24, TypeScript bez kompilacji i bez zależności,
- Directus portalu gminy jako źródło pokoi i wydarzeń,
- Open-Meteo, Syngeos, OpenStreetMap,
- Debian, cage i Chromium w trybie kiosku, systemd,
- Docker, wdrożenie timerem systemd z tagu wersji.
