Wodowskaz:
dane hydrologiczne i meteo
z całej Polski na jednej mapie.
Zaprojektowałem i zbudowałem aplikację internetową do wizualizacji i archiwizacji danych telemetrycznych. System zbiera bieżące pomiary z rozproszonych stacji hydrologicznych i meteorologicznych i pokazuje je na jednej interaktywnej mapie. Odczyty ze stacji przychodzą co 10 minut. Pozwala analizować dane historyczne, a panel administracyjny daje pełny nadzór techniczny nad infrastrukturą. W ramach stałej współpracy platforma cały czas się rozwija - doszły dane o jakości wody, różne poziomy dostępu do danych, raporty wysyłane według harmonogramu, weryfikacja pomiarów w terenie oraz radar opadów na tle ortofotomapy. Po wdrożeniu system jest stale utrzymywany i rozwijany w ramach abonamentu. Poniżej szczegóły.
Klient potrzebował jednej platformy do zarządzania rosnącą siecią stacji telemetrycznych. Cel był podwójny: uprawnieni użytkownicy mieli łatwo sprawdzać aktualną pogodę i stan wód na interaktywnej mapie, a administratorzy - dostać wygodne narzędzie do kontrolowania stanu technicznego stacji (napięcie baterii, otwarcie drzwiczek obudowy, wydajność paneli słonecznych) bez wyjazdów w teren.
Dużym atutem Silentbits jest głęboka wiedza techniczna i umiejętność przekładania złożonych problemów na konkretne rozwiązania biznesowe. System działa niezawodnie i szybko, a z perspektywy użytkownika jest bardzo dobrze zaprojektowany.

Wyzwania.
Trudna synchronizacja danych
Przez niestabilny zasięg GSM w danych pojawiały się luki. Zwykłe pobieranie „z ostatniej godziny” nie wystarczało, bo stacje podczas przerw zapisywały pomiary w pamięci i wysyłały je dopiero po kilku godzinach (tryb „zapisz i wyślij później”).
Szybka reakcja na zagrożenia
System musiał natychmiast reagować na przekroczenie stanów alarmowych (np. przy wezbraniu rzeki), a jednocześnie nie mógł wywoływać fałszywych alarmów przy chwilowych zakłóceniach odczytów.
Czytelność przy dużej ilości danych
Różne jednostki na jednym ekranie (np. opad w mm i stan wody w cm) groziły bałaganem, który utrudniłby szybką analizę - taką, do jakiej przywykli użytkownicy danych IMGW.
Sprzęt wielu producentów
Sieć pomiarowa rozrosła się do sześciu niekompatybilnych ekosystemów sprzętowych - od czujników z własnym API po starsze pliki FTP/CSV z zewnętrznych stacji jakości wody. Każdy producent ma własne formaty danych i protokoły komunikacji, więc dane były zamknięte w osobnych, niepołączonych systemach.
Wydajność i skala
Dane z ekosystemów sześciu producentów trzeba było zebrać i pokazać na bieżących wykresach - bez spowalniania interfejsu.
Nadzór nad sprzętem
Surowe logi techniczne trzeba było zamienić w jasne, konkretne alerty dla ekipy serwisowej, żeby zapobiegać awariom sprzętu.
Różne grupy odbiorców danych
Różne grupy użytkowników - urzędy, ekipy terenowe, kierownictwo - potrzebowały dostępu do różnych zakresów danych. Wspólny dostęp dla wszystkich oznaczał ryzyko niezgodności z przepisami, a osoby nietechniczne gubiły się w nadmiarze informacji.
Zaufanie do automatycznych czujników
Zdalne czujniki mogą się rozkalibrować albo po cichu zepsuć i godzinami zaniżać lub zawyżać stan wody, zanim ktoś to zauważy. Klient potrzebował sposobu na porównywanie bieżących odczytów z obserwacjami prowadzonymi na miejscu - na wzór weryfikacji stosowanej w państwowej sieci wodowskazów IMGW.
Płatny dostęp do danych bez odsłaniania modelu biznesowego
Klient chciał sprzedawać dostęp do dłuższej historii danych jako płatne rozszerzenie. Użytkownicy standardowi i premium mieli przy tym korzystać z dokładnie tego samego interfejsu - tak, żeby użytkownik darmowy nie miał wrażenia, że coś jest przed nim ukryte.
Ręczne raporty przestały wystarczać
Odbiorcy danych z dziesiątek stacji potrzebowali cyklicznych zestawień dla konkretnych parametrów, okresów i adresatów. Przygotowywanie ich ręcznie, stacja po stacji, przy rosnącej sieci stało się niewykonalne.
Logowanie na publicznych kioskach
Na publicznej tablicy informacyjnej przechodnie mieli od razu zobaczyć dane ze stacji po zeskanowaniu kodu QR - bez wpisywania hasła na wspólnym, niezabezpieczonym urządzeniu i bez dostępu do reszty platformy.
Radar opadów i ortofotomapa z otwartych danych publicznych, bez dodatkowych opłat za dane
Rosnący stan wody mówi więcej, gdy widać pas opadów nadciągający w górze zlewni i brzeg rzeki wokół wodowskazu. Użytkownicy chcieli mieć radar i zdjęcia lotnicze znane z innych serwisów pogodowych, ale komercyjne API pogodowe i mapowe oznaczałyby abonament, który platforma płaciłaby bez końca.
Rozwiązanie.
Interaktywny dashboard
Interfejs zbudowałem w Next.js, żeby był szybki i responsywny. Jego centralnym elementem jest interaktywna mapa: kliknięcie stacji od razu pokazuje aktualne dane i wykresy z wyborem okresu (24 h / 7 dni / 30 dni / całość). Oprócz danych hydrologicznych i meteorologicznych panel stacji pokazuje pomiary z piezometrów (poziom wód gruntowych) i sond glebowych (wilgotność gleby). Dane o opadach, temperaturze i wilgotności gleby w jednym miejscu przydają się do oceny suszy; system nie tworzy prognoz.

