Bluetooth Mesh – komunikacja pomiędzy węzłami

| Technika

Bluetooth Mesh, opisany w specyfikacji standardu w wersji 5, to protokół komunikacyjny zaprojektowany z myślą o potrzebach systemów IoT. W tekście przedstawiono kolejny ważny element tego rozwiązania, czyli sposób komunikacji pomiędzy poszczególnymi węzłami sieci, a także podstawy definiowania roli każdego z węzłów w systemie.

Bluetooth Mesh – komunikacja pomiędzy węzłami

Bluetooth Mesh oparty jest na topologii kraty, zatem poszczególne moduły mają możliwość przesyłania informacji bezpośrednio do siebie, bez konieczności angażowania elementu centralnego sieci. Węzły mogą również pełnić funkcję przekaźników retransmitujących odebrane pakiety do dalszych obszarów sieci, zwiększając w ten sposób jej zasięg.

Model komunikacji pomiędzy węzłami

Przyjęty w Bluetooth Mesh sposób przesyłania wiadomości pomiędzy węzłami sieci, czyli tzw. algorytm routingu, określany jest jako rozwiązanie typu managed flooding. Jest to algorytm wykorzystujący wielodrogową dystrybucję komunikatów z ograniczoną redundancją, tzn. w sposób zapewniający wysoki poziom prawdopodobieństwa dostarczenia pakietu do końcowego odbiorcy przy jednoczesnym ograniczeniu nadmiarowego ruchu w sieci.

W innej odmianie tego algorytmu, określanej jako basic flood, każdy węzełprzekaźnik retransmituje wszystkie odebrane pakiety. Bez wprowadzenia dodatkowych mechanizmów kontroli rozwiązanie to prowadzić może do tworzenia nieskończonych pętli cyrkulacji pakietów (przesyłanie w nieskończoność tego samego pakietu pomiędzy węzłami), a w efekcie do generowania tzw. burzy broadcastowej, która paraliżuje działanie całej sieci.

Aby wyeliminować to zagrożenie, w Bluetooth Mesh informacje o każdej z odebranych wiadomości przechowywane są przez pewien czas w pamięci modułu, co chroni przed ponowną retransmisją tego samego pakietu. Dodatkowo, każda ramka zawiera pole TTL (Time- To-Live), którego wartość dekrementowana jest o 1 podczas każdej jej retransmisji. Standard pozwala na maksymalnie 126 retransmisji tej samej ramki.

Aby móc otrzymywać dane rozsyłane przez wybrany węzeł, każdy inny moduł (a właściwie każdy pojedynczy element zaimplementowany w owym module) musi mieć adres nadawcy ramki zapisany na swojej liście subskrybowanych adresów.

Przykład tego typu komunikacji pokazano na rysunku 1, na podstawie systemu sterowania oświetleniem rozmieszczonego w kilku pokojach budynku. Źródła światła mogą być sterowane zarówno przez jeden przełącznik (żarówki z jadalni i sypialni), jak i przez kilka przełączników (żarówka w kuchni otrzymuje polecenia od dwóch przełączników, przełącznika 1 oraz przełącznika 2).

 
Rys. 1. Przykład przepływu informacji pomiędzy poszczególnymi węzłami Bluetooth Mesh

Architektura węzła sieci

Każdy węzeł sieci z punktu widzenia standardu Bluetooth Mesh jest zestawem abstrakcyjnych obiektów o rozbudowanej strukturze. Podstawowym i najwyższym poziomem tej abstrakcji jest Element. Każdy węzeł musi zawierać przynajmniej jeden Element. Każdy Element opisuje jakąś konkretną funkcjonalność urządzenia, przy czym główna funkcjonalność opisywana jest przez tzw. Primary Element, którego określenie wymagane jest dla każdego węzła. Przykładowo, zwykła żarówka mieć będzie tylko jeden Element, którego wartości opisywać będą parametry urządzenia, zaś np. żarówka z wbudowanym czujnikiem ruchu mieć będzie dwa Elementy, jeden do opisu żarówki, drugi zaś czujnika ruchu, przy czym podstawowym elementem będzie zapewne funkcjonalność żarówki.

Każdy Element w obrębie tego samego węzła ma własny unikatowy adres typu unicast, co pozwala na kierowanie wiadomości bezpośrednio do niego, niezależnie od innych elementów tego samego węzła. Przykład węzłów jedno- i wieloelementowych przedstawiono na rysunku 2.

 
Rys. 2. Każdy węzeł musi składać się przynajmniej z jednego elementu. W przypadku większej ich liczby jeden musi zostać określony jako podstawowy (Primary Element)

Model

