Przejdź do treści
sapiqa

Edge · LoRa · offline-first

Centrum sportów wodnych, które widzi każdego kursanta na wodzie, także bez internetu

Trackery GPS na LoRa, serwer brzegowy na plaży, strefy bezpieczeństwa z alarmem i pełny system rezerwacji z OTA. Bezpieczeństwo działa lokalnie, a chmura tylko pomaga, kiedy jest łącze.

Status
Wdrożone: baza na Mykonos i demo w Polsce
Okres
kwiecień – październik 2026
zasięg LoRa po wodzie zmierzony w teście, bezpośrednio do bramki
2,5 kmzasięg LoRa po wodzie zmierzony w teście, bezpośrednio do bramki
z solarnym repeaterem na dachu: zasięg projektowy w linii wzroku nad wodą
do 8 kmz solarnym repeaterem na dachu: zasięg projektowy w linii wzroku nad wodą
otwartych portów: dostęp z internetu tylko przez Cloudflare Tunnel
0otwartych portów: dostęp z internetu tylko przez Cloudflare Tunnel
endpointów API w FastAPI
198endpointów API w FastAPI

Problem

Na plaży nie ma pewnego internetu, a instruktor musi wiedzieć, gdzie jest każdy kursant: kto odpłynął za daleko, kto stoi w miejscu od kwadransa, czyj sprzęt wraca. Do tego rezerwacje, waivery, wypożyczalnia i kanały OTA, czyli wszystko, co dziś leży w Excelu i trzech aplikacjach.

Co zbudowałem

  • Trackery GPS Meshtastic (SenseCAP T1000-E) nadają pozycję przez LoRa 868 MHz do bramki WIO L1 Pro przy serwerze. Repeater solarny wydłuża zasięg.
  • NucBox (mini-PC) na plaży: FastAPI, PostgreSQL, InfluxDB, nginx, własny DNS i DHCP w LAN, HTTPS z certyfikatem Let's Encrypt. Tablety działają jako PWA także bez internetu, z mapą offline.
  • Geofencing w odbiorniku pakietów: wyjście ze strefy bezpiecznej albo wejście w strefę zakazaną uruchamia ten sam alarm co SOS. Strefy rysuje się w edytorze na mapie, osobno dla każdego poziomu.
  • Sesje na wodzie z timerem, pauzą i automatycznym podziałem. Tracker jest przypisany do sesji, nie do klienta. Wypożyczalnia ze skanerem QR i drukiem etykiet na drukarce Niimbot przez Bluetooth z przeglądarki.
  • Panel w chmurze dla wielu firm: kalendarze Google, Stripe, Bókun (Viator i inne OTA: push, dostępność, webhooki), waivery z e-podpisem eIDAS przez firma.dev i podpis offline.
  • Agent „Ask AI” w panelu właściciela: czyta sesje, sprzęt i telemetrię, odpowiada głosem (ElevenLabs) i podaje stan sieci mesh. Fabryka dem buduje stronę rezerwacji dla nowej szkoły z samego adresu URL.

Architektura

Najciekawsze jest to, co pod spodem

Wybierz przepływ, żeby zobaczyć, jak dane idą przez system. Kliknij element, żeby przeczytać szczegóły.

← przesuń diagram →

WODA · LORA 868 MHZPLAŻA · NUCBOX, DZIAŁA OFFLINECHMURA · GDY JEST ŁĄCZET1000-Etracker GPS + SOSSolar P1-Prorepeater solarnyWIO L1 Probramka LoRa → USBreceive.pyodbiornik + geofenceInfluxDBtelemetria i śladyFastAPIsesje, sprzęt, alarmyPostgreSQLdane operacyjnenginx · dnsmasqLAN, HTTPS, DNSLive · CMSPWA na tablecieNiimbot B1etykiety QR (BLE)Cloudflare Tunnelwyjście bez otwartych portówbook. · panel.Droplet, wiele firmStripepłatnościBókunOTA, Viatorfirma.devwaivery eIDASClaudeagent Ask AIElevenLabsgłosAgent fleetnadzór (plan)

Przepływy

Alarm dociera do instruktora bez udziału internetu.

Krok 1 z 6

Kliknij element diagramu, żeby zobaczyć szczegóły.

  • sprzęt
  • brzeg / sieć
  • usługa
  • dane
  • AI
  • zewnętrzne
  • ludzie / aplikacje
  • radio
  • tunel
  • HTTPS
  • lokalnie
  • zdarzenie
