W pierwszej części wyjaśniliśmy, po co są regiony. Teraz pora je ustawić. Ten tekst dotyczy repeaterów z firmware MeshCore starszym niż 1.16, czyli bez polecenia region def. Regiony są w firmware od wersji 1.10, ale instrukcja obejmuje wersje od 1.12 do 1.15, bo wcześniej nazwy regionów działały inaczej. Za przykład posłuży województwo świętokrzyskie z sąsiadami, tak jak mamy to ustawione w swoich repeaterach.

Zanim zaczniesz

Regiony ustawia się na repeaterze, nie na telefonie. Potrzebujesz więc dostępu administratora do repeatera i dostępu do jego konsoli. Są dwie drogi:

  • kabel USB i konsola w przeglądarce (np. ze strony flashera MeshCore, wymaga Chrome),
  • zdalnie z aplikacji MeshCore: zaloguj się do repeatera jako administrator i otwórz zakładkę Command Line.

Jedno polecenie działa tylko przez kabel: wczytywanie listy regionów hurtem (region load). Jeśli możesz, pierwszą konfigurację zrób po USB.

Na początek sprawdź wersję firmware poleceniem:

ver

Firmware starszy niż 1.12 najpierw zaktualizuj. Przed wersją 1.10 regionów nie ma wcale: repeater je ignoruje i powtarza wszystko po staremu. W wersjach 1.10 i 1.11 nazwa regionu musiała zaczynać się od znaku #, a region bez niego nie przepuszczał żadnego ruchu. Od 1.12 znak # nie jest potrzebny, a pl-sk i #pl-sk oznaczają w eterze ten sam region.

Skąd wzięły się nazwy regionów

Nazwę regionu można wymyślić dowolnie, ale wszyscy w okolicy muszą używać identycznej. Dlatego dla województw proponujemy przyjęcie standardu: stare kody ISO 3166-2:PL, obowiązujące do 2018 roku, zapisane małymi literami (dozwolone są litery, cyfry i myślniki, najwyżej 29 bajtów, a wielkość liter ma znaczenie: PL-SK i pl-sk to dwa różne regiony). Od listopada 2018 roku ISO zamieniło te kody na numeryczne, na przykład świętokrzyskie z PL-SK na PL-26. My zostajemy przy starych, bo są czytelne: z samego pl-sk widać, o które województwo chodzi. Podobny układ rozważa amerykańska Florida Mesh: wśród omawianych formatów są nazwy oparte na kodach ISO 3166-2 stanów, takie jak us-fl.

Obszar naszych regionów wygląda tak:

Regiony ustawione w repeaterach w województwie świętokrzyskim
Region Co obejmuje Kod ISO od 2018
pl cała Polska (region nadrzędny) —
pl-sk województwo świętokrzyskie PL-26
pl-mz województwo mazowieckie PL-14
pl-lu województwo lubelskie PL-06
pl-pk województwo podkarpackie PL-18
pl-ma województwo małopolskie PL-12
pl-sl województwo śląskie PL-24
pl-ld województwo łódzkie PL-10

Dlaczego w województwie świętokrzyskim są też sąsiedzi? Zżyliśmy się jako grupa i padła propozycja, by trzymać kontakt także w MeshCore. Czy to dobry pomysł? Czas pokaże. Możliwe, że kiedyś powstanie wspólny region południowej Polski. Wszystko zależy od użytkowników sieci. Pamiętaj tylko, że repeater z regionem pl-mz będzie powtarzał też ruch oznaczony tym regionem, a więc pracuje trochę „dla sąsiadów”.

Układ regionów można obejrzeć na mapie regions.meshcore.nz. Dla Polski mapa podpowiada te same stare kody (na przykład pl i pl-sk dla Kielc), ale generuje polecenia bez hierarchii, czyli region put bez rodzica. Dlatego polecenia lepiej wpisać samemu.

Dodajemy regiony krok po kroku

Hierarchia, czyli to, że pl-sk jest „pod” pl, służy tylko do wyświetlania listy. Przemiennik dopasowuje każdą nazwę osobno. Samo pl na liście nie oznacza więc zgody na pl-sk. Każdy region trzeba dodać oddzielnie.

Polecenie region put tworzy region, a opcjonalny drugi argument wskazuje rodzica. W wersji 1.15 od razu włącza też przekazywanie ruchu (we flood) dla tego regionu. Poznasz to po odpowiedzi OK - (flood allowed), bo starsze wersje odpowiadają samym OK:

region put pl
region put pl-sk pl
region put pl-mz pl
region put pl-lu pl
region put pl-pk pl
region put pl-ma pl
region put pl-sl pl
region put pl-ld pl
region save

W wersjach od 1.12 do 1.14 po każdym region put trzeba dodatkowo zezwolić na przekazywanie ruchu poleceniem region allowf:

