Naciśnij ESC, aby zamknąć

ADS-B: Instalacja i konfiguracja odbiornika na Synology NAS

Spis treści

Cześć!

W poprzednim poradniku omówiłem konfigurację na Raspberry Pi. Dzisiaj skupimy się na instalacji oraz wstępnej konfiguracji zestawu do odbioru lokalizacji samolotów w powietrzu za pomocą urządzenia Synology i kilku akcesoriów. Co więcej, pokażę Ci, jak wykorzystać istniejący serwer do tego celu, co może być alternatywą dla konfiguracji od podstaw.

Poradnik podzielę na kilka etapów – od wstępnej konfiguracji, po przygotowanie systemu, instalację kontenerów Docker na Synology, udostępnianie naszych danych do innych portali zajmujących się agregowaniem informacji o lotach.

Wstęp

Czym jest ADS-B?

Zasada działania ADS-B

ADS-B (Automatic Dependent Surveillance–Broadcast) to system automatycznego nadzoru i przekazywania informacji używany w lotnictwie. Ta technologia umożliwia statkom powietrznym przesyłanie danych, takich jak położenie, prędkość, wysokość i identyfikacja, innym statkom oraz stacjom naziemnym. Opiera się ona na technologii GPS oraz transponderach zamontowanych na pokładzie statków powietrznych.

System ADS-B pracuje na dwóch głównych częstotliwościach: 1090 MHz oraz 978 MHz. Oba pasma są używane w zależności od regionu świata i zastosowania.

W rzeczywistości, większość dużych statków powietrznych jest wyposażona w transpondery ADS-B, pracujące na częstotliwości 1090 MHz, natomiast mniejsze statki powietrzne, szczególnie te operujące w Stanach Zjednoczonych, mogą korzystać z systemu UAT na częstotliwości 978 MHz. Współdziałanie obu pasm ma na celu zwiększenie skuteczności i elastyczności systemu ADS-B w zarządzaniu ruchem powietrznym.

Co to Synology?

Synology to firma specjalizująca się w produkcji sprzętu sieciowego oraz oprogramowania do przechowywania danych i zarządzania nimi. Ich główne produkty to serwery NAS (Network Attached Storage), które oferują szeroki zakres funkcji, takich jak przechowywanie plików, udostępnianie multimediów, tworzenie kopii zapasowych, a także hosting usług sieciowych.

Dzięki swojej wszechstronności, urządzenia Synology znajdują zastosowanie zarówno w domowych sieciach, gdzie pełnią rolę centralnego magazynu danych i serwera multimedialnego, jak i w firmach, gdzie służą do przechowywania i udostępniania plików oraz uruchamiania różnorodnych aplikacji biznesowych, takich jak serwery poczty elektronicznej, serwery plików, czy platformy do zarządzania projektami.

Dodatkowo, urządzenia Synology są popularne w środowiskach zorientowanych na zabezpieczenia, gdzie wykorzystywane są do przechowywania nagrań z kamer monitoringu oraz do uruchamiania systemów monitoringu wideo. Ponadto, dzięki bogatej gamie aplikacji dostępnych w ich ekosystemie, użytkownicy mogą rozbudować funkcjonalność swoich serwerów NAS, instalując między innymi serwery wirtualizacji czy też rozwiązania do zarządzania danymi w chmurze. W ten sposób, Synology staje się nie tylko centralnym punktem przechowywania danych, ale także platformą umożliwiającą rozbudowane zarządzanie infrastrukturą IT w różnorodnych środowiskach.

Przygotowanie

Przed przystąpieniem do instalacji systemu odbioru ADS-B, warto solidnie się przygotować. Oto obszerniejszy opis, co było konieczne na podstawie mojej konfiguracji dla mojego kolegi.

Do stworzenia poradnika, będę korzystać z dokumentacji udostępnionej przez zespół SDR-Enthusiasts, który wykonał bardzo dobrą pracę. Serdecznie im dziękuję za udostępnienie tych informacji. W dalszej części poradnika będę także korzystać z ich kontenerów, co ułatwi proces instalacji i konfiguracji.

Lokalizacja

Przy zakładaniu systemu odbioru ADS-B z użyciem serwera Synology, pamiętaj o znaczeniu odpowiedniego miejsca do instalacji anteny. Oto kilka wskazówek, które mogą okazać się pomocne.

  • Lokalizacja anteny: Wybierz miejsce, które zapewnia swobodny dostęp antenie do otwartego nieba. Upewnij się, że antena nie będzie przysłonięta przez przeszkody – takie jak drzewa, budynki czy inne obiekty;
  • Unikaj zakłóceń: Umieść antenę z dala od urządzeń generujących zakłócenia elektromagnetyczne, co mogłoby wpłynąć na jakość odbieranych sygnałów;
  • Bezpieczeństwo okablowania: Zapewnij bezpieczne poprowadzenie przewodów od anteny do odbiornika, unikając potencjalnych źródeł uszkodzeń. Zabezpiecz okablowanie przed niekorzystnymi warunkami atmosferycznymi;
  • Optymalna wysokość: Postaraj się umieścić antenę na optymalnej wysokości, aby zminimalizować zakłócenia terenu i poprawić zasięg odbieranych sygnałów;

