Poznaj Bluetooth Mesh

| Technika

W ciągu ponad 20 lat, które upłynęły od upublicznienia pierwszej wersji standardu komunikacji bezprzewodowej krótkiego zasięgu Bluetooth, zyskał on dużą popularność – korzystamy z niego powszechnie, łącząc się ze słuchawkami, urządzeniami peryferyjnymi, laptopami, smartfonami, elektroniką noszoną. Energooszczędna wersja Bluetooth – BLE (Bluetooth Low Energy), obsługiwana natywnie przez różne systemy operacyjne, także urządzeń mobilnych (Android, iOS), natomiast umacnia swoją pozycję m.in. w takich aplikacjach, jak Internet Rzeczy, sieci czujników, inteligentne miasta czy automatyka domowa. Twórcy specyfikacji Bluetooth nie spoczywają jednak na laurach i wciąż ją rozwijają, dostosowując do aktualnych i przewidując przyszłe potrzeby użytkowników. Jednym z ostatnich efektów ich prac jest wersja Bluetooth Mesh, którą przedstawiamy w artykule.

Poznaj Bluetooth Mesh

Bluetooth Mesh jest rozszerzeniem Bluetooth Low Energy, stanowiącym dla niego alternatywę w przypadku sieci o bardzo dużej liczbie węzłów. Wynika to stąd, że w tej wersji zostało rozwiązane istotne ograniczenie standardu Bluetooth, polegające na tym, że podstawowym rodzajem topologii jest w nim połączenie punkt-punkt, w którym komunikują się dwa urządzenia.

Ograniczenie Bluetooth

Poza wymienionym trybem przewidziano oprócz tego przewidziano jeszcze możliwość łączności między większą liczbą węzłów w ramach pikosieci składającej się z jednego węzła typu master i najwyżej 7 węzłów typu slave, które z kolei mogą tworzyć większe sieci typu scatternet. Ostatnie powstają, gdy węzeł danej pikosieci, typu master albo slave, łączy się z inną pikosiecią jako węzeł typu slave. Będąc w obu sieciach, może on przekazywać dane pomiędzy ich węzłami. Z pikosieci, czy sieci typu scatternet, ze względu na wysoki poziom trudności ich realizacji, w praktyce jednak rzadko się korzysta przy organizacji sieci składających się z setek węzłów, a tym bardziej tych, które obejmują tysiące punktów.

W takich przypadkach projektanci do tej pory skazani byli na pozostałe standardy komunikacji bezprzewodowej, jak na przykład ZigBee, Th read czy Wi-Fi, które obsługują topologię typu mesh. Wraz z wprowadzeniem tytułowej wersji do tej listy dołączyło Bluetooth.

Co wyróżnia topologię mesh?

W topologii mesh dopuszczalna jest komunikacja w schemacie wiele–do–wielu punktów. Jest to możliwe dzięki temu, że poszczególne węzły mogą pełnić funkcję repeaterów lub przekaźników i bram lub routerów, które umożliwiają nawiązanie połączenia z zewnętrznymi sieciami LAN lub z Internetem.

W praktyce oznacza to, że komunikują się one na krótkich odległościach z pobliskimi węzłami, a te z kolei ze swoimi sąsiadami. W rezultacie dane mogą być przekazywane pomiędzy punktami sieci bardzo od siebie odległymi. Co więcej, w razie awarii jednego węzła wiadomości mogą być nadal przesyłane wieloma alternatywnymi ścieżkami. Sieć ma zatem zdolność do samonaprawy.

Komunikację tego typu realizuje się w Bluetooth Mesh w warstwie aplikacji. Topologia mesh ma kilka zalet. Najważniejsze z nich to niezawodność i skalowalność.

Zalety topologii mesh

Jeżeli chodzi o pierwszą z wymienionych cech, dzięki temu, że wszystkie węzły w sieci Bluetooth Mesh komunikują się bezpośrednio ze sobą, a nie przez wspólną dla wszystkich bramę lub router, nie ma w niej jednego newralgicznego punktu, którego awaria wyłączałaby całą sieć z użytku. Ponadto w najnowszej wersji standardu Bluetooth wykorzystywane jest specjalne rozwiązanie (managed fl ood message relay), które umożliwia zrealizowanie prawdziwie wielościeżkowej komunikacji. Piszemy o nim dalej.

