MeshCore Companion Cards to integracja dla Home Assistanta, czyli popularnego programu do sterowania inteligentnym domem. Dodaje do niego panel i karty, dzięki którym węzeł MeshCore można obsługiwać w przeglądarce, w ramach Home Assistanta. Chodzi o węzeł z firmware’em typu companion, czyli urządzenie towarzyszące, które łączy się z Home Assistantem przez USB, Bluetooth albo sieć TCP. Tekst opisuje wersję 2.3.0 z 10 października 2026.

Trzy elementy z jednej integracji

  • panel „MeshCore” w menu bocznym – czat na całą stronę; każdy widok ma własny adres URL, więc działają zakładki i przycisk „wstecz” w przeglądarce,
  • karta czatu (custom:meshcore-chat-card) – ten sam interfejs na dowolnym pulpicie,
  • karta repeatera (custom:meshcore-repeater-card) – statystyki, wykresy historii, ustawienia i konsola jednego repeatera.

Wszystko dostarcza jedna integracja o nazwie meshcore_cards. Sama serwuje kod JavaScript i rejestruje panel, więc nie trzeba dodawać zasobów do pulpitu ani nic wpisywać do configuration.yaml.

Wymagania

  • integracja meshcore-ha w wersji 3.0 lub nowszej, skonfigurowana z co najmniej jednym urządzeniem towarzyszącym,
  • Home Assistant 2025.6 lub nowszy,
  • konto administratora do wszystkiego, co wysyła polecenia do urządzenia: konsol, zakładania kanałów, zarządzania kontaktami, ogłoszeń węzła (advertów) i ustawień. Czytać i wysyłać wiadomości może każdy użytkownik.

Instalacja

Najprościej przez HACS, czyli sklep z dodatkami do Home Assistanta. Gdy HACS odpowie „Repository not found”, trzeba raz dodać repozytorium ręcznie: menu Custom repositories, adres repozytorium i typ Integration. Można też skopiować katalog custom_components/meshcore_cards do config/custom_components/. Potem restart Home Assistanta, dodanie integracji w Ustawienia → Urządzenia i usługi, wybór urządzenia towarzyszącego i odświeżenie przeglądarki. Okna konfiguracji integracji mają polskie tłumaczenie.

Kto ma wersję 2.0 lub starszą, zainstalowaną w HACS jako dodatek do pulpitów (typ Dashboard), musi raz zainstalować ją od nowa, tym razem jako integrację. Trzeba przy tym usunąć stare zasoby pulpitu (Resources) i ewentualny wpis panel_custom: z configuration.yaml. Pulpity z kartami działają dalej bez zmian.

Karta czatu sama znajduje urządzenie po encjach binary_sensor.meshcore_*_messages, więc w podstawowej konfiguracji wystarczy jedna linijka: type: custom:meshcore-chat-card.

Czat: kanały, wiadomości prywatne i potwierdzenia

Interfejs ma cztery zakładki: czat, węzły, konsolę i ustawienia. W czacie są kanały i rozmowy bezpośrednie. Wiadomość wysyła się klawiszem Enter, nowy wiersz to Shift+Enter. Odpowiedź na wiadomość zaczyna się od @[Nazwa], wzmiankę wstawia się po wpisaniu @, a kliknięcie nazwy kanału z # otwiera ten kanał. Każdy kanał ma też wybór zakresu regionu, który pozwala wysłać wiadomość jako rozgłoszenie ograniczone do regionu (np. #region). Czym są regiony, wyjaśnia tekst „Regiony w MeshCore: po co są i jak działają”.

Pod własnymi wiadomościami widać status. W rozmowie bezpośredniej to „wysłano”, „dostarczono” albo „brak potwierdzenia” (ACK). Przy wiadomości na kanale urządzenie przez 4–20 sekund nasłuchuje, czy ktoś ją powtórzył, i pokazuje, ile repeaterów to zrobiło, razem z ich listą. Gdy żadnego powtórzenia nie było słychać, wiadomość dostaje oznaczenie „broadcast (no relays heard)”, a przy niej pojawia się przycisk ponownego wysłania. Ten sam przycisk dostaje wiadomość prywatna bez potwierdzenia.

Węzły, konsola i ustawienia

Zakładka węzłów pokazuje wszystkie odkryte węzły z typem i stanem online, a po wybraniu jednego – szczegóły, w tym mapę, jeśli węzeł podaje pozycję. Konsola uruchamia polecenia urządzenia, takie jak get_bat czy send_advert, i wyświetla odpowiedź. Ustawienia mają pięć kart: ogólne, urządzenie (nazwa, radio, położenie, synchronizacja czasu), kanały, kontakty i informacje. Preferencje z tej zakładki zapisują się osobno w każdej przeglądarce, więc telefon i komputer mogą mieć różne ustawienia.

