FacebookLinkedInEN
RealizacjaMonitoring środowiska / IoT

Wodowskaz:
dane hydrologiczne i meteo
z całej Polski na jednej mapie.

Zobacz platformę

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.

BranżaMonitoring środowiska / IoT
StatusProdukcja / stała współpraca
RynekPolska (zasięg ogólnokrajowy)
01_Cel

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.

Ksawery SkąpskiPrezes zarządu, ENVISUM Consulting
5/5
Ksawery Skąpski
02_

Wyzwania.

01

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”).

02

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.

03

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.

04

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.

05

Wydajność i skala

Dane z ekosystemów sześciu producentów trzeba było zebrać i pokazać na bieżących wykresach - bez spowalniania interfejsu.

06

Nadzór nad sprzętem

Surowe logi techniczne trzeba było zamienić w jasne, konkretne alerty dla ekipy serwisowej, żeby zapobiegać awariom sprzętu.

07

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.

08

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.

09

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.

10

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.

11

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.

12

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.

03_

Rozwiązanie.

01

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.

Interaktywna mapa z okienkiem danych stacji
02

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.

Panel konfiguracji alertów SMS
03

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.

Wykres z dwiema osiami i panelem statystyk
04

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.

Widok szczegółów z 48 godzin i tabela danych historycznych
05

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.

Panel zarządzania użytkownikami i dostępem z uprawnieniami do kategorii danych
06

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.

Tabela serwisowa z monitoringiem stanu stacji
07

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.

Panel konfiguracji i harmonogramu automatycznych raportów
08

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.

Automatyczne logowanie przez kod QR na publicznej tablicy informacyjnej
09

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.

Wykres stanu wody ze znacznikiem obserwacji z terenu
10

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.

Radar opadów na tle ortofotomapy Polski
04_

Technologie.

[01]
Next.jsFramework frontendowy
[02]
Node.jsZadania cykliczne i maszyna stanów
[03]
Baza SQLPrzechowywanie danych
[04]
LeafletWyświetlanie danych przestrzennych
[05]
Docker / VPSInfrastruktura wdrożeniowa
[06]
API SMSWysyłka alertów
[07]
Parsery danych wielu producentówYSI EXO / In-Situ TROLL 500 / Keller / Aqualabo / Aqua TROLL / Meteobot
[08]
Pobieranie plików FTP/CSVAutomatyczna synchronizacja i odczyt plików
[09]
Generator raportówTworzenie PDF i wysyłka e-mail
[10]
Moduł weryfikacji w terenie„Obserwator” - sprawdzanie danych na miejscu
[11]
Logowanie przez QR (NextAuth)Ograniczone sesje demonstracyjne
[12]
Radar EUMETNET OPERAKompozycja radarowa opadów (Cloud-Optimized GeoTIFF)
[13]
Ortofotomapa GUGiK (WMTS)Podkład ze zdjęć lotniczych

Chcesz mieć dane ze wszystkich stacji w jednym miejscu?

Zamiast kilku paneli od różnych producentów - jeden system, któremu możesz ufać. Umów rozmowę: sprawdzę, jakie dane daje Twój sprzęt, i powiem, co da się zbudować.