Bluetooth Mesh pozwala na tworzenie bardzo dużych sieci, składających się z maksymalnie 32 tys. węzłów.

W razie potrzeby łatwo można je dodawać albo je wyłączać. Proces dołączania nowego węzła, polegający m.in. na dostarczeniu mu klucza szyfrującego, opisujemy dalej. Przedstawiamy też model publish/subscribe ułatwiający tworzenie dużych sieci złożonych z wielu niezależnych segmentów.

W Bluetooth Mesh zagwarantowane są również: bezpieczeństwo, dzięki zaimplementowanym mechanizmom szyfrowania i uwierzytelniania oraz interoperacyjność. Ta ostatnia oznacza, że produkty różnych dostawców muszą ze sobą współpracować.

Typy węzłów w Bluetooth Mesh

W standardzie Bluetooth Mesh przewidziano kilka typów węzłów. Charakteryzują się one funkcją, jaką dany punkt spełnia w sieci. Są to: przekaźniki (relay), węzły LPN (Low Power Node) i punkty typów: friend, proxy i provisioner. Warto zaznaczyć, że jeden węzeł może spełniać kilka funkcji jednocześnie.

Węzły przekaźniki mogą przesyłać dalej wiadomości, które odbiorą. Typowo taką funkcję powinny pełnić wyłącznie punkty, które są zasilane z sieci energetycznej, ponieważ stałe nasłuchiwanie, a potem retransmitowanie pakietów do innych węzłów to zadania dość energochłonne. Przykładami urządzeń, które w systemach automatyki domowej mogą pracować w trybie przekaźnika, są smart żarówki albo wyłączniki oświetlenia. Węzły zasilane bateryjnie z kolei raczej nie powinny pełnić funkcję przekaźnika, jeżeli bowiem ich odbiornik byłby stale włączony, a nadajnik często używany, bateria bardzo szybko by się wyczerpała.

Przykładowo jest mało prawdopodobne, by smartfony pełniły w sieci Bluetooth Mesh funkcję przekaźników.

Węzeł z funkcją proxy jest z kolei punktem wejścia do sieci dla tych urządzeń, które nie obsługują bezpośrednio Bluetooth Mesh. Punkty typu provisioner odpowiadają natomiast za obsługę procesu dodawania nowego węzła do sieci.

 
Rys. 1. Różne typy węzłów w sieciach Bluetooth Mesh

Węzły LPN i friend

Możliwość pracy w trybie LPN jest jedną z ważniejszych funkcji przewidzianych w standardzie Bluetooth Mesh. Inaczej niż w przypadku punktów przekaźników węzły LPN nie pracują na ciągłym nasłuchu, a przez większość czasu pozostają w trybie o obniżonym poborze energii.

W tym czasie w ich imieniu wiadomości odbierają węzły typu friend. Punkty LPN okresowo włączają się i odpytują węzły pracujące w trybie friend, by sprawdzić, czy nie oczekują na nie żadne komunikaty. Następnie przechodzą ponownie w tryb uśpienia.

Można się łatwo domyślić, że taką funkcjonalność przewidziano z myślą o węzłach zasilanych wyłącznie bateryjnie. W związku z tym jest bardzo mało prawdopodobne, aby węzły typu LPN pracowały w innych trybach.

Węzły typu friend nasłuchują komunikatów przekazywanych w sieci, spośród których szczególną uwagę zwracają na te kierowane do powiązanych z nimi punktów LPN. Tego rodzaju wiadomości odbierają i zapisują je w pamięci, by następnie przekazać je ich adresatom. W związku z tym, że węzły typu friend przechowują dane przeznaczone dla z reguły więcej niż jednego punktu LPN, muszą mieć pamięć o odpowiednio dużej pojemności.

Ważna uwaga