Automatyczne alerty SMS
Zaprojektowałem mechanizm po stronie serwera (maszynę stanów) połączony z zewnętrzną bramką SMS. Administratorzy dostali panel, w którym sami ustawiają progi ostrzegawcze i alarmowe. System odfiltrowuje chwilowe zakłócenia, żeby alerty nie były wysyłane bez powodu.

Profesjonalna analityka
Wdrożyłem wykresy z dwiema osiami, które pozwalają wygodnie porównywać różne jednostki pomiarowe. Użytkownik może przybliżać dane i korzystać z rozbudowanego panelu statystyk (trendy, minimum i maksimum bezwzględne z datami, rzędna zera wodowskazu), wzorowanego na profesjonalnych standardach meteorologicznych.

Podgląd ostatnich 48 godzin i historia
Rozbudowałem interfejs o szczegółowy wykres z ostatnich 48 godzin, który otwiera się po kliknięciu kafelka z pomiarem, oraz o uporządkowaną tabelę danych historycznych (widok terminu 06 UTC lub pełnych godzin) do pogłębionej analizy.

Szczegółowe uprawnienia
Zbudowałem system uprawnień, w którym administrator ustala dokładnie, jakie kategorie danych każdy użytkownik może oglądać i eksportować - aż do poziomu konkretnych stacji i parametrów, a nie tylko ogólnych ról. Technik terenowy widzi parametry pracy urządzeń, urząd widzi jakość wody, a subkonto założone przez klienta może zarządzać progami alertów SMS bez dostępu do konfiguracji stacji - wszystko w jednej platformie.

Synchronizacja z uzupełnianiem braków („watermark”)
Zamiast zwykłego pobierania co określony czas wdrożyłem dynamiczny algorytm synchronizacji. Serwer pamięta czas ostatniego zapisanego pomiaru dla każdej stacji i po powrocie łączności sam uzupełnia brakującą historię, bez udziału administratora.

Kreator raportów cyklicznych
Zbudowałem kreator, w którym użytkownik sam ustawia cykliczne raporty PDF - stacje, parametry, okres i odbiorców. Raporty z logo klienta powstają automatycznie według harmonogramu albo na żądanie dla wybranego zakresu dat i trafiają e-mailem lub są gotowe do pobrania.

Kiosk z automatycznym logowaniem przez QR
Zbudowałem mechanizm tworzący ograniczoną sesję na podstawie podpisanego parametru w adresie. Zeskanowanie kodu QR z publicznej tablicy przenosi odwiedzającego prosto do podglądu lokalnych stacji - bez ekranu logowania, bez hasła i bez wglądu w resztę platformy.

Weryfikacja w terenie („Obserwator”)
Dodałem w aplikacji - w przeglądarce i na telefonie - funkcję „Obserwator”, w której pracownik terenowy zapisuje odczyt stanu wody wykonany na miejscu, razem z godziną. Każde zgłoszenie pojawia się jako znacznik bezpośrednio na wykresie stanu wody. Użytkownicy i administratorzy od razu widzą - tak jak przy obserwacjach IMGW - czy odczyt czujnika zgadza się z rzeczywistością, albo dostają wczesny sygnał, że stacja wymaga ponownej kalibracji.

Radar opadów i ortofotomapa
Dodałem przełącznik między zwykłą mapą a oficjalną ortofotomapą GUGiK oraz nakładkę z radarem opadów opartą na EUMETNET OPERA - europejskiej kompozycji radarów państwowych służb meteorologicznych, w tym IMGW. Serwer co 5 minut przetwarza nową klatkę radaru, więc użytkownik może odtworzyć ostatnie dwie godziny, ustawić przezroczystość warstwy i odczytać intensywność z legendy - od mżawki po burzę z gradem. Oba źródła są bezpłatne także do użytku komercyjnego, więc funkcja działa bez stałych kosztów za dane.

