Xiaomi Mijia LYWSD03MMC to mały, kwadratowy termometr z higrometrem i wyświetlaczem LCD, zasilany baterią CR2032. Po wyjęciu z pudełka współpracuje z aplikacją Mi Home i wysyła odczyty zaszyfrowane. Home Assistant odczyta je przez integrację Xiaomi BLE, ale tylko wtedy, gdy podasz mu klucz szyfrowania urządzenia.

Popularną alternatywą jest otwarte oprogramowanie autorstwa pvvx, udostępnione w repozytorium ATC_MiThermometer. Wgrywa się je przez Bluetooth ze strony internetowej, bez otwierania obudowy i bez lutowania. Potem termometr rozgłasza odczyty w otwartym formacie BTHome, który Home Assistant wykrywa sam, a ty dostajesz ustawienia, których fabryczne oprogramowanie nie ma: korektę temperatury i wilgotności, regulowane odstępy między rozgłoszeniami, ekran z zegarem i zapis pomiarów w pamięci urządzenia.

Opisuję cały proces, a także wersje sprzętowe, przy których wszystko jest trudniejsze, niż sugerują liczne starsze poradniki.

Zanim dokupisz kolejne sztuki

LYWSD03MMC produkowano w kilku wersjach sprzętowych i najnowsze sporo zmieniły. W README projektu pvvx są dwa ostrzeżenia, które warto przeczytać przed zamówieniem większej partii:

  • Egzemplarze w wersji sprzętowej B1.5 lub B1.6, sprzedawane od marca 2025 roku, projekt oznacza jako niezalecane ze względu na duży pobór prądu i słaby kontrast wyświetlacza. Wersja B1.6 ma też fabryczne oprogramowanie niezgodne ze starszymi wersjami sprzętu.
  • Fabryczne oprogramowanie Xiaomi 2.1.1_0159 (a według projektu także inne nowe wersje 2.1.1_xxxx) blokuje prostą drogę. Żeby wgrać na nie własne oprogramowanie, trzeba najpierw dodać termometr w Mi Home i pobrać jego klucze z chmury Xiaomi. Szczegóły są w kroku 3.

Jeśli masz starsze egzemplarze, wgranie oprogramowania zajmuje zwykle kilka minut na sztukę. Przy zakupie nowych możesz trafić na egzemplarz wymagający dłuższej procedury, a którą wersję dostaniesz, okaże się dopiero po dostawie.

To samo oprogramowanie obsługuje też inne termometry: Xiaomi Miaomiaoce MHO-C401, Qingping CGG1 i CGDK2, Xiaomi MJWSD05MMC i coraz więcej modeli Tuya. Pełna lista obsługiwanych urządzeń jest w osobnym repozytorium. Poniższe kroki dotyczą LYWSD03MMC. Inne modele różnią się głównie sposobem wejścia w tryb parowania.

Czego potrzebujesz

  • Komputera albo telefonu z Androidem, z Bluetoothem i przeglądarką Google Chrome, Microsoft Edge lub Opera. Wgrywanie korzysta z interfejsu Web Bluetooth, więc w innych przeglądarkach nie zadziała.
  • Nowej albo dobrze naładowanej baterii. Według README w LYWSD03MMC poziom baterii musi przekraczać 40%, żeby połączenie i wgrywanie przebiegły bez problemów, bo tańsza wersja sprzętu ma mały zapas mocy.
  • Home Assistanta z działającą integracją Bluetooth: z wbudowanym albo podłączonym przez USB adapterem Bluetooth albo z pośrednikami Bluetooth w ESPHome (o pośrednikach więcej na końcu).

Krok 1: przygotuj przeglądarkę

Otwórz stronę do wgrywania, TelinkMiFlasher.html. Nie musisz pobierać żadnych plików z GitHuba, bo strona sama proponuje oprogramowanie pasujące do wykrytego urządzenia.

Na Androidzie, Windowsie i Linuksie trzeba jeszcze włączyć eksperymentalną funkcję przeglądarki. W Chrome otwórz chrome://flags/#enable-experimental-web-platform-features, ustaw Experimental Web Platform features na Enabled i uruchom przeglądarkę ponownie. Bez tej opcji strona może się połączyć, ale proces przerwie się na dalszym etapie.

