Obserwer to zwykły węzeł MeshCore, który dodatkowo przesyła każdy usłyszany pakiet do brokera MQTT. Im więcej obserwerów, tym szerszy zasięg obserwacji, lepsza rekonstrukcja ścieżek i uczciwsze statystyki — dla wszystkich, którzy korzystają z publicznych analizatorów sieci.
Kroki 1–5 poniżej prowadzą przez całość, od początku do końca.
An observer is an ordinary MeshCore node that also uplinks every packet it hears to an MQTT broker. More observers means wider coverage, better path reconstruction and more honest statistics — for everyone using the public network analyzers.
Steps 1–5 below walk through the whole thing.
Flashuj ze strony observer.gessaman.com — to flasher działający w przeglądarce, wgrywający build MeshCore, który obsługuje do 6 brokerów MQTT jednocześnie. Dzięki temu zasilanie kolejnego analizatora nie kosztuje Cię niczego, co już masz.
-devFlash from observer.gessaman.com — a browser flasher for a MeshCore build that drives up to 6 MQTT brokers at once, so feeding another analyzer costs you nothing you already have.
-dev suffixPełne kasowanie nadaje węzłowi nowy klucz publiczny, więc w analizatorach pojawi się on jako zupełnie nowy obserwer — a jego dotychczasowa historia zostanie przypisana do „starego” węzła.
A full erase gives the node a new public key, so it will show up in the analyzers as a brand-new observer — and its previous history stays attached to the “old” node.
Otwórz Console w nagłówku flashera (port szeregowy, 115200) i wklejaj komendy pojedynczo, linia po linii:
Open Console in the flasher header (serial, 115200) and paste the commands one line at a time:
set radio 869.617981,62.5,8,8 set tx 22 set name PL-KRK YOUR_NODE_NAME set mqtt.iata KRK set timezone Europe/Warsaw set wifi.ssid YOUR_WIFI_SSID set wifi.pwd YOUR_WIFI_PASSWORD
Podmień YOUR_NODE_NAME na nazwę swojego węzła, a YOUR_WIFI_SSID i YOUR_WIFI_PASSWORD na dane swojej sieci WiFi. Kod miasta (KRK w przykładzie) ustaw na najbliższy sobie:
Replace YOUR_NODE_NAME with your node’s name, and YOUR_WIFI_SSID / YOUR_WIFI_PASSWORD with your WiFi credentials. Set the city code (KRK in the example) to the one nearest you:
| Miasto | City | Kod | Code | Miasto | City | Kod | Code |
|---|---|---|---|---|---|---|---|
| Bydgoszcz | BZG | Radom | RDO | ||||
| Gdańsk | GDN | Rzeszów | RZE | ||||
| Katowice | KTW | Szczecin | SZZ | ||||
| Kraków | KRK | Warszawa | WAW | ||||
| Lublin | LUZ | Warszawa — Modlin | WMI | ||||
| Łódź | LCJ | Wrocław | WRO | ||||
| Olsztyn | SZY | Zielona Góra | IEG | ||||
| Poznań | POZ |
To kody IATA polskich lotnisk komunikacyjnych — służą wyłącznie jako etykieta regionu w temacie MQTT, nie mają nic wspólnego z lotnictwem. Wybierz najbliższe duże lotnisko, a nie najbliższe miasto. Jeśli w Twojej okolicy działają już inne węzły, najlepiej użyć tego kodu, którego używają one — im mniej rozdrobnienia, tym czytelniejsze grupowanie na mapie. Nie ma Twojego regionu na liście? Napisz, dobierzemy kod.
These are IATA codes of Polish commercial airports — they serve purely as a region label in the MQTT topic and have nothing to do with aviation. Pick your nearest major airport, not your nearest town. If other nodes already run near you, use the code they use — less fragmentation means clearer grouping on the map. Your region not listed? Write to me and we will pick a code.
set tx 22 to maksimum Helteca — dopasuj do swojej lokalnej sieciPL-KRK w nazwie to zwyczaj, nie wymóg — ułatwia rozpoznanie węzła na mapieset tx 22 is the Heltec maximum — match your local meshPL-KRK prefix in the name is a convention, not a requirement — it just makes the node easier to recognise on the mapBez mqtt.iata temat MQTT wychodzi pusty i analizatory zignorują Twój węzeł. To najczęstsza przyczyna sytuacji „wszystko wygląda dobrze, a mnie nigdzie nie widać”.
Without mqtt.iata the MQTT topic comes out empty and the analyzers will ignore your node. This is the number one cause of “everything looks fine but I appear nowhere”.
Nadal w konsoli. To jest ta część, która wysyła Twój ruch do analizatora analyzer.marwoj.net.
Still in the Console. This is the part that sends your traffic to the analyzer.marwoj.net analyzer.
Od wydania v1.17.1.4 broker mqtt.marwoj.net jest wbudowany w firmware obserwera jako preset marwoj. Nie podajesz hosta, portu ani loginu — i nie musisz do mnie pisać po konto.
Sprawdź, co masz na węźle, poleceniem ver. Potrzebujesz v1.17.1.4 lub nowszej — odpowiedź wygląda mniej więcej tak: v1.17.1.4-observer-c2c4cb5. Masz coś starszego? Przeflashuj z observer.gessaman.com (Krok 1) albo zjedź niżej, do starszej metody.
Since release v1.17.1.4 the mqtt.marwoj.net broker is built into the observer firmware as the marwoj preset. No host, no port, no credentials — and no need to write to me for an account.
Check what your node runs with the ver command. You need v1.17.1.4 or newer — the answer looks roughly like v1.17.1.4-observer-c2c4cb5. Older than that? Reflash from observer.gessaman.com (Step 1), or scroll down to the older method.
set mqtt1.preset marwoj set bridge.enabled on set mqtt.rx on set mqtt.packets on set repeat on reboot
marwoj zastępuje wbudowany cel us/eu, więc węzeł publikuje tam, gdzie go skierujeszset repeat off zamiast onKrok 5 potwierdzi, że połączenie żyje — w get mqtt.status slot 1 powinien pokazać marwoj (ok).
marwoj replaces the built-in us/eu target, so the node publishes where you point itset repeat off instead of onStep 5 confirms the link is alive — in get mqtt.status slot 1 should read marwoj (ok).
W odróżnieniu od starej metody (port 1883, bez szyfrowania) preset marwoj łączy się po MQTT over TLS na porcie 8883. Płytki bez PSRAM (np. Heltec V3) ciągną maksymalnie 2 aktywne sloty TLS/WSS naraz, bo każde takie połączenie zjada ~40 KB wewnętrznej sterty; klasyczne ESP32 T-LoRa V2.1–1.6 — tylko jeden. W układzie z tej instrukcji (slot 1 = marwoj po TLS, slot 2 = zwykły MQTT z Kroku 4) mieścisz się spokojnie nawet na Heltecu V3. Dokładasz kolejne sloty TLS/WSS? Te ponad limit pokażą się w get mqtt.status jako (inactive).
Unlike the older method (port 1883, unencrypted), the marwoj preset connects over MQTT over TLS on port 8883. Boards without PSRAM (Heltec V3) sustain at most 2 active TLS/WSS slots at once, since each such connection costs ~40 KB of internal heap; the classic ESP32 T-LoRa V2.1–1.6 only one. With the layout on this page (slot 1 = marwoj over TLS, slot 2 = plain MQTT from Step 4) you stay well inside that even on a Heltec V3. Adding further TLS/WSS slots? The ones past the limit show up as (inactive) in get mqtt.status.
Jeśli z jakiegoś powodu nie chcesz teraz flashować, ten sam broker działa dalej po staremu — zwykły MQTT na porcie 1883, na indywidualnym loginie. Konto do niego zakładam ręcznie dla każdego obserwera: napisz do mnie, a odeślę login i hasło, zwykle tego samego dnia.
If you would rather not reflash right now, the same broker still works the old way — plain MQTT on port 1883, on an individual login. I issue such an account by hand for each observer: drop me a line and I will send back a username and password, usually the same day.
set mqtt1.preset custom set mqtt1.server mqtt.marwoj.net set mqtt1.port 1883 set mqtt1.username YOUR_USERNAME set mqtt1.password YOUR_PASSWORD set bridge.enabled on set mqtt.rx on set mqtt.packets on set repeat on reboot
Podmień YOUR_USERNAME i YOUR_PASSWORD na dane, które dostaniesz mailem. Węzły już działające na tej konfiguracji zostawiam bez zmian — nie ma potrzeby nic ruszać.
Replace YOUR_USERNAME and YOUR_PASSWORD with the credentials you receive by e-mail. Nodes already running this configuration stay as they are — there is nothing you need to touch.
mqtt.packets on to sam uplink — publikuje to, co węzeł usłyszał. mqtt.rx on razem z bridge.enabled on dokłada drogę powrotną: węzeł subskrybuje brokera i rozgłasza ten ruch z powrotem w lokalne LoRa. Chcesz tylko wysyłać, bez wstrzykiwania czegokolwiek w swoje lokalne RF? Użyj set mqtt.rx off.
mqtt.packets on is the uplink — it publishes what the node hears. mqtt.rx on with bridge.enabled on adds the return path: the node subscribes to the broker and re-broadcasts that traffic onto local LoRa. Want upload only, with nothing injected into your local RF? Use set mqtt.rx off.
Sześć slotów MQTT oznacza, że jeden analizator nie musi być Twoim jedynym uplinkiem. Slot 2, skierowany na brokera społeczności polskiej — tego, z którego korzysta mapa mcmap.cheaterenator.trade:
Six MQTT slots means one analyzer never has to be your only uplink. Slot 2, pointed at the Polish community broker — the one behind the mcmap.cheaterenator.trade map:
set mqtt2.preset custom set mqtt2.server 185.238.72.131 set mqtt2.port 41986 set mqtt2.username loramc2 set mqtt2.password LorA-82049 reboot
mqtt.iata, więc oba dostaną meshcore/KRK/<klucz>/…. Jeśli jakiś broker oczekuje innego tematu: set mqtt2.topic <szablon>marwoj po TLS) nie ruszając limitu TLS na płytkach bez PSRAMmqtt3.*, mqtt4.* i tak dalejmqtt.iata, so both receive meshcore/KRK/<key>/…. If a broker wants a different topic: set mqtt2.topic <template>marwoj) without touching the TLS budget on boards with no PSRAMmqtt3.*, mqtt4.* and so onOkoło 30–60 sekund po restarcie, ponownie w konsoli:
About 30–60 seconds after the reboot, back in the Console:
get wifi.status get mqtt.status get mqtt1.diag get mqtt.iata
wifi.status powinno zwrócić adres IP i RSSImqtt.status powinno pokazać slot 1 jako connectedmqttN.diag poda powód — synchronizacja czasu, TLS albo gniazdo sieciowemqtt.iata nie może być pustePotem znajdź siebie na liście obserwerów: analyzer.marwoj.net → Observers. Daj kilka minut, zanim wpadną pierwsze pakiety.
wifi.status should report an IP address and RSSImqtt.status should show slot 1 as connectedmqttN.diag names the reason — time sync, TLS or socketmqtt.iata must not be emptyThen find yourself on the observers list: analyzer.marwoj.net → Observers. Give it a few minutes for the first packets to land.
Napisz do mnie — to prawie zawsze brakujące mqtt.iata albo WiFi działające wyłącznie na 5 GHz.
Message me — it is almost always a missing mqtt.iata or a 5 GHz-only WiFi.
Oba serwisy poniżej są otwarte dla wszystkich — bez konta i bez własnego sprzętu. Twój obserwer po prostu sprawia, że obraz sieci na nich jest ostrzejszy.
Both services below are open to everyone — no account, no hardware required. Your observer simply makes the picture on them sharper.
Nie. Pakiety, mapa, podgląd na żywo, kanały i statystyki są otwarte dla wszystkich — bez konta i bez sprzętu. Uruchomienie obserwera po prostu wyostrza obraz dla nas wszystkich.
No. Packets, map, live view, channels and statistics are open to everyone, no account and no hardware required. Running an observer simply makes the picture sharper for all of us.
EU/UK Narrow w większości kraju:869.618 MHz · BW 62.5 kHz · SF 8 · CR 8
Wybierz EU/UK Narrow w aplikacji MeshCore albo we flasherze, ewentualnie wpisz wartości ręcznie. Śląsk ma własny preset — zapytaj lokalnie, zanim założysz.
EU/UK Narrow across most of the country:869.618 MHz · BW 62.5 kHz · SF 8 · CR 8
Pick EU/UK Narrow in the MeshCore app or flasher, or enter the values by hand. Silesia runs its own preset — ask locally before you assume.
Tak — i to jest ustawienie domyślne. set repeat on zostawia węzeł pełnym repeaterem, który dodatkowo wysyła dane na MQTT; set repeat off zamienia go w cichego słuchacza, który tylko obserwuje. W obu przypadkach strona MQTT zachowuje się tak samo.
Yes — that is the default. set repeat on keeps the node a full repeater that also uplinks; set repeat off turns it into a silent listener that only observes. Either way the MQTT side behaves the same.
Stają się publiczne na stronach analizatorów: metadane pakietów (SNR, liczba przeskoków, ścieżka, znaczniki czasu) plus te treści, które i tak są publiczne w eterze — adverty oraz ruch na kanałach, których klucz jest powszechnie znany. Wszystko zaszyfrowane kluczem, którego analizator nie posiada, pozostaje nieczytelne.
It becomes public on the analyzer sites: packet metadata (SNR, hops, path, timestamps) plus payloads that are already public on the air — adverts and traffic on channels whose key is publicly known. Anything encrypted with a key the analyzer does not hold stays unreadable.
Wtedy potrzebujesz wyłącznie kroku 3. Build gessamana utrzymuje jednocześnie do 6 brokerów, więc dodaj mqtt1 (albo pierwszy wolny slot) i zostaw całą resztę dokładnie tak, jak jest.
Then you only need step 3. The gessaman build keeps up to 6 brokers alive at once, so add mqtt1 (or the first free slot) and keep everything else exactly as it is.
Otwórz mapę sieci, żeby zobaczyć aktywne repeatery i to, gdzie faktycznie są słyszane. Lista obserwerów pokazuje, które uplinki zasilają analizator w tej chwili.
Open the network map to see active repeaters and where they are actually being heard. The observers page shows which uplinks are currently feeding the analyzer.
Prowadzisz własną instancję CoreScope albo innego konsumenta MQTT? Możesz zrobić lustrzaną kopię tego brokera — nie musisz wcześniej pytać. Użyj konta tylko do odczytu poniżej: może subskrybować, ale nigdy publikować.
Running your own CoreScope, or any other MQTT consumer? You are welcome to mirror this broker — no need to ask first. Use the read-only account below: it may subscribe, but never publish.
server mqtt.marwoj.net port 1883 (plain) / 8883 (TLS) username analyzer-friend password 2r2s5WsopLVt topics meshcore/#
mqttSources w config.json — dodaj connectTimeoutSec: 45, bo domyślna wartość bywa zbyt ciasnamqttSources in config.json — add connectTimeoutSec: 45, the default is often too tight