region put pl
region allowf pl
region put pl-sk pl
region allowf pl-sk
region put pl-mz pl
region allowf pl-mz
(i tak dalej dla pl-lu, pl-pk, pl-ma, pl-sl, pl-ld)
region save

Polecenie region save zapisuje zmiany. Bez niego znikną po restarcie, więc o nim nie zapomnij.

Jeśli masz kabel USB, możesz wczytać całą listę naraz poleceniem region load. Po nim wpisujesz linijki z nazwami, a całość kończysz pustą linią. Każda linijka musi zaczynać się od spacji: jedna spacja to region najwyższego poziomu, dwie to region pod nim i tak dalej. Linijkę bez wcięcia repeater po cichu pomija. Flaga F oznacza zgodę na przekazywanie ruchu. Wpisz ją przy każdym regionie, bo region podrzędny nie dziedziczy jej po rodzicu:

region load
 pl F
  pl-sk F
  pl-mz F
  pl-lu F
  pl-pk F
  pl-ma F
  pl-sl F
  pl-ld F
(pusta linia kończy wczytywanie)
region save

Repeater potwierdzi wczytanie komunikatem OK - loaded 8 regions. Uważaj, bo region load zastępuje całą listę: regiony, których nie wpiszesz, znikną. Regiony, które już były na liście, zachowają dotychczasowe ustawienie przekazywania, niezależnie od F we wczytanej linijce. Dlatego po wczytaniu sprawdź na liście, czy regiony faktycznie mają F, a brakujące włącz przez region allowf.

Sprawdzamy, co wpisaliśmy

Pełną listę regionów pokazuje polecenie region. Są też region list allowed (regiony z zezwoleniem na ruch) i region list denied (zablokowane). Wszystkie trzy działają także zdalnie z aplikacji. O pojedynczym regionie powie:

region get pl-sk

Odpowiedź zawiera nazwę, rodzica i literę F, jeśli przekazywanie jest dozwolone. Brak F oznacza, że repeater tego regionu nie powtarza.

Region domyślny repeatera

Repeater sam też nadaje pakiety, na przykład ogłoszenia o sobie (advert). Żeby nie niosły się po całym kraju, można nadać im pieczątkę lokalnego regionu:

region default pl-sk
region save

Wyczyścisz go poleceniem region default <null>. Region domyślny jest dostępny od wersji 1.15. Starsze wersje odpowiedzą błędem Err - ?? i wysyłają ogłoszenia bez regionu, więc w nich ten krok pomiń.

Zmiany, usuwanie i blokowanie

  • Zmiana rodzica: ponowne region put z tą samą nazwą aktualizuje definicję, np. region put pl-ld pl.
  • Usunięcie regionu: region remove pl-ld. Najpierw trzeba usunąć regiony podrzędne.
  • Czasowe wyłączenie: region denyf pl-ld blokuje przekazywanie ruchu tego regionu, a region allowf pl-ld przywraca je.
  • Po każdej zmianie: region save.

Nie blokuj od razu pakietów bez regionu poleceniem region denyf *. Odetniesz wtedy każdego, kto jeszcze nic nie ustawił, w tym nowych użytkowników w okolicy. Z takim krokiem warto poczekać, aż większość sieci przejdzie na regiony.

A na telefonie

Regiony na repeaterze to połowa pracy. Drugą połową jest pieczątka na wiadomościach. W aplikacji MeshCore możesz ustawić zakres dla każdego kanału osobno i zakres domyślny dla całej aplikacji (w ustawieniach eksperymentalnych). Wpisz nazwę dokładnie tak jak w repeaterze, na przykład pl-sk dla lokalnego czatu albo pl dla ogłoszeń na cały kraj.

Najczęstsze wpadki

  • brak region save: po restarcie regionów nie ma,
  • brak region allowf w wersjach starszych niż 1.15: region jest na liście, ale nie działa,
  • linijki bez wcięcia w region load: repeater pomija je bez żadnego komunikatu,
  • literówka, spacja albo inna wielkość liter w nazwie: powstaje zupełnie inny klucz i repeatery się nie dogadują,
  • repeater po drodze nie zna regionu: wiadomość zatrzymuje się na nim. Pomaga czasowe wyczyszczenie zakresu w aplikacji i sprawdzenie, czy wtedy wiadomość przechodzi.

W trzeciej części pokażemy to samo w wersji od 1.16, gdzie hierarchię można wczytać jedną linijką. Dokumentację poleceń znajdziesz na docs.meshcore.io.

Artykuł powstał na podstawie dokumentacji MeshCore, opisów konfiguracji regionów stosowanych w społecznościach sieci oraz ustaleń lokalnej grupy z województwa świętokrzyskiego.