Krok 2: połącz się i aktywuj urządzenie

  1. Modele z przyciskiem wymagają najpierw długiego naciśnięcia, które kasuje stare powiązania. LYWSD03MMC nie ma przycisku, więc od razu przechodzisz do łączenia.
  2. Na stronie wgrywania naciśnij Connect. Przeglądarka pokaże listę pobliskich urządzeń Bluetooth. Wybierz LYWSD03MMC i trzymaj termometr blisko komputera.
  3. Po połączeniu pojawi się przycisk Do Activation. Naciśnij go. Ten krok przeprowadza wymianę kluczy wymaganą przez fabryczne oprogramowanie, a strona ustawia urządzeniu nowy klucz powiązania (bindkey).

Sama aktywacja też się przydaje. Według dokumentacji integracji Xiaomi BLE klucz wygenerowany przez stronę pvvx działa w Home Assistancie, ale aplikacja Mi Home przestaje rozpoznawać termometr, dopóki go w niej nie usuniesz i nie dodasz ponownie. Jeśli wystarczy ci fabryczne oprogramowanie w Home Assistancie, możesz tu skończyć: zapisz klucz i dodaj urządzenie przez integrację Xiaomi BLE. Jeśli zależy ci na BTHome i dodatkowych ustawieniach, czytaj dalej.

Krok 3: wgraj nowe oprogramowanie

W starszym egzemplarzu naciśnij przycisk Custom Firmware ver x.x, a potem Start Flashing. Pasek postępu dojdzie do końca po krótkiej chwili. Termometr uruchomi się ponownie i zmieni nazwę Bluetooth na coś w rodzaju ATC_F02AED.

Jeśli egzemplarz ma fabryczne oprogramowanie 2.1.1_0159, obowiązuje procedura opisana w zgłoszeniu nr 602:

  1. Dodaj termometr do aplikacji Mi Home.
  2. Pobierz jego klucze z chmury Xiaomi, na przykład narzędziem Xiaomi Cloud Tokens Extractor.
  3. Połącz się z termometrem w TelinkMiFlasher, wpisz Device known id, Mi Token i Mi Bind Key, a potem wybierz Login.
  4. Wybierz oprogramowanie ATC_vNN i uruchom aktualizację.

Jeśli to się nie uda, według projektu trzeba najpierw zaktualizować oryginalne oprogramowanie. W egzemplarzach B1.5 i B1.6 sprzedawanych od marca 2025 roku instrukcja każe wgrać proponowany plik Original_OTA_... jako krok pośredni. Po tej aktualizacji ekran nie działa, ale Bluetooth tak, więc powtarzasz procedurę z kroku 3, tym razem bez ponownej aktualizacji oprogramowania Xiaomi.

Całą operację da się odwrócić. README podaje, że w każdej chwili możesz wrócić do oryginalnego oprogramowania, wybierając jego plik na tej samej stronie.

Krok 4: wybierz BTHome i ustaw termometr

Połącz się ponownie, tym razem z urządzeniem o nowej nazwie ATC_.... Strona pokaże teraz opcje konfiguracji. Dla Home Assistanta najważniejsze są te:

  • Advertising Type: wybierz BTHome. Oprogramowanie oferuje też formaty Xiaomi, ATC i Custom, ale według README z wbudowanymi integracjami Home Assistanta działają tylko BTHome i format Xiaomi. Pozostałe wymagają nieoficjalnego dodatku Passive BLE Monitor. Projekt zapowiedział też, że od wersji 6.0 obsługiwany będzie wyłącznie BTHome v2, więc w nowych instalacjach lepiej nie wybierać innych formatów.
  • Temperature and Humidity offset: poprawka dodawana do odczytów, na przykład -1.4 obniża temperaturę o 1,4 °C. Zanim ją ustawisz, zostaw termometr na kilka godzin obok wzorca, któremu ufasz, w tym samym miejscu i z dala od słońca czy kaloryfera.
  • Comfort, Show batt, Clock: ekrany, które wyświetlacz pokazuje po kolei. Set time wysyła do urządzenia aktualną godzinę dla ekranu z zegarem.
  • Odstępy między rozgłoszeniami i pomiarami oraz moc nadawania. Przy domyślnych ustawieniach LYWSD03MMC (rozgłoszenie co 2,5 sekundy i pomiar co 10 sekund) README podaje średni pobór prądu 14-15 µA i ponad rok pracy na baterii CR2032. Krótsze odstępy albo większa moc nadawania skracają ten czas. Ustawienia od +3 do +10 dB wymagają mocniejszego zasilania niż bateria pastylkowa.