Niższym poziomem abstrakcji jest model. Każdy Element może składać się z jednego lub większej liczby modeli. Moduł, podobnie jak Element, definiuje funkcjonalność oraz kondycję węzła, jednak na bardziej szczegółowym poziomie. Modele są odpowiednikiem koncepcji usług (Services) z klasycznej wersji standardu Bluetooth. W Bluetooth Mesh wyróżnia się trzy rodzaje modeli: klient (Client Model), serwer (Server Model) oraz kontrolny (Control Model), który implementuje jednocześnie funkcjonalność serwera oraz klienta.

 
Rys. 3. Hierarchiczna architektura każdego z węzłów Bluetooth Mesh

Model typu serwer może mieć jeden lub więcej stanów. Serwer umożliwia innym elementom odczytanie oraz kontrolowanie wartości tych stanów poprzez wykorzystanie odpowiednich modeli klienta. Przykładem serwera może być inteligentna żarówka. W zależności od rodzaju kontrolującego ją włącznika, może udostępniać serwer typu On/Off Server lub Light Lightness Server. Pierwszy umożliwia jedynie odczytanie i ustawienie wartości binarnej, czyli włączenie lub wyłączenie źródła światła. Drugi pozwala również na zmianę i odczyt wartości jasności. Innym węzłem typu serwer może być czujnik, pozwalający klientom jedynie na odczyt swojego stanu, bez możliwości jego zmiany.

Model typu klient pozwala na ustawianie oraz odczytywanie stanów odpowiadającego mu modelu serwera. Popularnym przykładem tego typu urządzenia jest przełącznik sterujący oświetleniem. Układ ten implementuje model typu On/Off Client.

 
Rys. 4. Lista typów modeli defi niowanych w standardzie Bluetooth Mesh

W większości aplikacji konieczne jest zaimplementowanie pewnego rodzaju logiki, czyli wprowadzenie różnego rodzaju reakcji w odpowiedzi na odmienne wartości (lub zakresy) stanów wejściowych. Do tego celu służy Control Model. Przykładem tego typu rozwiązania może być urządzenie nadzorujące pracę systemu chłodzenia pewnego systemu. Układ kontrolny odczytuje temperaturę z czujnika temperatury i w przypadku, gdy odczytana wartość przekracza zadany próg, załącza pompy z czynnikiem chłodniczym. Gdy temperatura spadnie poniżej określonego progu, układ wyłącza pompy.

Niektóre typy modeli są ze sobą kompatybilne w określonym zakresie. Przykładowo, funkcjonalność typu On/ Off Server zawarta jest również w modelach Generic Level Server oraz Light Lightness Server. Dzięki temu przełącznik implementujący model On/Off Client będzie w stanie obsłużyć żarówki wykorzystujące każdy z tych trzech modeli serwera, zapewniając możliwość ich włączania oraz wyłączania.

 
Rys. 5. Bluetooth Mesh oparty jest na topologii kraty, co oznacza, że poszczególne węzły mogą komunikować się wzajemnie ze sobą

Stan

Pojedyncza wartość, stanowiąca najniższy poziom abstrakcji w architekturze węzła sieci, to stan. Stan może określać np. jasność żarówki lub temperaturę odczytaną z czujnika. Każdy z predefiniowanych modeli ma z góry określony i zamknięty zbiór stanów. Zmiana stanu może być natychmiastowa lub trwać pewien określony czas, zależnie od specyfikacji urządzenia.

Dwa lub więcej stanów może być ze sobą powiązanych. Oznacza to, że zmiana wartości jednego z nich pociąga również zmianę wartości drugiego. Przykładem może być układ ściemniacza oświetlenia. Jeśli wartość jasności ustawiona zostanie jako 0, układ zmieni również swój stan na wyłączony. Jeśli wartość ponownie ustawiona zostanie jako niezerowa, układ jednocześnie zmieni swój stan na włączony.

 
Rys. 6. Przykład struktury dwóch węzłów sieci –> ściemnianej żarówki oraz ściemnianej żarówki ze zintegrowanym czujnikiem ruchu

Podsumowanie

Prawidłowa konfiguracja sieci Bluetooth Mesh wymaga znajomości podstawowej architektury węzłów sieci, jak również doboru odpowiednich typów modelów dla każdego urządzenia. Przyjęty w tej technologii algorytm propagacji wiadomości wewnątrz sieci pozwala uniknąć generowania nadmiernego ruchu, zapewniając przy tym bardzo wysokie prawdopodobieństwo przekazania pakietu od nadawcy do odbiorcy, z wykorzystaniem węzłów pośrednich. Pozwala to istotnie zwiększyć rzeczywisty rozmiar całej sieci, który może znacznie przekraczać zasięg pojedynczej transmisji radiowej.

 

Damian Tomaszewski