W pierwszej części wyjaśniliśmy, po co są regiony, a w drugiej ustawialiśmy je w starszych wersjach firmware. Teraz czas na wersję 1.16 i nowsze, w których całą hierarchię regionów da się wpisać jedną linijką. To spora wygoda, szczególnie gdy konfigurujesz repeater zdalnie z telefonu. Przykład jest ten sam co poprzednio: województwo świętokrzyskie z sąsiadami.

Co nowego w 1.16

Nowość nazywa się region def. Zamiast osobnego region put dla każdego regionu (a w wersjach od 1.10 do 1.14 także region allowf), wysyłasz jedno polecenie z całym drzewem. Ma to dwie zalety. Po pierwsze, jest krócej. Po drugie, jest pewniej: przy zdalnej konfiguracji pojedyncza zgubiona wiadomość nie zostawi repeatera z połową regionów. Każdy region utworzony przez region def od razu ma zgodę na przekazywanie ruchu, tak samo jak po region put od wersji 1.15.

Reszta poleceń się nie zmieniła. Nadal zapisujesz zmiany przez region save, sprawdzasz przez region get, usuwasz przez region remove, a region domyślny ustawiasz przez region default.

Zanim zaczniesz

Sprawdź wersję firmware poleceniem ver. Starszy firmware nie zna region def i odpowie błędem Err - ??. Wtedy skorzystaj z instrukcji z części 2. Dostęp do konsoli masz tak jak w części 2: kabel USB albo zdalna administracja z aplikacji. W nowszych aplikacjach jest też ekran Manage Regions, o którym piszemy niżej. Nazwy regionów zostają bez zmian: małe litery, cyfry i myślniki, oparte na starych kodach ISO 3166-2:PL (pl, pl-sk, pl-mz i tak dalej). Wyjaśnienie, skąd je wzięliśmy i dlaczego są tam sąsiednie województwa, znajdziesz w części 2.

Jak czytać region def

Polecenie czyta po kolei słowa oddzielone spacjami, zwane tokenami, i przesuwa przy tym kursor, czyli wskaźnik miejsca w drzewie regionów. Kursor zaczyna w korzeniu drzewa. Korzeniem jest region *, ten sam, który oznacza pakiety bez regionu. Tokeny mają dwie postacie:

  • nazwa tworzy region jako dziecko tego, na czym stoi kursor, a potem kursor wchodzi do tego regionu,
  • nazwa|skok tworzy region tak samo, ale kursor przenosi się potem do regionu o nazwie „skok”. Region „skok” musi już istnieć w repeaterze albo powstać wcześniej w tym samym poleceniu. To sposób na cofnięcie się w górę i zaczęcie nowej gałęzi.

U nas wystarczy jedna gałąź z siedmioma dziećmi. Najpierw tworzymy pl (kursor wchodzi do pl), a potem każde województwo tworzymy pod pl i od razu wracamy na pl. Ostatnie województwo nie potrzebuje powrotu.

Dodajemy regiony krok po kroku

Wpisz jedną linijkę:

region def pl pl-sk|pl pl-mz|pl pl-lu|pl pl-pk|pl pl-ma|pl pl-sl|pl pl-ld

W odpowiedzi repeater pokaże drzewo regionów, tak jak po samym poleceniu region. Obejrzyj je i upewnij się, że pod pl jest wszystkich siedem województw, każde z literą F. Na repeaterze bez wcześniejszych regionów odpowiedź wygląda tak:

* F
 pl F
  pl-sk F
  pl-mz F
  pl-lu F
  pl-pk F
  pl-ma F
  pl-sl F
  pl-ld F

Jeśli wszystko się zgadza, zapisz zmiany:

region save

Teraz ustaw region domyślny, czyli pieczątkę dla ogłoszeń, które repeater wysyła sam:

region default pl-sk
region save

Na koniec sprawdź pojedynczy region:

region get pl-sk

Odpowiedź powinna zawierać literę F, czyli zgodę na przekazywanie ruchu. Całą listę zobaczysz poleceniem region, także zdalnie z aplikacji (działa tak od wersji 1.12).

Mam już regiony z części 2

Spokojnie, nie musisz niczego kasować. region def nie czyści istniejącego drzewa. Jeśli region już jest, polecenie tylko ustawia mu rodzica zgodnie z kursorem, a jeśli go nie ma, tworzy go. Możesz więc przepisać konfigurację z części 2 jedną linijką i nic się nie zdubluje. Pamiętaj tylko, że każdy region wymieniony w poleceniu dostaje zgodę na przekazywanie ruchu, także taki, który wcześniej zablokowałeś przez region denyf. Jeśli wolisz zacząć od zera, najpierw usuń niechciane regiony (region remove, zaczynając od podrzędnych), a dopiero potem wpisz region def.