Naciśnij Send Config, żeby zapisać zmiany w urządzeniu. Set default, a po nim Send Config, przywraca ustawienia domyślne.

Jednej opcji lepiej nie ruszać, jeśli nie wiesz, czy sprzęt ją obsługuje: Bluetooth 5 LE Long Range. Zwiększa zasięg, ale integracja Bluetooth w Home Assistancie nie obsługuje w pełni Bluetootha 5, a Web Bluetooth w Chrome nie potrafi jeszcze wyszukiwać urządzeń Bluetooth 5. Jeśli włączysz ją przypadkiem, wyjmij baterię i włóż ją z powrotem, a termometr wróci do zwykłego trybu Bluetooth 4.2.

Krok 5: dodaj termometr do Home Assistanta

Po wybraniu BTHome większość pracy wykona Home Assistant. Integracja BTHome sama wykrywa urządzenia, gdy działa integracja Bluetooth. Przejdź do Ustawienia > Urządzenia oraz usługi (Settings > Devices & services). Termometr powinien się pojawić w sekcji Wykryte (Discovered). Zatwierdź go, a dostaniesz encje temperatury, wilgotności i baterii.

Jeśli wolisz szyfrowane rozgłoszenia, włącz szyfrowanie formatu BTHome na stronie wgrywania i skopiuj klucz powiązania. Podczas konfiguracji Home Assistant poprosi o 32-znakowy klucz szesnastkowy. Bez szyfrowania temperaturę w pokoju odczyta każdy w zasięgu Bluetootha. Dla większości osób to nieszkodliwe, ale szyfrowanie nic nie kosztuje poza przechowaniem jeszcze jednego klucza.

Oprogramowanie zapisuje też pomiary w buforze cyklicznym w pamięci flash, do 20 000 rekordów uśrednianych w wybranym przez ciebie odstępie. Odczytasz je i zobaczysz na wykresie na tej samej stronie. Przydaje się to przy termometrze, który stoi poza zasięgiem Home Assistanta, na przykład w piwnicy albo w samochodzie.

Odbiór: adapter czy pośrednik na ESP32

Termometr tylko nadaje, a Home Assistant tylko słucha, więc od jakości odbioru zależy, jak często odświeżają się wartości. Źródła nie są tu zgodne i warto znać oba stanowiska.

Home Assistant zaleca pośredniki Bluetooth w ESPHome na płytkach ESP32 do zwiększania zasięgu Bluetootha i wiele osób używa ich właśnie z tymi termometrami. README projektu pvvx prezentuje odwrotne stanowisko. Odradza odbiorniki na ESP32, bo według autora nie odbierają BLE z pełną szybkością, ESPHome gubi wiele pakietów rozgłoszeniowych, a podłączone urządzenia ESP32 rozładowują baterie termometrów. Zamiast nich poleca adapter Bluetooth na USB 2.0 High Speed, zwłaszcza przy wielu urządzeniach BLE.

W praktyce pasywne nasłuchiwanie przez pośrednik to inna sytuacja niż aktywne połączenie, a pojedyncze zgubione rozgłoszenia niewiele znaczą, gdy termometr wysyła je co 2,5 sekundy. Jeśli w historii widzisz długie przerwy, zanim zrzucisz winę na oprogramowanie, postaw odbiornik bliżej termometru albo spróbuj adaptera USB w komputerze z Home Assistantem.

README ostrzega też przed zużyciem nośnika: częste aktualizacje z BLE oznaczają wiele zapisów do bazy danych i do plików BlueZ. Przy kilkudziesięciu urządzeniach warto wyłączyć z rejestratora (recorder) niepotrzebne encje albo zapisywać je rzadziej.

Najczęstsze błędy

  • Słaba bateria podczas wgrywania. Poniżej mniej więcej 40% LYWSD03MMC traci połączenie. Najpierw wymień baterię.
  • Niewłączona eksperymentalna opcja albo przeglądarka bez Web Bluetooth, na przykład Firefox czy Safari.
  • Pozostawiony format Xiaomi albo ATC. Urządzenie działa w innych narzędziach, ale nie pojawia się w integracji BTHome.
  • Ustawianie poprawki po kilku minutach. Temperatura i wilgotność stabilizują się powoli. Porównuj odczyty po kilku godzinach.
  • Zamawianie nowych egzemplarzy z myślą o starej, szybkiej procedurze. Nowy sprzęt może wymagać rejestracji w Mi Home albo w ogóle nie być wart przeróbki.