Opis wszystkich elementów
T1000-E · tracker GPS + SOS
Tracker Meshtastic na ramieniu kursanta. Wysyła pozycję co 30 s (krócej zapychało kanał i gubiło telemetrię), ma przycisk SOS. Konfiguracja całej floty jednym skryptem: około minuty na tracker.
Solar P1-Pro · repeater solarny
Repeater SenseCAP Solar na maszcie. Monitorowany: brak sygnału przez 3 h oznacza awarię w panelu „Mesh health”.
WIO L1 Pro · bramka LoRa → USB
Bramka podpięta na stałe do NucBoxa przez USB. W teście na Zegrzu odbierała trackery z 2,5 km po wodzie, bez przeskoków w sieci mesh. Z solarnym repeaterem SenseCAP P1-Pro na dachu (antena 5,8 dBi, własne zasilanie) zasięg projektowy rośnie do 3–8 km w linii wzroku.
receive.py · odbiornik + geofence
Osobna usługa systemd. Dekoduje pakiety, dopasowuje węzły do trackerów z bazy, sprawdza każdą pozycję algorytmem point-in-polygon wobec stref i zgłasza zdarzenia: SOS, wyjście ze strefy, cisza GPS.
InfluxDB · telemetria i ślady
Szereg czasowy pozycji i telemetrii. Z niego powstaje historia przebiegu sesji i analityka.
FastAPI · sesje, sprzęt, alarmy
Serce systemu: klienci, sesje, wypożyczenia, strefy, zdarzenia. Konfiguracja bazy (marka, waluta, mapa) z jednego pliku, więc ta sama instalacja obsługuje Mykonos, Hel albo demo.
PostgreSQL · dane operacyjne
Klienci, sesje, sprzęt (79 egzemplarzy w sezonie), rezerwacje zsynchronizowane z chmury. Kopie zapasowe z timera.
nginx · dnsmasq · LAN, HTTPS, DNS
Router plażowy rozdaje adresy, a dnsmasq kieruje domenę na NucBoxa, więc tablety otwierają tę samą domenę z ważnym certyfikatem także bez internetu.
Live · CMS · PWA na tablecie
Mapa na żywo ze strefami, alarmy, rejestracja, karta klienta z QR, check-in. Zainstalowana jako PWA, z mapą offline do pobrania jednym przyciskiem.
Niimbot B1 · etykiety QR (BLE)
Drukarka etykiet sterowana z przeglądarki przez Web Bluetooth: etykiety sprzętu i karty klientów, także hurtowo.
Cloudflare Tunnel · wyjście bez otwartych portów
NucBox sam łączy się z Cloudflare, więc w routerze plaży nie ma przekierowań ani otwartych portów. Panel administracyjny za Cloudflare Access.
book. · panel. · Droplet, wiele firm
Rezerwacje online i panel właściciela dla wielu firm. Rezerwacje synchronizują się do NucBoxa, gdy jest łącze; plaża nie czeka na chmurę.
Stripe · płatności
Depozyt albo pełna płatność przy rezerwacji. Plan: Stripe Connect Express, żeby każda szkoła podłączała własne konto w 5 minut.
Bókun · OTA, Viator
Integracja OAuth i REST v2: wypychanie oferty, ceny, dostępność, zdjęcia i webhook rezerwacji.
firma.dev · waivery eIDAS
Oświadczenia podpisywane elektronicznie przed wejściem do wody, z wersją offline na tablecie.
Claude · agent Ask AI
Agent z narzędziami tylko do odczytu: sesje, sprzęt, telemetria, stan sieci mesh. Ma limit kosztów, a działania wymagające zatwierdzenia pokazuje do potwierdzenia.
ElevenLabs · głos
Odpowiedzi agenta i „przeczytaj sytuację” na mapie, odczytywane na głos. Stałe komunikaty są w cache na NucBoxie, więc grają też offline.
Agent fleet · nadzór (plan)
Projekt: tani model pilnuje stale 20+ lokalizacji, droższy wchodzi przy anomalii, a poprawki trafiają jako PR do zatwierdzenia.

Decyzje, które robią różnicę

Bezpieczeństwo nie zależy od chmury

Cały tor tracker → alarm działa w LAN. Chmura daje rezerwacje i agenta, ale jej awaria nie wyłącza SOS.

Tracker przypięty do sesji, nie do klienta

Ten sam tracker przechodzi przez wielu kursantów dziennie. Wiązanie z sesją daje poprawną historię i brak pomyłek przy wydawaniu.

Pojemność eteru to fizyka, nie konfiguracja

Kanały Meshtastic nie zwiększają pojemności. Skalowanie to osobne częstotliwości na kilku bramkach, a dalej TDMA z zegarem GPS na własnym firmware.

Jeden kod, wiele lokalizacji

Marka, waluta, mapa i kontakt są w configu. Demo dla nowej szkoły powstaje scraperem z jej strony w kilka minut.

Jak to działa

Cztery aplikacje, jeden system

Większość centrów żongluje narzędziem do rezerwacji, arkuszem, papierowym oświadczeniem i grupą na WhatsApp. SurfCenter zastępuje to czterema połączonymi aplikacjami z jednym źródłem prawdy.

CMS: check-in wypożyczeń i lekcji, karty klientów, sprzęt z QR i analityka.

Sesja z timerem i trackerem

Dane na ekranach są fikcyjne.

Stos

PythonFastAPIPostgreSQLInfluxDBReactPWAMapboxMeshtasticLoRanginxdnsmasqsystemdCloudflare TunnelStripeBókunClaudeElevenLabsWeb Bluetooth

Linie oferty

Masz proces, który powinien działać sam?

30 minut, bez opłat. Powiem, czy to ma sens, jak bym to zbudował i ile kosztowałoby utrzymanie.

Umów rozmowę