11.1. Dlaczego Bluetooth¶
Sieć podłącza kamerę do sieci Wi-Fi lub Ethernet, dzięki czemu może ona komunikować się z dowolnym urządzeniem osiągalnym z tej sieci. Z laptopem na końcu korytarza, z serwerem na innym kontynencie, z telefonem korzystającym z sieci komórkowej. Taki zasięg wiąże się jednak z pewnymi wymaganiami. Sieć musi istnieć. Jakiś punkt dostępowy musi być w zasięgu, muszą być dostępne jakieś dane uwierzytelniające, a jakiś router musi być gotów przydzielić kamerze adres. Kamera musi też utrzymywać radio (lub port Ethernet) wystarczająco aktywne, aby podtrzymać połączenie.
Bluetooth obejmuje przeciwny przypadek – krótki zasięg, brak infrastruktury, niski pobór mocy. Kamera i telefon w tym samym pomieszczeniu wymieniają dane bezpośrednim łączem radiowym, bez niczego pomiędzy nimi. Bez punktu dostępowego, bez routera, bez potrzeby, aby którakolwiek ze stron była w ogóle podłączona do jakiejkolwiek sieci. Radio pozostaje przeważnie wyłączone między krótkimi zrywami aktywności, więc bateria, która ledwo wytrzymałaby dzień na Wi-Fi, może działać miesiącami.
11.1.1. Kiedy Bluetooth jest właściwym narzędziem¶
Typowe przypadki w przypadku kamery:
Telefon lub tablet paruje się z kamerą. Pobliski użytkownik otwiera aplikację na telefonie i konfiguruje kamerę, odczytuje jej status lub pobiera wyniki – bez konieczności wcześniejszego podłączania obu urządzeń do tej samej sieci Wi-Fi. Większość telefonów natywnie obsługuje Bluetooth Low Energy, więc obsługa sprowadza się do „otwórz aplikację, naciśnij połącz”, a nie „najpierw dołącz do tej sieci”.
Urządzenie ubieralne lub czujnik raportuje do kamery. Pas do pomiaru tętna, termometr, beacon, czujnik kontaktronowy – wszystkie są urządzeniami zasilanymi bateryjnie, zaprojektowanymi wokół Bluetooth Low Energy. Kamera łączy się jako klient, odczytuje ich wartości i włącza te dane w to, co aktualnie robi.
Kamera publikuje niewielki kanał statusu. Poziom baterii, ostatnio wykryty obiekt, liczba klatek na sekundę – kilka liczb udostępnionych dla dowolnego urządzenia w pobliżu, które chce je odczytać. Parowanie jest opcjonalne; w przypadku danych niewrażliwych kamera może rozgłaszać wartości bezpośrednio, bez konieczności jakiegokolwiek połączenia.
Dwie kamery (lub kamera i mikrokontroler) wymieniają dane bez sieci. Obie strony znają się nawzajem; obie znajdują się w tym samym budynku; nie ma powodu, aby bajty wędrowały do chmury i z powrotem, by pokonać odległość przez pokój.
11.1.2. Kiedy zamiast tego właściwym narzędziem jest sieć¶
Kompromisy Bluetooth są nieodpowiednie dla kilku typowych przypadków:
Odbiorcy poza zasięgiem. Bluetooth Low Energy w praktyce ma zasięg kilku metrów, a w wolnej przestrzeni co najwyżej kilkudziesięciu metrów. Wszystko po drugiej stronie budynku, po drugiej stronie miasta lub po drugiej stronie internetu wymaga Wi-Fi lub Ethernetu.
Łącza o dużej przepustowości. Bluetooth Low Energy zapewnia w praktyce od kilkudziesięciu do kilkuset kilobitów na sekundę. Strumieniowanie ramek lub jakiegokolwiek sensownego wideo wymaga Wi-Fi.
Komunikacja grupowa wielu-do-wielu na współdzielonej infrastrukturze. Pomieszczenie pełne urządzeń, które wszystkie komunikują się z jednym serwerem, lub siatka kamer współdzielących wyniki – ten wzorzec jest tym, do czego stworzono sieć IP.
11.1.3. Low Energy, nie klasyczny¶
„Bluetooth” w potocznym użyciu obejmuje dwa odrębne stosy radiowe. Klasyczny Bluetooth to ten z bezprzewodowych słuchawek, systemów audio w samochodach oraz połączeń klawiatury / myszy: radio klasy głosowo-audio, stosunkowo złożony stos i zauważalny pobór mocy. Bluetooth Low Energy (BLE) to osobny, nowszy protokół, który dzieli markę i pasmo 2,4 GHz, ale poza tym niewiele więcej. Jest zbudowany wokół krótkich, rzadkich zrywów radiowych, aby utrzymać niski średni pobór mocy, oraz wokół modelu danych klucz/wartość zamiast strumieniowania dźwięku.
MicroPython na kamerze obsługuje wyłącznie BLE. Klasyczny Bluetooth w ogóle nie jest częścią API. „Bluetooth” poniżej oznacza BLE.
11.1.4. Co zmienia się względem modelu sieciowego¶
BLE ma ten sam pięciowarstwowy stos co sieć, ale wyższe warstwy zachowują się inaczej:
Nie istnieje abstrakcja „otwórz gniazdo i wyślij bajty”. BLE jest zbudowany wokół niewielkiej bazy danych klucz/wartość, którą jedna strona hostuje, a druga odczytuje, zapisuje lub subskrybuje. Kamera publikuje nazwane wartości (poziom baterii, temperaturę, rejestr poleceń); odbiorca je odczytuje lub obserwuje.
Nie ma adresowania po nazwie. Urządzenia identyfikują się, rozgłaszając krótki komunikat opisujący, kim są; odbiorcy skanują w poszukiwaniu tych komunikatów i wybierają jeden, z którym się połączą.
Radio jest przeważnie bezczynne. Obie strony uzgadniają w momencie połączenia, jak często się budzić i komunikować. W międzyczasie obie wracają do uśpienia.
Te trzy różnice są tym, co odsuwa resztę API BLE od modelu gniazd.