W ostatnim czasie postanowiłem rozszerzyć swój system smart home o czujniki BLE od Xiaomi. Wybór padł na dwa modele:
- Czujnik temperatury i wilgotności
- Czujnik otwarcia drzwi z wbudowanym czujnikiem światła (obecność/brak światła) – co było dla mnie zaskoczeniem, bo nie oczekiwałem tej funkcji
Integracja z Home Assistant
Aby dodać te urządzenia do Home Assistanta, skorzystałem z Bluetooth Proxy na ESP32. Jest to niezwykle proste rozwiązanie oparte na ESPHome, które umożliwia szybkie przekazywanie danych BLE do Home Assistanta bez konieczności posiadania zaawansowanego sprzętu. Instalacja ogranicza się do wgrania odpowiedniego firmware’u na ESP32, co można zrobić w kilka minut, korzystając z gotowych konfiguracji dostępnych na stronie ESPHome Bluetooth Projects. Cały proces jest intuicyjny i nie wymaga specjalistycznej wiedzy.

Czujnik temperatury i wilgotności BLE xiaomi.

Czujnik otwarcia drzwi.
Problem z brakiem encji
Po pierwszym dodaniu czujników do Home Assistanta zauważyłem, że urządzenia pojawiły się w systemie, ale nie miały żadnych encji. Oznaczało to, że Home Assistant je wykrył, ale nie był w stanie poprawnie odczytać wysyłanych przez nie danych.
Po szybkim researchu okazało się, że problem leży w szyfrowaniu transmisji BLE. Czujniki Xiaomi wysyłają dane zaszyfrowane i konieczne jest posiadanie odpowiednich kluczy do ich odszyfrowania.
Na GitHubie znalazłem odpowiednie repozytorium PiotrMachowski/Xiaomi-cloud-tokens-extractor, które pozwala na łatwe uzyskanie kluczy BLE bez potrzeby flashowania urządzeń. Aby je uzyskać, należy:
- Dodać czujnik do aplikacji Xiaomi Home.
- Skorzystać z narzędzia Xiaomi Cloud Tokens Extractor, aby odczytać klucze z chmury Xiaomi.
- Wprowadzić klucze do Home Assistanta.
Po wykonaniu tych kroków urządzenia zaczęły poprawnie raportować dane lokalnie, bez potrzeby korzystania z chmury.

Dane odczytane z czujnika.

Dane odczytane z czujnika.
Podsumowanie
Integracja czujników Xiaomi BLE z Home Assistant przez ESP32 jest możliwa, ale wymaga dodatkowego kroku – odczytania kluczy szyfrowania. Dzięki narzędziu Xiaomi Cloud Tokens Extractor cały proces jest prosty i nie wymaga flashowania urządzeń. Po uzyskaniu kluczy i konfiguracji urządzenia działają lokalnie, co jest dużym plusem dla prywatności i niezawodności systemu.
Dodatkowo, zastosowanie Bluetooth Proxy na ESP32 sprawia, że integracja czujników BLE jest szybka i bezproblemowa. Dzięki gotowym rozwiązaniom dostępnym w ESPHome, konfiguracja trwa zaledwie kilka minut, co czyni to idealnym wyborem dla osób szukających prostych i skutecznych rozwiązań smart home.