Obowiązują też ograniczenia z meshcore-ha 3.0. Polecenia, które resetują węzeł, podmieniają jego tożsamość albo wysyłają surowe ramki, są odrzucane. Do tego nowe instalacje meshcore-ha mają domyślnie politykę ruchu Governed: wiadomości i polecenia wysyłane do sieci mają limit, który odnawia się z czasem, żeby jedna instalacja nie zapchała wspólnego kanału radiowego. Na wiadomości przypada 10 od razu, a potem jedna na minutę. Gdy limit się skończy, komunikat podaje, ile trzeba poczekać.

LiteScope: kto jeszcze usłyszał wiadomość

Urządzenie towarzyszące słyszy powtórzenia tylko w zasięgu własnego radia. LiteScope to analizator sieci MeshCore, który działa na własnym serwerze i dostaje dane od węzłów-obserwatorów. Po podaniu jego adresu w ustawieniach integracji każda wysłana wiadomość kanałowa dostaje drugi status, np. „4 observers · 3 hops”, czyli usłyszało ją czterech obserwatorów, a najdłuższa ścieżka miała trzy skoki (skok to jedno przekazanie przez repeater). Wiadomość uznawana jest za dostarczoną, gdy zobaczył ją obserwator, a jej najdłuższa ścieżka ma co najmniej minimalną liczbę skoków (domyślnie 1, czyli wiadomość przekazał przynajmniej jeden repeater).

Opcjonalnie można włączyć automatyczne ponawianie. Domyślnie jest wyłączone, a włącza się je osobno w każdej przeglądarce. Gdy LiteScope nie zobaczył wiadomości albo przeszła ona mniej skoków niż wymagane minimum, po ustawionym czasie (od 20 do 600 sekund, domyślnie 60) jest wysyłana ponownie. Limit ponowień to od jednego do trzech. Każde ponowienie to nowa wiadomość w eterze, a ci, którzy dostali pierwszą, zobaczą ją drugi raz, więc limit warto trzymać niski. W polityce Governed ponowienie zużywa limit wiadomości tak jak każda inna wysyłka. Działa to tylko dla kanałów, bo rozmowy bezpośrednie są szyfrowane od nadawcy do odbiorcy (end-to-end) i LiteScope nie może ich dopasować. Kanały publiczne i z nazwą zaczynającą się od # działają od razu, a kanał prywatny wymaga klucza dodanego w konfiguracji LiteScope. Przeglądarka łączy się z LiteScope bezpośrednio, więc gdy Home Assistant działa przez https, adres LiteScope też musi zaczynać się od https.

Karta repeatera

Karta ma trzy zakładki: informacje (kafelki ze statystykami, wykresy, sąsiedzi), ustawienia i konsolę. Można w niej wyświetlić m.in. poziom baterii, napięcie, czas pracy, czas nadawania (airtime), RSSI (siłę odbieranego sygnału), SNR (stosunek sygnału do szumu), poziom szumu i długość kolejki nadawczej. Wykresy obejmują domyślnie ostatnie 24 godziny, a okno można wydłużyć do 720 godzin, czyli 30 dni. Dana miara pojawia się tylko wtedy, gdy meshcore-ha udostępnia dla tego repeatera odpowiedni czujnik. Zakładki ustawień i konsoli korzystają z hasła administratora repeatera podanego w opcji login_password.

Boty do własnych kanałów

W katalogu automations/ leżą przykładowe automatyzacje Home Assistanta, które odpowiadają na polecenia pisane na kanale. es path zwraca listę repeaterów, przez które przeszła wiadomość, es trace – liczbę skoków, ścieżkę i siłę sygnału, es testreg – zakres regionu, z jakim wiadomość dotarła, a es weather <miasto> – bieżącą pogodę. Wszystkie nasłuchują na kanale 2; jeśli w sieci jest inaczej, trzeba zmienić wartość channel_idx. Automatyzacja ścieżki ogranicza każdego nadawcę do dwóch zapytań na minutę. Podobne automatyzacje, tylko do lokalnych ogłoszeń, opisaliśmy w tekście „Bazar przez radio”.

Kod jest na licencji MIT. Artykuł powstał na podstawie repozytorium ha-meshcore-cards na GitHubie i dokumentacji meshcore-ha.