Warto zaznaczyć, że zgodnie ze specyfikacją Bluetooth Mesh implementacja wszystkich wyżej opisanych funkcjonalności węzłów nie jest obowiązkowa. Oznacza to, że dane urządzenie, które może pracować tylko w wybranych trybach, również będzie opisywane jako kompatybilne z tym standardem. Dlatego dobrze jest to wcześniej sprawdzić w jego specyfikacji. Jeśli przykładowo niedostępne będą tryby friend i LPN, trudniej będzie zrealizować aplikacje oparte na zasilaniu bateryjnym.

Komunikacja w Bluetooth Mesh

Jak wspomnieliśmy wyżej, w Bluetooth Mesh korzysta się ze specjalnego rozwiązania (managed flood message relay) w zakresie przekazywania wiadomości między węzłami. Jego wyróżnikiem jest możliwość zapewnienia prawdziwie wielościeżkowej komunikacji, a tym samym redundancji zwiększającej prawdopodobieństwo, że komunikaty dotrą do adresatów.

Komunikat wysyłany jest do tych węzłów, które znajdują się w zasięgu nadawcy. Te z kolei dalej przekazują tę wiadomość do następnych punktów w ich zasięgu, do czasu odebrania komunikatu przez właściwy węzeł (adresata).

Typowo w podobnych rozwiązaniach węzły bezwarunkowo przesyłają dalej każdą informację, która do nich dociera. W Bluetooth Mesh jednak zastosowano inne podejście, w którym nie jest dopuszczalne przekazywanie wiadomości już wcześniej odebranych, odnotowanych na specjalnej liście. Zatem, jeżeli do węzła dociera komunikat, najpierw jest sprawdzany ten spis – w przypadku, gdy dana wiadomość już się na nim znajduje, zostaje zignorowana.

Czym jest TTL?

Dodatkowo każdy komunikat ma przypisaną wartość TTL (Time To Live). Określa ona, ile razy maksymalnie dana wiadomość może zostać przesłana. Za każdym razem, kiedy komunikat jest odbierany, a następnie przekazywany dalej (maksymalnie 126 razy) przez dowolne urządzenie, wartość TTL zmniejsza się o 1. Węzły przekaźnikowe przekazują dalej wyłącznie wiadomości, których TTL jest większy niż jeden.

Okresowo węzły mogą wysyłać specjalny komunikat, informując pozostałe punkty w sieci o tym, że w dalszym ciągu są aktywne. Taka wiadomość pozwala na sprawdzenie tego, jak daleko każdy z węzłów znajduje się od pozostałych, jeżeli chodzi o liczbę przeskoków potrzebnych do dotarcia do niego. Pozwala to optymalizować TTL, ustawiając nie większą wartość tego wskaźnika niż to konieczne.

Model publikuj/subskrybuj

Wysyłanie i odbieranie wiadomości w sieciach Bluetooth Mesh odbywa się zgodnie z podejściem publikuj/subskrybuj. Zostało ono zaimplementowane w tym standardzie, by zapobiec wzajemnemu niepożądanemu wpływaniu na siebie różnych podgrup urządzeń działających w ramach jednej sieci. Dzięki temu mogą one w niej współistnieć, nie będąc zakłócanymi przez komunikaty przeznaczone nie dla nich, lecz dla innych węzłów.

Zadania będące istotą tytułowego modelu to publikowanie oraz subskrybowanie wiadomości. Pierwsze obejmuje przesyłanie komunikatów z jednego węzła do jednego lub większej liczby punktów. Nadawca wysyła wiadomości tylko do tych węzłów, które go subskrybują. Drugie zadanie natomiast polega na skonfigurowaniu węzła w taki sposób, żeby mógł on odbierać wiadomości od określonych punktów. W tym zakresie opiera się on na liście z adresami, które subskrybował, filtrując na jej podstawie docierające do niego komunikaty.

Przykładem zastosowania modelu publikuj/ subskrybuj w automatyce domowej jest przypisanie elementów sterowanych – takich jak żarówki, rolety, grzejniki – do wybranych grup sterowników – w tym przypadku włączników światła, sterowników rolet i kontrolerów ogrzewania, w zależności od pomieszczenia. Dzięki temu przykładowo lampy w kuchni będą ignorować sygnały sterujące z pokoju.

 
Rys. 2. Model publikuj/subskrybuj pozwala przyporządkować sterowane elementy sterownikom

Elementy i modele