Limit 160 znaków

Linia w konsoli repeatera może mieć najwyżej 160 znaków. Nasza ma 73, więc mieścimy się z dużym zapasem. Przy większych drzewach polecenie trzeba rozbić na kilka. Każde kolejne polecenie zaczyna od korzenia, dlatego zacznij je od ścieżki do miejsca, w którym chcesz dopisywać dalej. Istniejące regiony zostają wtedy na swoich miejscach, a kursor schodzi po nich w dół drzewa. Na przykład dwa kolejne województwa dopiszesz tak:

region def pl pl-ds|pl pl-op

Ten sam limit dotyczy odpowiedzi. Przy dużym drzewie lista wypisana przez region def albo samo region zostanie ucięta, więc pojedyncze regiony sprawdzaj wtedy przez region get. Gdy dodajesz tylko jedno województwo do istniejącego drzewa, prościej użyć region put, na przykład region put pl-ds pl.

Zmiany, usuwanie i blokowanie

  • Dodanie jednego regionu: region put pl-ds pl.
  • Usunięcie regionu: region remove pl-ld. Najpierw trzeba usunąć regiony podrzędne.
  • Czasowe wyłączenie: region denyf pl-ld blokuje ruch tego regionu, a region allowf pl-ld przywraca go.
  • Po każdej zmianie: region save.

Z blokadą pakietów bez regionu (region denyf *) wstrzymaj się, dopóki sieć wokół ciebie nie przejdzie na regiony. Łagodniejsza opcja, dostępna od wersji 1.16, to limit skoków dla takich pakietów, na przykład set flood.max.unscoped 3. Lokalne wiadomości bez regionu przejdą kawałek drogi, ale nie obiegną całej sieci.

To samo z poziomu aplikacji

Jeśli nie lubisz konsoli, w aplikacji MeshCore jest ekran Manage Regions dla zalogowanego administratora repeatera. Dodajesz tam kolejne regiony i włączasz przy nich Allow Flood. Region domyślny ustawisz w menu przy regionie (⋮, a potem Set as default). Blokadę pakietów bez regionu włącza opcja Deny Flood przy pozycji „Packets without region set”. Kolumna z rodzicem służy tylko do ułożenia listy i nie zmienia działania.

Zakres dla wiadomości ustawiasz osobno, na telefonie. Na każdym kanale otwórz menu ⋮, wybierz Set Region Scope i wpisz nazwę, na przykład pl-sk dla lokalnego czatu albo pl dla ogłoszeń na cały kraj. Zakres domyślny jest w ustawieniach eksperymentalnych (Default Region Scope). Żeby sprawdzić, jakie regiony mają ustawione okoliczne repeatery, otwórz menu ⋮ na ekranie głównym i wybierz Tools → Discover Regions.

Najczęstsze wpadki

  • brak region save: po restarcie regionów nie ma,
  • literówka, spacja albo wielka litera w nazwie: powstaje inny region i repeatery się nie dogadują,
  • skok do regionu, który nie istnieje, na przykład literówka po znaku |: repeater odpowie błędem Err - unknown jump: …, a regiony utworzone przed błędem zostaną na miejscu. Sprawdź je poleceniem region, popraw komendę i wpisz ją jeszcze raz,
  • zgubiony znak |: błędu nie będzie, ale regiony ułożą się inaczej, niż chciałeś. Gdy w naszym poleceniu zamiast pl-sk|pl wpiszesz pl-sk pl, region pl trafi pod pl-sk i z listy zniknie całe drzewo, choć regiony nadal są w repeaterze. Naprawisz to poleceniem region put pl, które przenosi pl z powrotem do korzenia. Dlatego odpowiedź oglądaj przed region save,
  • wiadomość się gubi: być może któryś repeater po drodze nie zna regionu. Czasowo wyczyść zakres w aplikacji i zobacz, czy wiadomość przejdzie.

Na tym kończymy serię. Regiony w naszej okolicy to wciąż eksperyment i nikt nie wie, jak ułożą się za rok, ale dzięki region def każdą zmianę wprowadzisz w kilka sekund. Pełna lista poleceń jest w dokumentacji CLI MeshCore.

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.