Companion to radio sparowane z telefonem. Wersja 1.18.0 firmware'u MeshCore, wydana 15 października 2026, dodaje do niego wiersz poleceń (Companion CLI). Działa jak konsola znana właścicielom repeaterów: wpisujesz krótką komendę, węzeł odpowiada. Wiersz poleceń jest wbudowany w firmware, a otwiera się go w aplikacji MeshCore.
Dotąd każde nowe ustawienie companiona wymagało osobnej komendy w protokole i aktualizacji aplikacji. Teraz firmware dodaje komendę, a aplikacja może ją od razu wysłać. Własne komendy mogą dodawać też producenci płytek, gdy nowa funkcja sprzętu potrzebuje osobnego włącznika.
Nie mylić z meshcore-cli
Nazwy są podobne, narzędzia różne. meshcore-cli to program w Pythonie uruchamiany na komputerze, który łączy się z węzłem przez USB, Bluetooth lub TCP. Companion CLI jest częścią firmware'u i działa z telefonu.
Czego potrzeba
- firmware companiona w wersji 1.18.0 lub nowszej (wgrasz go przez flasher.meshcore.io),
- aplikacja MeshCore w wersji 1.50.0 lub nowszej, bo ta dodała ekran Command Line.
Gdzie jest wiersz poleceń
Połącz się z companionem, wejdź w Settings i przewiń do sekcji Extra Tools. Pozycja Command Line leży między Debug Logs a Factory Reset – tej ostatniej pozycji lepiej nie dotykać, bo przywraca ustawienia fabryczne. Nagłówek ekranu pokazuje, z którym węzłem rozmawiasz. Na początek wpisz cztery nieszkodliwe komendy:
ver
board
get radio
get name
ver zwraca wersję firmware'u i datę kompilacji, board nazwę płytki. get radio podaje cztery wartości po kolei: częstotliwość, szerokość pasma, współczynnik rozpraszania (SF) i kodowanie (CR). Długi ułamek przy częstotliwości (np. 910,5250244) to tylko sposób zapisu liczby i oznacza 910,525 MHz. Te cztery wartości muszą być takie same jak w sieci wokół ciebie. W Polsce sieć krajowa używa presetu EU/UK (Narrow): 869,618 MHz, 62,5 kHz, SF8 i CR8, a część sieci na południu kraju pracuje z SF6. Skąd ten podział, wyjaśnia artykuł „Wojna o SF w MeshCore”. Komendy set odpowiadają OK albo krótkim potwierdzeniem, a błędna wartość kończy się komunikatem o błędzie, zwykle z dozwolonym zakresem.
Co można ustawić
Autorzy poradnika NodakMesh sprawdzili polecenia na Elecrow ThinkNode M1 z firmware'em 1.18.0. Ten model nie ma Wi-Fi ani własnych komend, więc te części i Remote CLI opisali na podstawie ogłoszenia wydania i kodu firmware'u. Komend jest dużo, dlatego poniżej tylko te, które przydają się najczęściej.
| Komenda | Działanie |
|---|---|
get name / set name <nazwa> |
odczyt i zmiana nazwy węzła |
set pin <6 cyfr> |
zmiana kodu parowania Bluetooth |
get tz.offset / set tz.offset <godziny> |
przesunięcie zegara na ekranie w pełnych godzinach, od −12 do +14 |
get radio / set radio <częst.>,<pasmo>,<SF>,<CR> |
cztery ustawienia LoRa naraz, działają po restarcie |
get tx / set tx <dBm> |
moc nadawania w dBm, działa od razu |
get dutycycle / set dutycycle <1-100> |
jaką część czasu węzeł może nadawać, w procentach (domyślnie 50%) |
get af / set af <0-9> |
to samo ustawienie w starszym zapisie, od wersji 1.15 przestarzałe (af 1 to 50%, af 9 to ok. 10%) |
get path.hash.mode / set path.hash.mode <0-2> |
rozmiar skrótu ścieżki: 1, 2 lub 3 bajty |
reboot |
restart węzła |
poweroff lub shutdown |
wyłączenie węzła |
Kilka rzeczy, które nie są oczywiste:
- Przesunięcie czasu to pełne godziny i stała wartość. Nie zmienia się samo z czasem letnim i zimowym, a wpływa tylko na zegar na ekranie companiona. W Polsce to +2 latem i +1 zimą, więc wartość trzeba zmienić pod koniec marca i pod koniec października.
- Nowy kod PIN zacznie działać po następnym uruchomieniu. Zapisz go przed restartem, inaczej przy ponownym parowaniu zostanie zgadywanie.
poweroffwyłącza węzeł naprawdę: nie włączysz go z powrotem przez sieć, więc nie wysyłaj go do węzła, do którego nie możesz dojść.set radiosprawdza tylko zakresy: częstotliwość 150–2500 MHz, pasmo 7–500 kHz, SF od 5 do 12 i CR od 5 do 8. Nie sprawdza, czy wartości pasują do sieci wokół ciebie. Po zmianie i restarcie węzeł może nikogo nie słyszeć, dopóki nie wrócisz do poprzednich ustawień. Jeśli chcesz tylko zajrzeć, używajget.
Przykładowe wartości z testu (910,525 MHz, 62,5 kHz, SF7, CR5) to ustawienia amerykańskie z Dakoty Północnej. W Polsce i w UE nie wolno ich stosować. W podzakresie 869,4–869,65 MHz, na którym pracują europejskie presety MeshCore, obowiązuje limit 500 mW e.r.p. i 10% czasu nadawania, a w pozostałej części pasma 868 MHz zwykle 25 mW e.r.p. i 0,1–1% czasu nadawania. Moc liczy się razem z zyskiem anteny, więc set tx nie służy do przekraczania tych limitów. Firmware domyślnie dopuszcza 50% czasu nadawania, dlatego w UE ustaw set dutycycle 10. Więcej o tych limitach piszemy w artykule „MeshCore od 1.15 do 1.17.1: co się zmieniło i co warto włączyć po aktualizacji”.
Wi-Fi przez Bluetooth
Wersja 1.18 przynosi buildy companiona BLE+Wi-Fi dla Heltec V3, V4, V4 R8 i Wireless Paper, RAK3112 oraz Xiao S3 i Xiao S3 WIO. Wcześniej przejście z Bluetootha na Wi-Fi wymagało wgrania innego firmware'u. Teraz łączysz się przez Bluetooth i wpisujesz:
set wifi.ssid NazwaSieci
set wifi.pwd haslo
reboot
Po restarcie połącz się znów przez Bluetooth i sprawdź, czy węzeł wszedł do sieci:
get wifi.status
get wifi.ip
Adres IP przyda się w aplikacji, która łączy się z companionem przez Wi-Fi, albo w meshcore-cli przez TCP. Komendy set wifi.* wymagają restartu. Do Wi-Fi należą jeszcze m.in. set wifi.enabled 0|1 i set wifi.clear, które kasuje zapisaną sieć i hasło. W buildach tylko z Bluetoothem lub tylko z USB komendy Wi-Fi nie są skompilowane i odpowiadają Unknown command. Buildy BLE+Wi-Fi nie obsługują z kolei na razie połączenia z aplikacją przez USB, bo port służy w nich do logów. Aplikacja MeshCore ma też nowy ekran WiFi Settings, który robi to samo przyciskami.
Komendy dla konkretnych płytek
Siedem płytek ma już własne komendy: Heltec V4, V4 R8, T096 i Tracker V2, LilyGO T-Beam 1W, Seeed Wio Tracker L1 1W oraz Station G3. Na Heltec V4 są to na przykład get radio.fem.rxgain i set radio.fem.rxgain on|off, które włączają i wyłączają wzmacniacz odbiorczy (LNA) w torze radiowym płytki. Gdy węzeł odpowie Unknown command, sprawdź pisownię, a potem to, czy taka komenda istnieje dla twojej płytki.
Remote CLI: zdalne komendy przez sieć
Druga nowość to wysyłanie komend do cudzego companiona przez sieć, o ile jego właściciel się zgodzi. Uprawnienie nazywa się Remote CLI. Właściciel włącza je w aplikacji osobno dla każdego kontaktu, a domyślnie jest wyłączone. Żeby z niego skorzystać, otwórz kontakt, wybierz Contact Details, potem Extra Tools i Command Line. Jeśli węzeł nie nadał ci uprawnienia, firmware nie wykona komendy, tylko przekaże jej tekst do aplikacji właściciela. Odpowiedzi wracają przez sieć jak zwykłe wiadomości, więc trzeba liczyć się z takim samym opóźnieniem.
Twórcy MeshCore nazywają to uprawnienie bardzo wrażliwym. Osoba z Remote CLI może wysłać do companiona każdą komendę z tego artykułu, czyli m.in.:
- zmienić ustawienia radia i wyrzucić węzeł z sieci,
- zmienić nazwę węzła albo jego PIN Bluetooth,
- zrestartować go lub wyłączyć,
- odczytać zapisane hasło Wi-Fi komendą
get wifi.pwd.
Ostatni punkt łatwo przeoczyć: jeśli companion ma zapisane hasło do domowej sieci, Remote CLI je ujawnia.
Autorzy poradnika radzą nadawać Remote CLI tylko własnym węzłom: drugiemu companionowi zostawionemu na działce albo w warsztacie, węzłowi z Wi-Fi stojącemu na półce lub urządzeniu skonfigurowanemu dla kogoś z rodziny. Gdy znajomy prosi o pomoc z ustawieniami, najlepiej, żeby sam nadał uprawnienie, poczekał na zmianę i je cofnął.
Dla piszących własny firmware
Własne komendy dodaje się przez handleCommand() w klasie MainBoard. Pojawiają się od razu w wierszu poleceń aplikacji, bez zmian w aplikacji i bez nowego identyfikatora komendy w protokole.
Co jeszcze w wersji 1.18.0
Wersja 1.18.0 przynosi też m.in. wyszukiwanie repeaterów na ekranie companiona, węzły czujnikowe, które same wysyłają odczyty subskrybentom po zmianie o ustalony próg, obsługę GPS RAK12500 i RAK12501 na RAK3401 oraz nowe płytki: ThinkNode M4 i M8, Wio Tracker L1 1W, Muzi Base i Waveshare ESP32-S3 LR1121. Wszystkie zmiany omawia artykuł „MeshCore 1.18 kontra 1.17.1: konsola, Wi-Fi i zmiany w repeaterach”.
Artykuł powstał na podstawie poradnika „MeshCore Companion CLI Guide: Commands and Remote CLI” z serwisu NodakMesh, ogłoszenia wydania MeshCore 1.18.0 i dokumentacji poleceń CLI w repozytorium projektu.
