Wysyłasz wiadomość przez MeshCore i po chwili dostajesz odpowiedź. Rozmowa działa, ale co wydarzyło się po drodze? Które stacje usłyszały pakiet i dlaczego analizator pokazuje kilka podobnych wpisów? CoreScope pozwala zajrzeć w ten ruch przez przeglądarkę. To otwarty projekt na licencji GPL-3.0, którego kod jest na GitHubie. Ten przewodnik przechodzi przez jego ekrany na przykładzie działającej instalacji Mazowiecka Sieć MeshCore, prowadzonej przez Kocela, autora tego przewodnika. Drugi przykład to analizator MarWoja, który zbiera dane od obserwatorów z całej Polski.
Podczas kontroli 25 października 2026 Mazowiecka Sieć MeshCore działała na CoreScope v3.15.0, a analizator MarWoja na v3.9.1. Dlatego w drugim analizatorze części opisanych opcji może brakować albo mogą wyglądać inaczej. Wykresy z zakładki Analytics omawia kolejny tekst, druga część przewodnika.
Najpierw sprawdź, czyimi oczami patrzysz
CoreScope zbiera informacje od obserwatorów, czyli stacji przekazujących dane o odebranym ruchu. Służy do tego MQTT – mechanizm przesyłania danych do serwera. Przeglądarka pokazuje więc to, co dotarło do tej instalacji. Nie zamienia komputera w odbiornik radiowy i nie daje pełnego podglądu wszystkich urządzeń MeshCore w Polsce.
Na stronie głównej są liczniki transmisji, węzłów, obserwatorów i ruchu z ostatniej doby. Węzły to urządzenia znane analizatorowi; ich liczba nie mówi, ile osób właśnie rozmawia. Do pakietów należy też ruch techniczny, więc licznik może rosnąć nawet wtedy, gdy na kanale prawie nikt nie pisze.
Packets: co właściwie płynie przez sieć?
Zacznij od Packets, czyli listy pakietów. Przycisk pauzy zatrzymuje aktualizowanie widoku, żeby nowe wpisy nie przeszkadzały w czytaniu; sieci ani obserwatorów nie wyłącza. Poniższe pola pomagają rozpoznać, na co patrzysz.
| Pole | Znaczenie |
|---|---|
| Time | Czas odbioru pokazywany w wierszu. W zgrupowanym pakiecie wiersz pokazuje obserwację wybraną ustawieniem Sort (opisanym niżej). |
| Hash | Identyfikator pakietu używany do zestawiania jego obserwacji; nie nazwa nadawcy. |
| Size | Długość pakietu w bajtach, nie liczba liter wiadomości. |
| Type | Rodzaj ruchu: ogłoszenie, wiadomość, potwierdzenie lub inne dane techniczne. |
| Observer | Stacja, która przekazała obserwację do analizatora; niekoniecznie autor wiadomości. |
| Path | Zapisana ścieżka przedstawiona nazwami lub skrótami węzłów. |
| Details | Opis pakietu, np. nazwa ogłaszanego węzła lub dostępna treść wiadomości. |
ADVERT to ogłoszenie, w którym węzeł podaje swoją tożsamość i możliwości. CHANNEL MSG oznacza wiadomość kanałową, DIRECT MSG – szyfrowaną wiadomość bezpośrednią, a ACK – potwierdzenie wcześniejszej wiadomości lub żądania. REQUEST i RESPONSE dotyczą żądań oraz odpowiedzi, natomiast PATH i TRACE pomagają analizować ścieżki. Widoczny pakiet nie musi oznaczać odczytanej treści.
Jeden pakiet, wiele śladów
Group by Hash porządkuje obserwacje tego samego pakietu w rozwijaną grupę. Strzałka przy wierszu pozwala zajrzeć do środka. Dzięki temu kolejnego odbioru nie pomylisz z nowym pakietem. Licznik pokazuje, ile razy obserwatorzy zarejestrowali ten sam pakiet. Przez ile węzłów przeszedł, mówi dopiero ścieżka (Path).
Na zrzucie widać ogłoszenie Wołomin_Obs_RPT. Pole Observer pokazuje stację, która odebrała ogłoszenie, a Details – nazwę ogłaszanego urządzenia. To dwie role: jedna stacja dostarczyła obserwację, druga jest opisana w ogłoszeniu. Takie różnice giną, gdy patrzysz wyłącznie na rosnący licznik.
Lista Sort: Observer porządkuje obserwacje według stacji. Można wybrać także krótsze lub dłuższe ścieżki oraz wcześniejsze lub późniejsze odbiory. Wpływa to również na obserwację pokazaną w nagłówku grupy: pierwszy wiersz nie musi oznaczać najlepszego sygnału. Hex Paths przełącza nazwy na surowe skróty identyfikatorów, a Columns pozwala dobrać widoczne kolumny.
Filtry w Packets
Wybierz krótki okres, na przykład Last 15 min, oraz konkretnego obserwatora. Następnie ogranicz rodzaj pakietów: Advert przyda się do ogłoszeń urządzeń, Channel Msg do wiadomości kanałowych. Lista kanałów dodatkowo zawęża rozmowy. Wyszukiwarka węzła pomaga odnaleźć pakiety z nim związane, a filtr regionu ogranicza przegląd do wybranej grupy obserwatorów.
Pasek wyrażeń pozwala tworzyć bardziej szczegółowe warunki; składnię sprawdzisz pod Help w aktualnej instalacji. Na początek zwykłe listy wyboru w zupełności wystarczą. Jeśli po filtrowaniu tabela jest pusta, najpierw sprawdź czas, obserwatora i wybrany typ.
Map: rozmieszczenie urządzeń to nie zasięg
W Map przyciski Quick Jump przenoszą widok do regionu, na przykład WAW lub OTW. Przy oddaleniu pobliskie znaczniki łączą się w skupiska z liczbami. Liczba na skupisku to liczba urządzeń w tym miejscu mapy; o wiadomościach ani o zasięgu nic nie mówi.
Panel pozwala wybierać repeatery przekazujące ruch, urządzenia użytkowników, serwery pokojów i czujniki. Last Heard zawęża widok do niedawno słyszanych stacji. Cluster markers grupuje znaczniki, a Heat map pokazuje ich zagęszczenie. Mapa cieplna nie jest pomiarem siły sygnału: duża plama nie gwarantuje łączności z każdego miejsca na jej powierzchni.
Ścieżki też wymagają uwagi. Różne urządzenia mogą mieć taki sam krótki prefiks identyfikatora, więc dopasowanie nazwy bywa niejednoznaczne. Dodatkowe filtry rozróżniają długość prefiksów. Przy dopasowywaniu jednobajtowych skrótów CoreScope v3.15.0 ocenia całą ścieżkę, zamiast wybierać każdy przeskok osobno. Oznaczenie unlisted wskazuje przeskok, któremu model nie przypisał znanego węzła z lokalizacją – urządzenia może brakować w bazie albo jego położenie jest nieznane.
Panel Scope Config filtruje repeatery według tego, jak przekazują ruch oznaczony regionem (zakresem). No data to tylko brak informacji: repeater bez ustawionych regionów wygląda tu tak samo jak taki, przez który nikt jeszcze nie wysłał ruchu z regionem.
Nodes: kiedy ostatnio słyszano moje radio?
Nodes to dobre miejsce, gdy znasz nazwę stacji. Wyszukiwarka przyjmuje nazwę lub początek klucza publicznego. Karty ról oraz filtry Active, Uncertain, Stale, Last Heard i Silent for zawężają listę. W przykładzie wpisanie „Wołomin” zostawia na liście Wołomin_Obs_RPT.
W CoreScope v3.15.0 status Uncertain oznacza brak świeżego, jednoznacznego potwierdzenia aktywności węzła. Jego krótki prefiks nadal pojawia się w ścieżkach, ale jest wspólny dla kilku repeaterów, więc ślady mogą pochodzić od innego urządzenia. Last Heard uwzględnia własne pakiety węzła oraz jednoznacznie przypisane do niego przekazania. Po przejściu na tę wersję czas ostatniego potwierdzonego odbioru może więc być wcześniejszy niż poprzednio pokazywany.
Last Seen mówi, jak niedawno odnotowano węzeł, a First Seen – kiedy pojawił się po raz pierwszy w dostępnej historii. Kliknięcie pozycji otwiera szczegóły. Jeśli nie ma świeżych danych, sprawdź również obserwatorów. Przyczyną może być cisza radiowa, utrata zasięgu albo przerwa w dopływie informacji, niekoniecznie awaria urządzenia.
Live i Channels: ruch w czasie oraz rozmowy
Live przedstawia ruch na mapie z listą zdarzeń. Oś czasu, pauza, przewijanie i powrót do transmisji na żywo pozwalają oglądać dostępny zapis. Inferred Hops pokazuje wnioskowane punkty pośrednie, więc nie traktuj ich jak niezależnie zmierzonych lokalizacji. Color by hash pomaga śledzić pakiety według kolorów, a Multibyte only ogranicza widok do pakietów z dłuższymi skrótami ścieżek. Animacja pomaga w orientacji, lecz nie mierzy prędkości rozchodzenia się fal.
Channels porządkuje wiadomości według kanałów i ułatwia czytanie rozmów. Odczyt zaszyfrowanej treści wymaga właściwego klucza dostępnego analizatorowi. Komunikat decryption failed na liście pakietów nie oznacza sam w sobie złego zasięgu. Kanał publiczny ma powszechnie znany klucz, a klucz kanału z nazwą zaczynającą się od # wynika z samej nazwy, dlatego takie rozmowy analizator zwykle odczytuje. Wiadomości bezpośrednich analizator nie odczyta. Rozmowy z kanału prywatnego może odczytać, jeśli administrator doda jego klucz do konfiguracji.
Observers: czy analizator nadal słyszy sieć?
Gdy na mapie robi się spokojnie, zajrzyj do Observers. To lista stacji, które dostarczają dane; zwykłych użytkowników MeshCore na niej nie ma. Pozwala sprawdzić, czy do analizatora nadal docierają informacje. Obserwator może tylko słuchać lub dodatkowo działać jako repeater. Oznaczenie listener wskazuje wyłączone przekazywanie pakietów, a repeater – włączone, zgodnie z informacją zgłoszoną przez firmware.
Najpierw spójrz na MQTT sources, czyli połączenia analizatora ze źródłami danych. State pokazuje stan połączenia, Last packet – czas ostatniego pakietu, 5m – ruch w ostatnich pięciu minutach, a Disc. – licznik rozłączeń. Sam napis connected potwierdza połączenie z serwerem pośredniczącym, ale nie gwarantuje, że każde radio pracuje poprawnie.
| Pole na liście obserwatorów | Jak je czytać? |
|---|---|
| Status: Online, Stale, Offline | Informacja o świeżości kontaktu według zasad tej instalacji. Stale oznacza nieświeże dane; Offline nie jest diagnozą uszkodzenia radia. |
| Region | Grupa, do której przypisano obserwatora. Filtr regionu ułatwia skupienie się na swojej okolicy. |
| Packet Health | Pokazuje, jak świeże są dane o pakietach. Porównaj ten czas ze statusem stacji – kontakt z obserwatorem i napływ ruchu radiowego to różne rzeczy. |
| Total Packets / Packets/Hour | Licznik raportowanych pakietów i tempo ruchu. Większy wynik nie oznacza automatycznie lepszej anteny: znaczenie mają okolica, aktywność sieci i czas pracy. |
| Clock Offset | Informacja o rozbieżności czasu. Szczegóły przy ikonie zegara pomagają ocenić wiarygodność porównania momentów odbioru. |
| TX 1h | Udział czasu nadawania obserwatora wyliczony z dostępnych próbek z ostatniej godziny. Dotyczy jego nadajnika, nie zajętości całego pasma. Kreska oznacza zbyt krótki lub nieaktualny zestaw próbek. |
| Uptime | Raportowany czas pracy. Nie oznacza nieprzerwanej łączności ze wszystkimi węzłami. |
Przykład: twoja stacja przestała pojawiać się w Packets. Jeśli jednocześnie obserwator ma stare dane, najpierw sprawdź dopływ informacji do analizatora. Jeśli inni obserwatorzy nadal odbierają ruch, zawęź poszukiwania do konkretnego punktu. Tak unikniesz poprawiania anteny, gdy przyczyną jest połączenie z serwerem.
Na stronie Observers w instalacji Mazowiecka Sieć MeshCore jest też instrukcja dołączenia własnego obserwatora: urządzenie MeshCore współpracuje z programem na komputerze przez obsługiwane połączenie USB, Bluetooth lub sieciowe, a program przekazuje pakiety przez MQTT. Korzystaj z instrukcji administratora konkretnej instalacji – samo otwarcie strony Observers nie uruchamia odbiornika.
Zamiast komputera z programem można użyć węzła z firmware MeshCore Observer, który sam wysyła przez Wi-Fi dane o słyszanym ruchu do brokera MQTT.
Czego nie wyczytasz z analizatora
- Pełnej listy urządzeń ani liczby rozmówców: widać tylko to, co dotarło do obserwatorów.
- Zasięgu: mapa, linie ścieżek i mapa cieplna pokazują rozmieszczenie i trasy, a nie obszar gwarantowanej łączności.
- Pewnych nazw przekaźników ze skrótów w ścieżkach: analizator dopasowuje je do znanych węzłów i przy krótkich skrótach może się pomylić. To samo dotyczy punktów pośrednich (Inferred Hops).
- Treści zaszyfrowanych wiadomości bez właściwego klucza kanału.
- Awarii radia z samej pustej tabeli, statusu Offline czy braku danych: najpierw sprawdź czas, obserwatora i filtry.
Pierwsze pięć minut z analizatorem
- W Nodes znajdź węzeł i sprawdź Last Seen.
- W Packets wybierz krótki okres, obserwatora i ogłoszenia Advert.
- Rozwiń grupę pakietu, porównaj obserwacje i ścieżki.
- Na Map wybierz region oraz czas ostatniego odbioru. Oddziel rozmieszczenie urządzeń od zasięgu.
- W Analytics (opisanym w drugiej części przewodnika) sprawdź sygnał dla właściwego okresu i regionu zamiast zaczynać od zbiorczej średniej.
CoreScope pozwala zobaczyć, co dzieje się w obserwowanej części sieci: kto dostarcza dane, kiedy pojawiają się węzły i jak wiele śladów pozostawia jeden pakiet. Najłatwiej przekonać się o tym samemu: otwórz Mazowiecka Sieć MeshCore albo analizator MarWoja i prześledź jeden pakiet od listy Packets po mapę.
Przewodnik powstał na podstawie interfejsu instalacji Mazowiecka Sieć MeshCore oraz dokumentacji i kodu projektu CoreScope. Zrzuty pokazują stan danych z chwili ich wykonania.
