Xiaomi Mi Temperature & Humidity Monitor 2 (LYWSD03MMC) w Nettemp: tryb aktywny vs pasywny
W poprzednim wpisie opisałem scenariusz BLE → MQTT. Dzisiaj skupiam się na popularnych czujnikach Xiaomi Mi Temperature & Humidity Monitor 2 (LYWSD03MMC) i na dwóch praktycznych sposobach integracji z Nettemp.
W praktyce masz dwie drogi:
- Tryb aktywny (active) – urządzenie (np. Raspberry Pi Zero 2 W / 2 W z Bluetooth) łączy się z czujnikiem po BLE i odczytuje dane przez GATT.
- Tryb pasywny (advertising) – czujnik rozgłasza dane w reklamach BLE, a odbiornik tylko nasłuchuje (bez parowania i bez utrzymywania połączeń).
Tryb aktywny: szybki start, większe zużycie baterii

W trybie aktywnym Raspberry Pi działa jak “klient” BLE: nawiązuje połączenie z czujnikiem i pobiera pomiary.
Plusy
- Bardzo szybki start (szczególnie jeśli już masz RPi z Bluetooth).
- Dobra kontrola nad tym, kiedy i jak często pobierasz dane.
Minusy
- Częstsze łączenie się i wymiana danych zwykle oznacza szybsze rozładowanie baterii w czujniku.
- Przy większej liczbie czujników rośnie koszt “utrzymania” połączeń (czas, zakłócenia, kolejki).
Tryb pasywny (advertising): najlepszy kompromis baterii i skali

W trybie pasywnym czujnik nadaje dane w reklamach BLE, a odbiornik tylko nasłuchuje. W realnym domu/mieszkaniu to zwykle wygrywa: mniejsze obciążenie i łatwiejsze skalowanie.
Kluczową ideą jest zmiana firmware na taki, który rozgłasza dane (np. ATC / PVVX), dzięki czemu:
- odbiornik nie musi łączyć się z czujnikiem,
- nie ma ciągłej “interakcji” dwóch urządzeń BLE,
- bateria w czujniku zwykle trzyma dłużej.
Krok wymagany do trybu pasywnego: Mi Home + token/bindkey
Żeby podmienić firmware w LYWSD03MMC bez lutowania, typowy flow wygląda tak:
- Dodaj czujnik do Xiaomi Mi Home (powiązanie urządzenia z kontem).
- Wyciągnij dane dostępowe (tokeny / bindkey) przez token extractor.
- Użyj webowego flashera po BLE (TelinkMiFlasher) i wgraj firmware nadający (np. PVVX).
Uwaga: szczegóły zależą od wersji czujnika i aktualnego firmware – zawsze czytaj instrukcję dla swojej wersji.
Flashowanie: TelinkMiFlasher (PVVX)
Flasher działa z poziomu przeglądarki (Web Bluetooth; najlepiej Chrome), więc nie potrzebujesz programatora ani lutowania:
Po poprawnym flashu możesz ustawić tryb rozgłaszania (advertising) i parametry emisji.
Most BLE → MQTT: ESP32 albo Raspberry Pi
Po stronie “odbiornika” masz dwa typowe warianty:
- ESP32 (np. OpenMQTTGateway) robi skan BLE i publikuje dane do MQTT.
- Raspberry Pi skanuje BLE lokalnie i publikuje dane do MQTT (lub uruchamia gateway, który to robi).
Nettemp (przez nettemp config) potrafi tę konfigurację spiąć tak, żeby finalnie dane lądowały w brokerze MQTT, a potem w Nettemp Cloud / Docker.
Mini‑checklista (skrót)
1) Dodanie do Xiaomi Mi Home
- Dodaj czujnik w aplikacji Mi Home (powiązanie z kontem jest potrzebne do uzyskania kluczy).
2) Token extractor (token/bindkey)
3) Flash PVVX przez TelinkMiFlasher
- Wejdź na: https://pvvx.github.io/ATC_MiThermometer/TelinkMiFlasher.html
- Connect
- Podaj token oraz BLE KEY / bindkey (jeśli wymagane w Twoim wariancie)
- Start flashing
- Po sukcesie: połącz się ponownie (Connect) i ustaw parametry rozgłaszania, np.:
- Advertising type: ATC1441
- AdFlags
- (opcjonalnie) Get name / Set name
- Send Config → Disconnect