Przejdź do głównej zawartości

Xiaomi Mi Temperature & Humidity Monitor 2 (LYWSD03MMC) w Nettemp: tryb aktywny vs pasywny

· 3 min aby przeczytać

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:

  1. 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.
  2. 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

Nettemp config – konfiguracja BLE (active) Nettemp config – wybór urządzenia BLE (active) Nettemp config – lista czujników BLE (active)

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

LYWSD03MMC advertising (pasywny)

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:

  1. Dodaj czujnik do Xiaomi Mi Home (powiązanie urządzenia z kontem).
  2. Wyciągnij dane dostępowe (tokeny / bindkey) przez token extractor.
  3. 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 ConfigDisconnect