Biorąc pod uwagę te wskazówki, zdecydowaliśmy się z moim kolegą zainstalować małą szafę RACK na poddaszu domu. Przy okazji zrobiliśmy tam większe poprawki teleinformatyczne, niż nam się wydawało (doszły dodatkowe przewody sieciowe, punkty dostępu. Zdecydowanie warto wcześniej o takich rzeczach pomyśleć (już na etapie budowy domu lub jego późniejszej renowacji), aby przewidzieć centralne miejsce styku przewodów sieciowych (taka mała serwerownia w domu). 

Dzięki umiejscowieniu anteny na dachu, mamy pewność, że zapewniliśmy jej swobodny dostęp do otwartego nieba. Wykorzystując tę optymalną wysokość, unikamy również zakłóceń terenowych, co przyczynia się do poprawy zasięgu odbieranych sygnałów.

Formalności związane z wykorzystywaniem dachu w budynkach mieszkalnych

Geneza problemu

W przypadku planowania instalacji anteny na dachu budynku mieszkalnego, konieczne jest przestrzeganie formalności związanych z prawem budowlanym, zwłaszcza gdy mamy do czynienia z budynkiem objętym wspólnotą lub spółdzielnią.

Upewnij się, że podjęto następujące kroki

W związku z tym, aby postawić maszt oraz antenę na dachu, należy podjąć następujące kroki:

  • Zgoda Wspólnoty lub Spółdzielni: Przed przystąpieniem do instalacji, ważne jest uzyskanie zgody zarządu wspólnoty lub spółdzielni mieszkaniowej. Zazwyczaj dachy budynków mieszkalnych są uznawane za wspólne obszary, a decyzje dotyczące ich wykorzystania wymagają zgody wspólnoty mieszkaniowej.
  • Prawo Budowlane: Należy sprawdzić przepisy prawa budowlanego, aby dowiedzieć się, czy instalacja anteny na dachu wymaga uzyskania jakichkolwiek specjalnych pozwoleń czy zgód. W niektórych przypadkach, w zależności od rodzaju anteny i planowanej instalacji, mogą być wymagane dodatkowe formalności.
  • Umowa i Odpowiedzialność: Wspólnota lub spółdzielnia może również zażądać podpisania umowy, która określi warunki korzystania z dachu, prawa i obowiązki związane z instalacją anteny. Warto także omówić kwestie związane z ewentualnymi uszkodzeniami dachu lub innych elementów budynku podczas instalacji.
  • Bezpieczeństwo Konstrukcji: Niezależnie od celu instalacji anteny, maszt powinien być solidny i bezpieczny. Upewnij się, że spełnia wszelkie normy bezpieczeństwa, aby uniknąć ewentualnych szkód czy wypadków.
  • Zgłoszenie do Wspólnoty Mieszkaniowej: Przed przystąpieniem do prac, ważne jest poinformowanie sąsiadów i mieszkańców o planowanej instalacji, a także wysłuchanie ich ewentualnych obaw czy zastrzeżeń. Współpraca z mieszkańcami może przyczynić się do osiągnięcia porozumienia w sprawie instalacji anteny.

Pamiętaj, że w przypadku każdego budynku i wspólnoty mogą obowiązywać różne zasady, dlatego też zawsze warto skonsultować się z zarządem wspólnoty lub spółdzielni oraz skonsultować się z Wydziałem Praw Lokatorów i Utrzymania Zasobów Mieszkaniowych Departamentu Mieszkalnictwa Ministerstwa Rozwoju i Technologii, aby upewnić się, że wszystkie formalności są spełnione.

Wymagane urządzenia i komponenty

W naszym przypadku, aby mój kolega mógł rozpocząć odbieranie dowolnych informacji przesyłanych przez statki powietrzne, konieczne było posiadanie:

Hardware
  • Synology DS720+ (zakupiony już jakiś czas temu),2x HDD, 4x 2-2.7 GHz, rozbudowany do 8 GB RAM, 2x USB 3.0, 2x 1 GbE LAN;
  • Odbiornik SDR, który zakresem obejmuje częstotliwość 1090 MHz,Odbiornik USB od AirNav ma wbudowany filtr oraz wzmacniacz na wyżej wymienioną częstotliwość – stąd zakup jego był ekonomicznie uzasadniony;
  • Antena zoptymalizowana do pracy na częstotliwości 1090 MHz,
Sposób montażu

Warto zaznaczyć, że antena ADS-B może zostać zamontowana na maszcie od anteny satelitarnej, jeśli nie mamy dostępnego innego miejsca do jej umieszczenia. Jednak zaleca się uporządkowanie instalacji, aby uniknąć nadmiernego obciążenia masztu od anteny satelitarnej i nie utworzyć z niego swoistej „choinki”.

Dlatego też, jeśli to możliwe, warto rozważyć montaż osobnego uchwytu lub masztu na anteny specjalnie przeznaczonego do instalacji anteny ADS-B. Taki zabieg nie tylko zapewni stabilne umieszczenie anteny, ale także umożliwi łatwiejsze zarządzanie instalacją oraz zapewni przyszłą elastyczność. Dzięki dodatkowemu uchwytowi lub masztowi, będziesz miał możliwość zainstalowania innych anten w przyszłości, co może być przydatne przy rozbudowie systemu lub dodatkowych potrzebach komunikacyjnych.

W przypadku instalacji anteny na dachu budynku mieszkalnego – poniżej opisuję dodatkowe komponenty, które w moim przypadku były niezbędne do instalacji anten (obecnie zamontowane są trzy anteny: ADS-B, Airband oraz Open Glider Network).

Dodatkowe wyposażenie

Oprogramowanie

Jako oprogramowanie do monitorowania i udostępniania danych ADS-B innym agregatorom, użyjemy Ultrafeeder od SDR-Enthusiasts. Kroki instalacyjne opiszę poniżej, postępując zgodnie z instrukcjami dostarczonymi przez producenta.

Wprowadzenie tego oprogramowania umożliwi efektywne monitorowanie ruchu powietrznego oraz udostępnianie zebranych danych innym portalom działającym w obszarze ADS-B.

Dzięki udostępnieniu sygnału dla platform monitorujących ruch lotniczy, takich jak FlightRadar24, FlightAware czy RadarBox możemy oczekiwać korzyści w postaci bezpłatnych subskrypcji na tych portalach. To umożliwia pełniejsze korzystanie z zaawansowanych funkcji, śledzenie ruchu powietrznego w czasie rzeczywistym oraz dostęp do dodatkowych informacji i statystyk. Udostępnianie danych ADS-B staje się tym samym wymierną inwestycją w rozwijające się społeczności lotnicze, dając jednocześnie dostęp do bardziej zaawansowanych doświadczeń monitorowania ruchu powietrznego.Flightradar24 Add ADS-B coverage

Zebranie parametrów lokalizacyjnych naszego odbiornika

Aby odpowiednio skonfigurować odbiornik, niezbędne jest zebranie precyzyjnych danych dotyczących jego lokalizacji. Oto kluczowe informacje, które musisz pozyskać:

Wysokość anteny (nad poziomem morza)
  • Aby uzyskać tę informację, odwiedź stronę https://www.freemaptools.com/elevation-finder.htm. Przybliż się pinezką do dokładnego miejsca anteny, a następnie uwzględnij odległość od poziomu gruntu, na którym jest zainstalowana antena.
Szerokość i długość geograficzna anteny (do co najmniej pięciu miejsc po przecinku)
  • Aby uzyskać tę informację, odwiedź https://www.gps-coordinates.net lub https://maps.google.com, przybliż się do dokładnego miejsca anteny i kliknij, aby uzyskać dokładne dane szerokości i długości geograficznej. Alternatywnie możesz skorzystać z podręcznego GPSa.

Podanie precyzyjnych danych lokalizacyjnych stanowi kluczowy krok w efektywnej konfiguracji odbiornika ADS-B. Pamiętaj, aby wprowadzać te informacje z najwyższą dokładnością, co zapewni skuteczne działanie systemu i dostarczy rzetelne dane o ruchu powietrznym.

Krok 1 – Instalacja anteny na dachu

Podczas instalacji anteny na dachu domu lub budynku wielorodzinnego należy przestrzegać kilku ogólnych zasad. Na dachu domu, należy zapewnić stabilne mocowanie anteny (opisałem to wyżej).

W przypadku budynku wielorodzinnego, warto skorzystać z kanału technicznego, w którym przebiegają kable pomiędzy piętrami. W takim przypadku należy dołożyć swój kabel do istniejącej infrastruktury, a także jasno oznaczyć, kto jest odpowiedzialny za ten kabel.

Przy instalacji anteny na dachu budynku należy także zwrócić uwagę na elementy zabezpieczeń przeciwpożarowych, takie jak masa uszczelniająca, na przykład taka jak ta dostępna w produktach marki HILTI. Jeśli między piętrami istnieje papa przeciwpożarowa, konieczne może być uzupełnienie jej masą uszczelniającą po naszej stronie. Masa uszczelniająca ma za zadanie zabezpieczyć przestrzeń przed przenikaniem dymu i ognia w przypadku pożaru, co jest istotne dla zachowania integralności systemu przeciwpożarowego budynku.

Krok 2 – Konfiguracja w Synology DSM

Instalacja Docker (Container Manager) na Synology

Container ManagerDo wersji 6.2 na systemie operacyjnym Synology DiskStation Manager (DSM) dostępny był pakiet Docker, który umożliwiał użytkownikom uruchamianie kontenerów aplikacji na serwerach NAS. Wraz z wprowadzeniem DSM 7 Synology zdecydowało się na wprowadzenie własnego rozwiązania, znanego jako Container Manager.

  • Zaloguj się do interfejsu DSM – Otwórz przeglądarkę internetową i zaloguj się do panelu administracyjnego na swoim urządzeniu Synology, używając odpowiednich danych uwierzytelniających (konto administratora),
  • Zainstaluj Container Manager – Po zalogowaniu, przejdź do Centrum Pakietów (które jest centralnym miejscem do zarządzania aplikacjami na urządzeniach Synology). Wyszukaj pakiet Container Manager i zainstaluj go na swoim urządzeniu.

Wsparcie dla zewnętrznych urządzeń USB na DSM 7

W DSM 7 nie ma już wsparcia dla dongli USB takich jak Wi-Fi, Bluetooth, 3G/4G, USB DAC/speaker oraz DTV dongle. Jeśli twoje urządzenie jest obecnie podłączone do Synology, zostało zapewne ono odłączone po aktualizacji do DSM 7. Aby przywrócić działanie tych urządzeń, należy wykonać następujące kroki (konieczne jest ustawienie odpowiednich uprawnień dostępu oraz ładowanie modułów jądra, aby umożliwić działanie dongli USB):

    • Przejdź do Panelu sterowania, a następnie zjedź na dół aby odnaleźć Harmonogram zadań.
    • Kliknij Utwórz i wybierz Uruchamiane zadanieSkrypt zdefiniowany przez użytkownika,

    Synology, Panel sterowania Harmonogram zadań

    • W zakładce Tworzenie zadaniaOgólne wprowadź następujące wartości:
      • Zadanie: Remaping 80/443 ports,
      • Użytkownik: root,
    • W zakładce Tworzenie zadania – Ustawienia zadania wprowadź następujące wartości:
      • Prześlij szczegóły uruchomienia w wiadomości email: Zaznacz i wprowadź swój adres mailowy,
      • Prześlij szczegóły uruchomienia tylko, gdy skrypt zostanie nieoczekiwanie zakończony: Zaznacz,
      • Uruchom polecenie: Wklej poniższy skrypt w edytor tekstu:
chmod 777 /dev/ttyUSB0
chmod 777 /dev/ttyACM0
/sbin/modprobe usbserial
/sbin/modprobe ftdi_sio
/sbin/modprobe cdc-acm
  • Po wprowadzeniu tych ustawień, kliknij OK, aby zapisać i aktywować nowe zaplanowane zadanie.
  • Teraz nasz skrypt będzie działał automatycznie po każdym restarcie systemu, dbając o to, aby odpowiednie uprawnienia dostępu oraz moduły jądra zostały załadowane.
  • Aby zapewnić, że wprowadzone zmiany zadziałają jak należy, zachęcam do ponownego uruchomienia serwera Synology NAS (DSM). To proste działanie gwarantuje, że wszystkie modyfikacje zostaną skutecznie uwzględnione podczas ponownego uruchamiania systemu. Po tych przyjemnych krokach, nowe ustawienia powinny śmigać bez zarzutu po restarcie serwera.

Zmiana numeru seryjnego SDRa

Większość urządzeń RTL-SDR jest dostarczana z identycznymi numerami seryjnymi. W przypadku obecności więcej niż jednego urządzenia SDR na naszym systemie, może to prowadzić do potencjalnych nieporozumień. Aby uniknąć takiej sytuacji, zaleca się przypisanie numerów seryjnych SDR zgodnych z częstotliwościami, na których pracują te urządzenia i odbierają komunikaty.

Więcej informacji o tym procesie możesz przeczytać w osobnym poradniku, który napisałem tutaj. 👉 Zajrzyj do niego.

Na potrzeby tego poradnika zakładamy, że SDR używany do odbioru ADS-B Mode-S (1090 MHz) będzie miało numer seryjny 00001090.

Jeżeli posiadasz więcej niż jedno urządzenie SDR podłączone do Synology – odepnij je i pozostaw tylko ten odpowiedzialny za odbiór 1090 MHz. Następnie wykonaj poniższą komendę.

docker run --rm -it --device /dev/bus/usb --entrypoint rtl_eeprom ghcr.io/sdr-enthusiasts/docker-adsb-ultrafeeder -s 00001090

Powinien zostać wyświetlony następujący komunikat (Twoje dane mogą się nieznacznie różnić, jednak upewnij się, że nowy numer seryjny urządzenia to 1090):

Found 1 device(s):
  0:  Generic RTL2832U
​
Using device 0: Generic RTL2832U
Found Rafael Micro R820T tuner
​
Current configuration:
__________________________________________
Vendor ID:              0x0bda
Product ID:             0x2832
Manufacturer:           Realtek
Product:                RTL2832U
Serial number:          00001000
Serial number enabled:  yes
IR endpoint enabled:    no
Remote wakeup enabled:  no
__________________________________________
​
New configuration:
__________________________________________
Vendor ID:              0x0bda
Product ID:             0x2832
Manufacturer:           Realtek
Product:                RTL2832U
Serial number:          00001090
Serial number enabled:  yes
IR endpoint enabled:    no
Remote wakeup enabled:  no
__________________________________________
Write new configuration to device [y/n]? y
​
Configuration successfully written.
Please replug the device for changes to take effect.

Naciśnij y, aby kontynuować.

Portainer – Zarządzanie kontenerami

Jeden host

Warto zainstalować Portainera, ponieważ jest to narzędzie umożliwiające łatwe zarządzanie kontenerami Docker na jednym hostu lub w klastrze. Dzięki intuicyjnemu interfejsowi użytkownika, Portainer umożliwia monitorowanie zasobów, uruchamianie, zatrzymywanie i usuwanie kontenerów oraz zarządzanie obrazami Docker.

Jeśli korzystasz tylko z jednego hosta, instalacja Portainera jest prosta. Wystarczy zainstalować go bezpośrednio na maszynie, na której działa Docker. Następnie można uzyskać dostęp do interfejsu Portainera poprzez przeglądarkę internetową, wpisując adres IP hosta oraz numer portu, na którym działa Portainer (domyślnie port 9000).

Potrzebujemy katalogu, aby umieścić tam pliki od Portainera.

  • Zaloguj się na swoim serwerze plików i otwórz aplikację File Station.
  • W folderze współdzielonym o nazwie docker, utwórz nowy folder i nazwij go portainer.

Jeśli nie masz jeszcze włączonego SSH na swoim Synology, wykonaj poniższe kroki

  • Przejdź do Panelu Sterowania, a następnie w sekcji Łączność wybierz Terminal i SNMP;

  • Kliknij Włącz usługę SSH i ustaw dowolny wysoki port np. 45000.

Synology SSH

  • Zapisz ustawienia i przejdź do zalogowania się po SSH do naszego Synology.

Na systemy operacyjne Microsoft Windows polecam PuTTY, z kolei na systemy operacyjne Apple MacOS polecam Termius.

  • Osobiście korzystam z MacOS, stąd posłużę się Termiusem. Poniższą czynność wykonujemy na prawach roota,
  • Zaloguj się na swoje konto do Synology po SSH. 
  • Wpisz poniższą komendę, aby zainstalować Portainer.
sudo docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v /volume1/docker/portainer:/data portainer/portainer-ce:latest
  • Otwórz przeglądarkę i wpisz http://IP-ADRES:9000/. Wybierz nazwę użytkownika i silne hasło, potwierdź je, a następnie kliknij przycisk Utwórz użytkownika.
  • Następnie kliknij Get Started, aby kontynuować korzystanie z lokalnego środowiska, w którym działa Portainer.
Wiele hostów

Agent Portainera to narzędzie, które pełni rolę interfejsu pomiędzy Portainerem (platformą do zarządzania kontenerami Docker) a hostem, na którym uruchamiane są kontenery Docker. Agent umożliwia zdalne zarządzanie kontenerami Docker na hostach przez Portainer.

Korzystanie z agenta Portainera ułatwia centralizowane i zautomatyzowane zarządzanie kontenerami Docker na wielu hostach z poziomu jednego interfejsu użytkownika.

Aby zainstalować Portainer Agent na Synology, wykonaj następujące czynności:

  • Zaloguj się na swoje konto i przejdź do interfejsu administracyjnego.
    • Czy używasz systemu jednokrotnego logowania Authentik? Ułatw sobie proces logowania, integrując Portainera z Authentikiem za pomocą tej instrukcji.

Ekran logowania do Portainera

  • W dolnej części lewej strony sekcji Settings, wybierz i kliknij Environments,
  • Kliknij Add environment,

Portainer Add Environment

  • Z listy proponowanych środowisk, wybierz opcję podłączenia Docker Standalone. Następnie kliknij Start Wizzard,

Portainer Environment Wizard

  • Pozostaw zaznaczoną opcję Agent, a następnie skopiuj komendę instalacji agenta na zdalnym urządzeniu,
  • Zaloguj się po SSH do Synology i wpisz poniższą komendę:
docker run -d \
  -p 9001:9001 \
  --name portainer_agent \
  --restart=always \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /volume1/@docker/volumes:/var/lib/docker/volumes \
  portainer/agent:2.19.4
  • Poczekaj aż Agent zostanie zainstalowany na zdalnym urządzeniu.
  • Powróć do edycji Quick Setup w Portainerze,
  • W miejscu Name wpisz nazwę hostname zdalnego urządzenia: syno02
  • Environment address: np. 192.168.100.10:9001
  • Zatwierdź konfigurację przyciskiem Connect. Po pomyślnym połączeniu ze zdalnym urządzeniem powrócisz do głównego ekranu wyboru środowiska w którym chcesz pracować. 

Przygotowanie środowiska dla ADS-B

Utwórz katalog

Potrzebujemy katalogu, aby umieścić naszą aplikację. Nazwa tego katalogu będzie nazwą naszej aplikacji.

  • Zaloguj się na swoim serwerze plików i otwórz aplikację File Station.
  • W folderze współdzielonym o nazwie docker, utwórz nowy folder i nazwij go ultrafeeder.
  • Wewnątrz folderu ultrafeeder utwórz dwa foldery dodatkowe: globe_history oraz graphs1090.
Wygeneruj UUID Twojego odbiornika

UUID (Universally Unique Identifier) to unikalny identyfikator używany do rozpoznawania na różnych serwerach przekazywania danych. W przypadku braku UUID możesz utworzyć nowe, logując się na swoje urządzenie, a następnie wykonaj poniższą komendę:

cat  /proc/sys/kernel/random/uuid

Możesz użyć wynikowego ciągu znaków tej komendy (w formacie 00000000-0000-0000-0000-000000000000) jako swojego UUID. W dalszych konfiguracjach będziesz używać tego samego UUID dla każdego feeder-a swojej stacji.

Utwórz identyfikator panoramy heywhatsthat

Heywhatsthat to strona internetowa, która może generować nakładkę na mapie, pokazując teoretyczny zasięg na podstawie przeszkód i krzywizny ziemi. W lewym górnym rogu strony z panoramą znajdziesz adres URL, który będzie wyglądać tak: https://www.heywhatsthat.com/?view=CW5KV545. Ten kod będzie używany później w instrukcjach konfiguracji.

Aby utworzyć panoramę, wykonaj poniższe czynności:

  • Odwiedź stronę https://heywhatsthat.com/,
  • Kliknij New Panorama,
  • Ustaw dokładną lokalizację swojej anteny,
  • Wprowadź tytuł swojej lokalizacji / anteny,
  • Prześlij żądanie i poczekaj, aż przetwarzanie zostanie ukończone,

Instalacja Ultrafeeder za pomocą Docker Compose w Portainer

Kontener Ultrafeeder stanowi serce naszego odbiornika ADS-B. Odbiera sygnały na częstotliwości 1090 MHz z Twojego SDR-a, demoduluje komunikaty, udostępniając je dla wszystkich innych kontenerów. Utworzymy teraz plik konfiguracyjny w Docker Compose za pomocą Portainera.

  • Z ekranu głównego Portainera, wybierz swoje urządzenie które wcześniej podłączyliśmy centralnie lub agentem.

Portainer Environment

  • Przejdź do sekcji Stacks, następnie Add stack.
    • Name: adsb-feeder
    • Web editor: Wklej poniższą zawartość kodu
version: '3.8'

services:
  ultrafeeder:
  # ultrafeeder combines a number of functions:
  # - it retrieves and decodes 1090MHz Mode A/C/S data from the SDR(s) using Wiedehopf's branch of readsb
  # - it implements a `tar1090` based map on port 80 (mapped to port 8080 on the host)
  # - it includes graph1090 (system statistics website) on http://xxxxx/graphs1090
  # - it sends ADSB data directly (without the need of additional containers) to the
  #   "new" aggregators, and, if desired, also to AdsbExchange
  # - it includes mlat-client to send MLAT data to these aggregators
  # - it includes an MLAT Hub to consolidate MLAT results and make them available to the built-in map and other services

    image: ghcr.io/sdr-enthusiasts/docker-adsb-ultrafeeder:lastest
    tty: true
    container_name: ultrafeeder
    hostname: ultrafeeder
    restart: unless-stopped
    device_cgroup_rules:
      - 'c 189:* rwm'
    ports:
      - 8080:80               # to expose the web interface
      - 9273-9274:9273-9274   # to expose details for grafana
    environment:
      # --------------------------------------------------
      # general parameters:
      - LOGLEVEL=error
      - TZ=${FEEDER_TZ}
      # --------------------------------------------------
      # SDR related parameters:
      - READSB_DEVICE_TYPE=rtlsdr
      - READSB_RTLSDR_DEVICE=${ADSB_SDR_SERIAL}
      - READSB_RTLSDR_PPM=${ADSB_SDR_PPM}
      #
      # --------------------------------------------------
      # readsb/decoder parameters:
      - READSB_LAT=${FEEDER_LAT}
      - READSB_LON=${FEEDER_LONG}
      - READSB_ALT=${FEEDER_ALT_M}m
      - READSB_GAIN=${ADSB_SDR_GAIN}
      - READSB_RX_LOCATION_ACCURACY=2
      - READSB_STATS_RANGE=true
      #
      # --------------------------------------------------
      # Sources and Aggregator connections:
      # Note - remove the ones you are not using / feeding
      #  Make sure that each line ends with a semicolon ";",  with the
      #  exception of the last line which shouldn't have a ";"
      - ULTRAFEEDER_CONFIG=
          adsb,dump978,30978,uat_in;
          adsb,feed.adsb.fi,30004,beast_reduce_plus_out;
          adsb,in.adsb.lol,30004,beast_reduce_plus_out;
          adsb,feed.airplanes.live,30004,beast_reduce_plus_out;
          adsb,feed.planespotters.net,30004,beast_reduce_plus_out;
          adsb,feed.theairtraffic.com,30004,beast_reduce_plus_out;
          adsb,data.avdelphi.com,24999,beast_reduce_plus_out;
          adsb,skyfeed.hpradar.com,30004,beast_reduce_plus_out;
          adsb,feed.radarplane.com,30001,beast_reduce_plus_out;
          adsb,dati.flyitalyadsb.com,4905,beast_reduce_plus_out;
          mlat,feed.adsb.fi,31090,39000;
          mlat,in.adsb.lol,31090,39001;
          mlat,feed.airplanes.live,31090,39002;
          mlat,mlat.planespotters.net,31090,39003;
          mlat,feed.theairtraffic.com,31090,39004;
          mlat,skyfeed.hpradar.com,31090,39005;
          mlat,feed.radarplane.com,31090,39006;
          mlat,dati.flyitalyadsb.com,30100,39007
          #mlathub,piaware,30105,beast_in;
          #mlathub,rbfeeder,30105,beast_in;
          #mlathub,radarvirtuel,30105,beast_in;
          #mlathub,planewatch,30105,beast_in
      # --------------------------------------------------
      - UUID=${ULTRAFEEDER_UUID}
      - MLAT_USER=${FEEDER_NAME}
      - READSB_FORWARD_MLAT_SBS=true
      #
      # --------------------------------------------------
      # TAR1090 (Map Web Page) parameters:
      - UPDATE_TAR1090=true
      - TAR1090_DEFAULTCENTERLAT=${FEEDER_LAT}
      - TAR1090_DEFAULTCENTERLON=${FEEDER_LONG}
      - TAR1090_MESSAGERATEINTITLE=true
      - TAR1090_PAGETITLE=${FEEDER_NAME}
      - TAR1090_PLANECOUNTINTITLE=true
      - TAR1090_ENABLE_AC_DB=true
      - TAR1090_FLIGHTAWARELINKS=true
      - HEYWHATSTHAT_PANORAMA_ID=${FEEDER_HEYWHATSTHAT_ID}
      - HEYWHATSTHAT_ALTS=${FEEDER_HEYWHATSTHAT_ALTS}
      - TAR1090_SITESHOW=true
      - TAR1090_RANGE_OUTLINE_COLORED_BY_ALTITUDE=true
      - TAR1090_RANGE_OUTLINE_WIDTH=2.0
      - TAR1090_RANGERINGSDISTANCES=50,100,150,200
      - TAR1090_RANGERINGSCOLORS='#1A237E','#0D47A1','#42A5F5','#64B5F6'
      - TAR1090_USEROUTEAPI=true
      #
      # --------------------------------------------------
      # GRAPHS1090 (Decoder and System Status Web Page) parameters:
      - GRAPHS1090_DARKMODE=true
      #
      # --------------------------------------------------
      - PROMETHEUS_ENABLE=true
    volumes:
      - /volume1/docker/ultrafeeder/globe_history:/var/globe_history
      - /volume1/docker/ultrafeeder/graphs1090:/var/lib/collectd
      - /proc/diskstats:/proc/diskstats:ro
      - /dev:/dev:ro
    tmpfs:
      - /run:exec,size=256M
      - /tmp:size=128M
      - /var/log:size=32M
Zmienne środowiskowe w Portainerze
  • W powyższym pliku znajduje się kilka parametrów, które mają wartości oznaczone jako ${PARAMETR}. Wartości te są odczytywane z sekcji zmiennych środowiskowych – które opisane są poniżej.
  • Pod edytorem kodu, w sekcji zmiennych środowiskowych (eng: Environment variables), przejdź do Zaawansowanego trybu (eng: Advanced mode).

Advanced environment Portainer

  • Wklej poniższą zawartość, a podpowiedzi które znajdują się w nawiasach <TEKST> zastąp wartościami według legendy opisanej poniżej:
FEEDER_ALT_FT=<wysokość anteny w stopach>
FEEDER_ALT_M=<wysokość anteny w metrach>
FEEDER_LONG=<szerokość geograficzna>
FEEDER_TZ=<strefa czasowa>
FEEDER_NAME=<nazwa lokalizacji>
ADSB_SDR_SERIAL=1090
ADSB_SDR_GAIN=autogain
ULTRAFEEDER_UUID=<Twój UUID z wcześniejszego kroku>
FEEDER_HEYWHATSTHAT_ID=<Twój ID z heywhatsthat z wcześniejszego kroku>
FEEDER_HEYWHATSTHAT_ALTS=<pożądane altitudy zasięgu teoretycznego>

Legenda:

  • FEEDER_ALT_FT to wysokość anteny nad poziomem morza w stopach,
  • FEEDER_ALT_M to wysokość anteny nad poziomem morza w metrach,
  • FEEDER_LAT to szerokość geograficzna anteny (dostępna również pod powyższym linkiem),
  • FEEDER_LONG to długość geograficzna anteny (dostępna również pod powyższym linkiem),
  • FEEDER_TZ to strefa czasowa w formacie TZ database name,
  • FEEDER_NAME to nazwa lokalizacji. Jest używana tylko w tytule strony internetowej mapy,
  • ADSB_SDR_SERIAL to numer seryjny dongla ADS-B; poprzednie kroki ustawiają to domyślnie na 1090, ale jeśli używasz innego numeru seryjnego, wprowadź go tutaj,
  • ADSB_SDR_GAIN to pożądane wzmocnienie dongla w dB lub autogain, jeśli chcesz, aby oprogramowanie określiło optymalne wzmocnienie,
  • ULTRAFEEDER_UUID to wcześniej wygenerowany UUID,
  • FEEDER_HEYWHATSTHAT_ID to kod z adresu URL wygenerowanego wcześniej,
  • FEEDER_HEYWHATSTHAT_ALTS to lista wysokości w metrach, dla których mapa będzie wyświetlać teoretyczny maksymalny zasięg; powszechnym punktem początkowym są 3000 metrów i 12000 metrów.

Dla przykładu:

FEEDER_ALT_FT=50.524
FEEDER_ALT_M=15.4
FEEDER_LAT=52.16547
FEEDER_LONG=20.96719
FEEDER_TZ=Europe/Warsaw
ADSB_SDR_SERIAL=1090
ADSB_SDR_GAIN=autogain
ADSB_SDR_PPM=1
ULTRAFEEDER_UUID=00000000-0000-0000-0000-000000000000
FEEDER_HEYWHATSTHAT_ID=CW5KV545
FEEDER_HEYWHATSTHAT_ALTS=3000,12000

Aby powrócić do poprzedniego widoku, wybierz opcję Simple mode w Portainerze. W trybie tym Portainer automatycznie przypisze wprowadzone zmienne środowiskowe do kategorii name i value. Jeśli planujesz dodawać kolejne agregatory danych ADS-B do konfiguracji, ułatwi to proces, gdyż będziesz mógł dodawać zmienne, które będą potrzebne w przyszłości.

Wdrożenie Docker Compose do produkcji

Ostatnim krokiem pozostało nam utworzenia środowiska i uruchomienie instalacji. Aby to uczynić, pod sekcją Actions kliknij na Deploy the stack i poczekaj chwilę, aż obrazy kontenerów Docker zostaną pobrane do pamięci urządzenia. 

Jeśli wszystko przebiegnie pomyślnie, w prawym górnym rogu ekranu pojawi się komunikat Success: Stack successfully deployed, a nastepnie w liście kontenerów pojawią się dwa nowo utworzone kontenery. 🚀

Dostęp do danych przez przeglądarkę

Po skonfigurowaniu i uruchomieniu przy użyciu powyższego przykładu, kontener udostępni stronę internetową na porcie 8080 hosta. Oto kilka wygenerowanych stron internetowych:

  • http://IP-ADRES-RPI:8080/ : Mapa tar1090 oraz tabela wszystkich samolotów, które antena wykryła i zdekodowała,
  • http://IP-ADRES-RPI:8080/graphs1090/ : Strona z wykresami i statystykami działania naszego odbiornika.

W jakie miejsca są przekazywane dane ADS-B ze stacji?

Jeżeli chcesz dowiedzieć się więcej na temat konkretnych informacji oraz jakim protokołem wysyłane są dane z odbiornika, zajrzyj tutaj do linku. Autorzy SDR-Enthusiasts opisują bardzo precyzyjnie to pytanie wraz z definicją kto jest komercyjnym, a kto non-profitowym agregatorem danych.

Brak wykresów Disk I/O IOPS oraz Disk I/O Bandwith w graphs1090

W momencie pisania poradnika zauważyłem, że dane wejścia/wyjścia (I/O) z dysku, na którym zainstalowany jest Ultrafeeder, nie są przekazywane do Graphs1090. W najbliższym czasie zgłoszę problem poprzez ticket na GitHubie do autora komponentu, aby ten mógł wprowadzić odpowiednią poprawkę do kodu.

ADS-B Graphs10190, Disk I/O

Jeśli masz dodatkowe pytania dotyczące konfiguracji, śmiało zostaw komentarz pod tym artykułem lub skontaktuj się ze mną bezpośrednio. Chętnie odpowiem na wszelkie wątpliwości i pomogę rozwiązać ewentualne problemy. Twoje pytania mogą pomóc w ulepszeniu tego poradnika dla innych użytkowników.

Dodatkowe źródła i informacje

Dziękuję, że dotrwałeś do tego miejsca. W celu dalszego zgłębienia tematu i uzyskania szczegółowych informacji, polecam sprawdzenie poniższych linków. Są one wartościowymi źródłami, które zostały wykorzystane podczas opracowywania tego poradnika.

Filip Chochół

Filip Chochol runs two blogs: personal “chochol.io” and together with his girlfriend “Warsaw Travelers” about travel. He specializes in IT resource management and technical support, and has been active in the field of cyber security awareness for almost two years. A proponent of open-source technologies, he previously worked in the film and television industry in the camera division (2013-2021). After hours, he develops interests in smart homes and networking.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *


This site uses Akismet to reduce spam. Learn how your comment data is processed.