^
Jak zostać deweloperem HomeKit

Jak zostać deweloperem HomeKit cz. VI, łączność i ESP-NOW

Jaromir Kopp

13 lutego 2019

Urządzenia HomeKit mogą łączyć się z kontrolerami (czyli naszymi iPhone’ami, iPadami, Apple TV, czy HomPodami) na trzy sposoby: przez Wi-Fi, Bluetooth i pośrednio za pomocą Ethernet. Co prawda niedawno Apple przystąpiło do grupy Thread, czyli organizacji opracowującej i wdrażającej system komunikacji mesh dla urządzeń IoT, jednak zanim zobaczymy efekty tego w HomeKit, minie kilka lat. Właśnie łączność jest największą bolączką akcesoriów smart home. Do tego tematu zaraz wrócimy.

Nowości na polu wdrażania ADK

Przypomnę, że ADK to zestaw bibliotek HomeKit Accessory Development Kit opracowany przez Apple. Pisałem o tym w wakacyjnym numerze. Apple dostarcza biblioteki komunikacyjne, producenci układów muszą zrobić funkcje odpowiedzialne bezpośrednio za komunikację ze sprzętem, a my opracować kod urządzenia.

Nie tak dawno znana i poważana w kręgach Bluetooth norweska firma Nordic Semiconductor udostępniła deweloperom posiadającym licencję MFi nowe wersje swoich bibliotek HomeKit. Tym razem zrobione na bazie ADK od Apple. Bardzo interesujące jest to, że od strony projektanta akcesoriów, biblioteki prawie się nie zmieniły. Nordic „nałożył” na ADK od Apple, swoje poprzednie rozwiązanie, To bardzo ułatwia przejście na nową wersję. Zresztą wygląda na to, że wersja z ADK będzie jedyną oficjalną od Nordic. Firma miała ułatwione zadanie, bo jej poprzednie wersje działały na podobnych „sztywnych” zasadach co ADK. Związane jest to ze skromnymi zasobami układów Nordic nRF528xx.

Łączność

Jak wspomniałem we wstępie, HomeKit ma dość ograniczone sposoby komunikacji. Wiąże się to z metodami łączności, jakie są wbudowane w nasze urządzenia. Jednak mostki (bridge) zgodne z HomeKit mogą się z akcesoriami komunikować w zasadzie, na dowolne sposoby. Niestety Apple z powodów bezpieczeństwa zabrania podłączania niektórych akcesoriów za pomocą mostków. Wiąże się to właśnie z dowolnością sposobów komunikacji pomiędzy mostkiem a peryferiami. Nie wszystkie są równie dobrze zabezpieczone co HomeKit. Przez mostki nie podepniemy zamków, bram, systemów alarmowych i innych urządzeń związanych z bezpieczeństwem. Za to lampy, sensory i inne mniej ważne akcesoria, tak.

Obecnie na rynku jest kilka popularnych rozwiązań łączności. Lampy Philipsa i system Tradfri Ikea używają ZigBee. Fibaro z kolei Z-Wafe, ale w sprzętach niezgodnych z HomeKit. Są to standardy przyjęte w świecie Smart Home oraz IoT i popularność jest ich największą zaletą.

Jednak akurat nie w przypadku HomeKit. Co z tego, że do bramki Ikea Tradfri podłączmy żarówki Philipsa Hue i będą one działać, skoro nie będą widoczne w HomeKit? A nie będą, bo Apple żąda podania listy urządzeń, jakie bramka obsługuje i póki to się nie zmieni, nie będzie można używać bramek do sterowania urządzeń innych firm. I w tym momencie odpada największa zaleta popularnych systemów.

Mają one też wandy ZigBee, choć standard przewiduje kilka częstotliwości, to zazwyczaj pracuje w 2,4 GHz, czyli w tym samym paśmie co największa ilość urządzeń z Wi-Fi i Bluetooth. Powoduje to czasem pewnie problemy z łącznością. Dlaczego o tym piszę? Bo warto zastanowić się nad alternatywami.

nRF24l01

To pomysł wspomnianej już firmy z Norwegii. W paśmie 2,4 GHz wydzielono 120 kanałów, które pozwalają na transmisję danych z prędkością od ćwierć do dwóch megabitów na sekundę. Dużym zaskoczeniem było dla mnie, że ten standard jest od lat wykorzystywany przez bardzo wiele zestawów do sterowania modelami RC, nawet najpoważniejszych firm jak Futaba.

Wadami rozwiązania jest kompletny brak szyfrowania sprzętowego (trzeba to robić programowo), nie zawsze duży zasięg oraz wielkość paczki danych ograniczona do 32 bajtów. Zaletą jest cena i proste oprogramowanie oraz wiele gotowych bibliotek i obszerna dokumentacja.

