Domoticz #5 – obsługa termometrów Xiaomi Mijia LYWSD03MMC Bluetooth

W drugiej części opisu moich doświadczeń z Domoticzem – Domoticz #2 opisałem obsługę sensorów temperatury i wilgotności Xiaomi Mijia LYWSDCGQ, popularnie zwanych czujnikami okrągłymi, lub v1. Dziś przedstawię sposób integracji z Domoticzem jakby nowszej wersji – czujników kwadratowych v2, Xiaomi Mijia LYWSD03MMC.

Czujniki okrągłe LYWSDCGQ kontra kwadratowe LYWSD03MMC

Zacznę od tego, że czujniki starsze okrągłe i nowsze kwadratowe komunikują się za pomocą Bluetooth. Jednak są między nimi spore różnice. Najważniejsza to inny format wysyłanych danych. Dlatego metoda obsługi czujników okrągłych opisana przeze mnie we wpisie Domoticz #2 nie działa z czujnikami kwadratowymi. Dostałem sporo informacji, że przedstawiony tam sposób nie działa, a po analizie okazywało się, że próbowano odczytywać nowsze kwadratowe czujniki, stąd problem. Inne różnice to m.in czujnik okrągły / czujnik kwadratowy:

  • bateria AAA / CR2032
  • zakres temperatur 0 – 60ºC / -9,9ºC – 60ºC
  • ekran 1,69″ kwadrat / 1,78″ okrągły

Nowsze, kwadratowe czujniki LYWSD03MMC stały się ostatnio bardzo popularne. Do tego są sporo tańsze od “starszych” okrągłych braci. Można je kupić w pakietach po 2-3 sztuki i cena jest jeszcze bardziej atrakcyjna. Mój sensor kupowałem w promocji na Bangggod za 5,99$ (ale można spotkać taniej), linki poniżej:

Skrypt do odczytu danych z sensorów Xiaomi Mijia LYWSD03MMC

Tradycyjnie już, na github, można znaleźć skrypt do obsługi czujników LYWSD03MMC, a dokładniej tutaj: https://github.com/JsBergbau/MiTemperature2

Do zadziałania całości potrzebujemy w systemie python3, bluez, python3-pip oraz bluepy. Na początek instalacja 3 pierwszych:

I instalujemy bluepy

Przechodzimy do folderu scripts/python w domoticzu (cd domoticz/scripts/python/) i klonujemy skrypt do obsługi termometrów Xiaomi:

Potrzebny nam będzie MAC Address naszego termometru, który odczytamy za pomocą znanego już polecenia:

Trzecie urządzenie od dołu to mój kwadratowy termometr Xiaomi

No to próba odpalenia odczytów w konsoli. Wchodzimy do folderu ze skryptem (cd MiTemperature2) i wpisujemy:

Odczyty lecą cały czas, by je zatrzymać, trzeba wcisnąć CTRL+C. Spróbujmy uzyskać jeden odczyt, z dokładnością jednego miejsca po przecinku:

Użyte parametry to kolejno:

  • -d –device – mac adres urządzenia;
  • -r –round – zaokrąglanie pomiaru do jednego miejsca po przecinku
  • -deb –debaunce – pobieranie dokładniejszego wyniku, wymaga parametru -r
  • -b –battery – pobieranie napięcia baterii
  • -c N –count N – gdzie N to liczba naturalna – ilość pomiarów

Wszystkie powyższe parametry są dokładnie opisane na stronie projektu na githubie https://github.com/JsBergbau/MiTemperature2.

Obsługa Xiaomi Mijia LYWSD03MMC przez Domoticza

Na początek trzeba dodać w Domoticzu wirtualne urządzenie (czujnik). Wchodzimy w Sprzęt i w typie Dummy (a o nazwie nadanej przez nas) wciskamy Utwórz wirtualne czujniki.

W nowo otwartym oknie podajemy nazwę, która pozwoli nam zlokalizować czujnik i jako typ czujnika ustawiamy Temp & Wilg.

Po utworzeniu najważniejsze – odczytujemy sobie Idx nowo utworzonego czujnika. U mnie jest to 20 (trzecia kolumna).

W folderze domoticz/scripts/python/MiTemperature2 otwieramy do edycji plik sendToDomoticz.py

I wpisujemy Idx naszego czujnika w miejscu idx_temp = “xx” oraz zmieniamy inne wartości wg potrzeb.

No to teraz próba – wpiszmy linijkę komend tak, jakbyśmy mieli ją podać w cronie i zobaczmy czy zadziała:

Jeśli zadziała jak wyżej (dane zostaną przekazane do czujnika w domoticzu), to można linijkę wkleić do crona. Czyli

i wysyłanie danych co 10 minut, czyli całość wygląda jak druga linijka na poniższym screenie:

Na koniec tradycyjnie sudo service cron reload.

Podsumowanie

Cała konfiguracja czujnika Xiaomi Mijia v2 jest bardzo podobna do wcześniej opisywanej obsługi Xiaomi Mijia v1. Całość opiera się na cyklicznie wywoływanych przez crona skryptach, które wysyłają dane do domoticza. Efektem są dane historyczne w postaci znanych już wykresów:

jak i bieżące odczyty

Co dalej można z tym zrobić? Tradycyjnie możliwości jest wiele. Można uzależnić temperaturę czy wilgotność od włączania lub wyłączania urządzeń – grzejnika, klimatyzatora lub wentylatora np. w łazience, by zmniejszyć wilgotność po kąpieli. Obsługa jest dość prosta, a same czujniki są tanie i wygodne w użyciu.

Wpis “Domoticz #5 – obsługa termometrów Xiaomi Mijia LYWSD03MMC Bluetooth” komentowano 3 razy

  1. Witam, mam problem na RPi B3+ Stretch, nie chce wysłać danych:
    Traceback (most recent call last):
    File “/home/pi/domoticz/scripts/python/MiTemperature2/./sendToDomoticz.py”, line 5, in
    import requests
    ModuleNotFoundError: No module named ‘requests’
    Data couln’t be send to Callback, retrying…

  2. Ok zrobiłem:
    pip install requests
    i poszło bez błędu ale nadal nie mam danych w domoticzu?

Dodaj komentarz

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.