Wyjaśnienia wymagają także dwie inne ważne koncepcje, którymi są w Bluetooth Mesh: elementy i modele. Pierwsze definiują funkcjonalność węzła. Każdy punkt w sieci powinien mieć co najmniej jeden element podstawowy. W przypadku takich urządzeń sterowanych jak żarówka czy grzejnik elementem jest funkcja włącz/wyłącz i kontroli jasności/temperatury. W zwykłej żarówce ten pierwszy z reguły jest jedynym. Gdy dane urządzenie stanowi połączenie elementu sterowanego z czujnikiem (na przykład sensorem obecności) zawiera dwa elementy. Podstawowa zazwyczaj jest funkcja sterowana, na przykład włącz/wyłącz w żarówce. Każdy element w węźle ma unikalny adres. Pozwala to na adresowanie poszczególnych elementów węzła niezależnie od reszty.

Można powiedzieć, że elementy charakteryzują rzeczywistą funkcjonalność węzłów, natomiast modele opisują ich rolę w sieci. Wyróżnia się trzy typy tych ostatnich: klienta, serwera i kontrolny, który w ramach jednego modelu integruje funkcje klienta i serwera.

Modele w Bluetooth Mesh

Serwer może mieć jeden albo więcej stanów, które obejmują jeden albo więcej elementów. Model serwera przedstawia stan elementów urządzenia, które mogą być odczytywane albo kontrolowane przez węzeł klienta. Przykładowo w przypadku żarówki upubliczniany i modyfikowany będzie jej stan włączona/ wyłączona. W przypadku sensora obecności jego stan w postaci wyników pomiarów będzie natomiast dostępny tylko do odczytania przez klienta.

Model klienta umożliwia węzłom wysyłanie wiadomości w celu odczytywania albo zmieniania stanu węzła serwera. Przykładem jest przełącznik, który jako klient zgłasza serwerowi zapytanie o bieżący stan danego urządzenia lub przesyła mu komunikat o jego zmianie, w przypadku żarówki przykładowo z włącz na wyłącz.

W większości przypadków modele serwera i klienta powinny być implementowane równocześnie. To, który będzie używany w danym momencie, zależeć będzie od sytuacji.

Warto dodać, że modele Bluetooth Mesh mogą rozszerzać funkcjonalność innych modeli. Pozwala to na kontrolowanie węzłów o różnej funkcjonalności za pomocą tego samego komunikatu.

Znaczenie węzła provisioner

Dane urządzenie, by stać się węzłem sieci Bluetooth Mesh, musi zostać do niej dołączone i uzyskać wymagane w niej dane konfiguracyjne. Są to m.in. adres unicast, adres publikacji, lista subskrypcji, klucze sieciowe i aplikacji.

Dwa ostatnie służą do szyfrowania wiadomości. Klucz sieciowy gwarantuje poufność komunikacji w sieci Bluetooth Mesh. Klucz aplikacji natomiast jest wykorzystywany dla pewności, że zostanie aktywowana właściwa funkcja odpowiedniego węzła, by na przykład nie dopuścić do sytuacji, w której komenda wysłana w celu włączenia żarówki wyłączy ogrzewanie.

Proces dołączania węzła do sieci polega zatem w uproszczeniu na dodawaniu lub zaktualizowaniu wyżej wymienionych danych w jego bazie. Węzeł typu provisioner jest jedynym punktem w sieci, który ma informacje o pozostałych węzłach. Także tylko ten węzeł może konfigurować pozostałe, z których żaden inny nie zna struktury całej sieci.

Węzeł typu provisioner wprawdzie nie jest potrzebny do działania sieci, ale jest wymagany, żeby można było do niej dodawać nowe lub z niej usuwać już dołączone urządzenia. Dzięki temu, jak pisaliśmy wcześniej, nie ma newralgicznego elementu, który mógłby doprowadzić do awarii całej sieci Bluetooth Mesh. Jeżeli jednak węzeł provisioner zostanie uszkodzony albo utracony, wraz z nim stracone zostaną informacje o całej sieci. Będzie to wymagało ponownego zainicjalizowania wszystkich węzłów przez inne urządzenie o takim statusie.

 

Monika Jaworowska