Tego systemu używam w moich lampach LuLED i prawdopodobnie będę używał nadal do pewnych akcesoriów.

ESP-NOW

To moim zdaniem bardzo niedoceniony standard. Jest to system komunikacji opracowany przez moją ulubioną firmę Espressif. Chińczycy postanowili zrobić swój wariant łączności, który będzie działał w ich popularnych modułach ESP8266 i ESP32. Efekty są bardzo interesujące.

ESP-NOW używa również pasma 2,4 GHz, podzielonego na 13 kanałów jak Wi-Fi. Jednak z Wi-Fi nie ma więcej nic wspólnego. Za jednym zamachem można przesłać wg dokumentacji 256 bajtów, ale w praktyce okazuje się, że tyle potrafią tylko układy ESP32, a ESP8266 radzą sobie dobrze z 200 bajtami, co jest i tak przyzwoitym wynikiem. Wg dokumentacji jedno urządzenie może komunikować się z 10 innymi w sposób szyfrowany lub 20 bez szyfrowania. Urządzenia adresuje się za pomocą MAC sprzętowego lub „zamyślonego”. Teoretycznie ESP-NOW może pracować równoczesne z Wi-Fi, ale w praktyce okazało się, że nawet ESP32 znacznie traci wtedy na zasięgu w trybie NOW. Będąc przy zasięgu. Jest on nadzwyczaj dobry. Modulik z maleńką antenką PCB komunikuje się z drugim takim na odległość kilkudziesięciu metrów i to przez kilka drewnianych ścian! To całkiem sporo. Nawet więcej niż ZigBee pracujące w tym samym paśmie. Transmisja jest błyskawiczna, znacznie szybsza niż w nRF24l01 i bardziej odporna na zakłócenia. Dodatkowo ESP udostępnia gotowe biblioteki do „parowania” i wymiany docelowego klucza szyfrującego, a dla ESP32 nawet rozwiązanie MESH. ESP-NOW zdecydowanie bardziej nadaje się do połączeń przez urządzenia zasilane bateryjnie. Po wybudzeniu błyskawicznie mogą one nawiązać połączenie i przesłać dane. Dzieje się to kilkanaście jak nie kilkadziesiąt razy szybciej niż nawiązanie połączenia Wi-Fi pomiędzy modułami. To ostatnie i tak w HomeKit nie jest użyteczne. Apple zabrania „mostkowania” urządzeń IP, czyli pracujących w Wi-Fi.

ESP8266 Wemos

Są też wady. Jak już wspomniałem, dokumentacja jest uboga i zawiera sporo niedomówień. W sieci można znaleźć trochę przykładów, ale część wiedzy zdobywałem po omacku. Np. z ciekawostek którymi się podzielę: Jeżeli wysyłamy szyfrowaną paczkę danych, to dostaniemy potwierdzenie odbioru, nawet jeżeli odbiornik nie ma klucza do odszyfrowania danych. Dotrą one do urządzenia i ich odbiór ono potwierdzi, ale nie przekaże w interfejsie programowym do aplikacji, bo nie odszyfruje. Innym problemem jest wspomniane „gryzienie się” z Wi-Fi. Najśmieszniej, że występuje ono tylko w niektórych sytuacjach i jest zależne od obciążenia Wi-Fi. Jednak jeżeli chcemy mieć pewność dalekiej komunikacji, to jedynym rozwiązaniem jest zastosowanie dwóch modułów. Jeden do Wi-Fi, drugi do ESP-NOW. Mogą się one komunikować ze sobą np. za pomocą interfejsu szeregowego. Taką kombinację ESP32 + ESP8266 dla NOW zastosowałem w swoim projekcie.

Podsumowując: jeżeli w jakimkolwiek rozwiązaniu planujecie przesyłanie paczek danych pomiędzy urządzeniami używającymi układów Espressif, warto zastanowić się nad wciąż dość mało popularnym ESP-NOW.

Jaromir Kopp

Użytkownik komputerów Apple od 1991 roku. Dziennikarz technologiczny, programista i deweloper HomeKit. Propagator przyjaznej i dostępnej technologii. Lubi programować w Swift i czystym C. Tworzy rozwiązania FileMaker. Prowadzi zajęcia z IT i programowania dla dzieci oraz młodzieży, szkoli też seniorów. Współautor serii książek o macOS wydanych przez ProstePoradniki.pl. Projektuje, programuje oraz samodzielnie wykonuje prototypy urządzeń Smart Home. Jeździ rowerem.
Komentarze (0)
L

0 komentarzy