Termometr Xiaomi – jak zintegrować czujnik temperatury i wilgotności z Domoticzem?

Feliks Nitkowski
10 min czytania

Automatyka domowa to coraz bardziej dostępna technologia, która pozwala monitorować i sterować domem z poziomu smartfona lub komputera. Jednym z najwygodniejszych rozwiązań jest integracja urządzeń Xiaomi z platformą Domoticz. W tym poradniku pokażemy krok po kroku, jak połączyć czujnik temperatury i wilgotności Xiaomi z Domoticzem, aby monitorować warunki w domu w czasie rzeczywistym.

Dla kogo ten poradnik?

Poradnik jest dla początkujących i zaawansowanych entuzjastów smart home. Nie musisz być specjalistą – wystarczy, że wykonasz opisane kroki, a integrację zrealizujesz samodzielnie.

Wymagane komponenty i warunki

Zanim zaczniesz, przygotuj następujące elementy:

  • czujnik temperatury i wilgotności Xiaomi – najpopularniejsze modele to:
    • Xiaomi Mi Temperature & Humidity Monitor,
    • Xiaomi Mijia 2 (LYWSD03MMC),
    • Aqara Temperature and Humidity Sensor.
  • raspberry Pi – najlepiej Pi 3 lub nowsze (z wbudowanym Bluetooth BLE),
  • zainstalowany i działający Domoticz – na Raspberry Pi,
  • moduł Bluetooth – z obsługą BLE (jeśli Twój sprzęt go nie ma),
  • dostęp do terminala/konsoli – na Raspberry Pi.

Kompatybilne urządzenia Xiaomi

Domoticz wspiera szeroką gamę akcesoriów Xiaomi/Aqara, w tym:

  • Human Body Sensor (czujnik ruchu),
  • Wireless Smart Switch (przełącznik bezprzewodowy),
  • Door/Window Sensor (czujnik drzwi/okna),
  • Temperature and Humidity Sensor (czujnik temperatury i wilgotności),
  • Smart Socket/Plug – wersja Zigbee,
  • Xiaomi Mi Smart Cube,
  • Wireless Aqara Switch (przycisk pojedynczy i podwójny),
  • Wired Aqara Switch,
  • Xiaomi Gateway LED.

Cztery metody integracji – wybierz swoją

W zależności od modelu czujnika i konfiguracji sprzętowej masz do wyboru kilka podejść. Dla początkujących polecamy metodę RPI Easy – jest najszybsza i najmniej problematyczna.

Metoda 1 – RPI Easy (rekomendowana dla początkujących)

Zalety:

  • najprostsza konfiguracja,
  • automatyczne wykrywanie urządzeń BLE,
  • szeroka zgodność z modelami czujników,
  • wygodny interfejs webowy do konfiguracji.

Kroki instalacji

Krok 1 – przygotowanie środowiska

Zaloguj się na Raspberry Pi i zainstaluj wymagane pakiety, wpisując polecenia:

sudo apt update
sudo apt install python3-pip screen alsa-utils wireless-tools wpasupplicant zip unzip git

Krok 2 – instalacja RPI Easy

Sklonuj repozytorium i zainstaluj zależności Pythona:

git clone https://github.com/enesbcs/rpieasy.git
cd rpieasy
sudo pip3 install jsonpickle

Krok 3 – uruchomienie aplikacji

Uruchom skrypt RPI Easy:

sudo ./RPIEasy.py

Aplikacja startuje na porcie 80. Otwórz przeglądarkę i przejdź pod adres:

http://IP_RASPBERRY:80

Krok 4 – konfiguracja w Domoticzu

Dodaj wirtualny czujnik, aby odbierać dane:

  1. Przejdź do Konfiguracja → Sprzęt.
  2. Dodaj urządzenie „Czujniki Xiaomi” typu Dummy (Does nothing, use for virtual switches only) i kliknij Dodaj.
  3. Dla nowego sprzętu wybierz Utwórz wirtualne czujniki w kolumnie „Typ”.
  4. Dodaj czujnik o nazwie np. „Temperatura i wilgotność” i typie Temp + Hum.

Krok 5 – połączenie RPI Easy z Domoticzem

W interfejsie RPI Easy wybierz wykryty czujnik (adres MAC zostanie znaleziony automatycznie), a następnie dodaj kontroler typu Domoticz, podając adres IP i port (domyślnie 8080). Po zapisaniu ustawień dane powinny automatycznie spływać do Domoticza.

Metoda 2 – skrypt Pythona dla Xiaomi Mi Temperature 2 (LYWSD03MMC)

To rozwiązanie daje pełną kontrolę nad integracją dla modelu Xiaomi Mijia 2.

Krok 1 – pobranie adresu MAC czujnika

W terminalu Raspberry Pi uruchom skanowanie urządzeń Bluetooth:

hcitool scan

Znajdź na liście swój czujnik (np. „Xiaomi”) i zapisz jego adres MAC w formacie XX:XX:XX:XX:XX:XX.

Krok 2 – przygotowanie urządzenia w Domoticzu

Utwórz wirtualny czujnik do przyjmowania danych:

  1. Otwórz panel Domoticza i przejdź do Konfiguracja → Sprzęt.
  2. Dodaj sprzęt „Xiaomi Mijia 2” typu Dummy i kliknij Dodaj.
  3. W kolumnie „Typ” wybierz Utwórz wirtualne czujniki.
  4. Dodaj czujnik „Temperatura i wilgotność” typu Temp + Wilg.
  5. Wejdź w Konfiguracja → Urządzenia, znajdź czujnik i kliknij Edycja.
  6. Zapisz numer IDX – będzie potrzebny w skrypcie.

Krok 3 – pobranie i konfiguracja skryptu

Przygotuj katalog na skrypty Domoticza:

mkdir -p ~/domoticz/scripts/python/MiTemperature2
cd ~/domoticz/scripts/python/MiTemperature2

Pobierz pliki skryptów (z repozytoriów społeczności Domoticza) i umieść je w tym katalogu.

Krok 4 – edycja skryptu konfiguracyjnego

W pliku sendToDomoticz.py ustaw adres serwera i numer IDX:

DOMOTICZ_SERVER = "127.0.0.1:8080" # Adres Twojego serwera Domoticza
SENSOR_IDX = 1 # Zastąp numerem IDX czujnika

Krok 5 – uruchomienie skryptu

Uruchom odczyt z podaniem adresu MAC czujnika:

/usr/bin/python3 ~/domoticz/scripts/python/MiTemperature2/LYWSD03MMC.py -d AA:BB:CC:DD:EE:FF -r -b -c 1

Zastąp AA:BB:CC:DD:EE:FF właściwym adresem MAC Twojego czujnika.

Krok 6 – automatyzacja za pomocą crona

Aby uruchamiać skrypt co 12 godzin, dodaj wpis do crontaba:

crontab -e

Wklej linię harmonogramu i zapisz:

0 0,12 * * * /usr/bin/python3 /home/pi/domoticz/scripts/python/MiTemperature2/LYWSD03MMC.py -d AA:BB:CC:DD:EE:FF -r -b -c 1

Metoda 3 – uniwersalny skrypt Pythona (MiFlora)

Sprawdza się m.in. dla modeli Xiaomi Mi Temperature & Humidity Monitor.

Krok 1 – instalacja zależności

Zainstaluj wymagane pakiety i biblioteki Python:

sudo apt install python3-pip
sudo pip3 install miflora
sudo pip3 install paho-mqtt

Krok 2 – przygotowanie Domoticza

Jak w metodzie 2: dodaj sprzęt typu Dummy, utwórz wirtualny czujnik i zapisz jego IDX.

Krok 3 – utworzenie skryptu

Utwórz plik skryptu:

nano ~/domoticz/scripts/python/miflora/domoticz.py

Wklej kod (z repozytoriów społeczności) i edytuj zmienne konfiguracyjne:

DOMOTICZ_SERVER = "127.0.0.1"
DOMOTICZ_PORT = 8080
SENSOR_MAC = "AA:BB:CC:DD:EE:FF" # Twój adres MAC
SENSOR_IDX_TEMP_HUM = 1 # Twój IDX czujnika

Krok 4 – uprawnienia i automatyzacja

Nadaj uprawnienia wykonywania i dodaj wpis do crona:

chmod +x ~/domoticz/scripts/python/miflora/domoticz.py
0 0,12 * * * /usr/bin/python3 /home/pi/domoticz/scripts/python/miflora/domoticz.py

Metoda 4 – integracja przez bramę Xiaomi (Gateway)

Jeśli masz Xiaomi Gateway, proces jest prostszy – brama obsługuje komunikację z czujnikami. Upewnij się, że czujnik jest sparowany w aplikacji Xiaomi Home i brama ma stały adres IP.

Procedura:

  1. W Domoticzu przejdź do Konfiguracja → Sprzęt.
  2. Dodaj sprzęt typu Xiaomi Gateway (jeśli dostępny w Twojej wersji Domoticza).
  3. Podaj adres IP bramki i zapisz.
  4. Domoticz automatycznie wykryje dostępne czujniki.

Rozwiązywanie problemów

Problem 1 – czujnik nie jest wykrywany

Przyczyna – urządzenie Bluetooth jest poza zasięgiem lub moduł BLE działa nieprawidłowo.

Rozwiązanie – wykonaj kolejno:

  • upewnij się, że Raspberry Pi znajduje się blisko czujnika,
  • uruchom skanowanie: sudo hcitool scan i sprawdź, czy czujnik jest na liście,
  • zrestartuj usługę Bluetooth: sudo systemctl restart bluetooth,
  • zaktualizuj firmware czujnika w aplikacji Xiaomi Home, jeśli problem nadal występuje.

Problem 2 – skrypt zwraca błędy Pythona

Przyczyna – brakujące zależności lub nieodpowiednia wersja Pythona.

Rozwiązanie – sprawdź i uzupełnij środowisko:

  • sprawdź wersję: python3 --version,
  • doinstaluj brakujące moduły: sudo pip3 install [nazwa_modułu],
  • upewnij się, że w cronie używasz /usr/bin/python3, a nie /usr/bin/python.

Problem 3 – dane nie pojawiają się w Domoticzu

Przyczyna – błędny numer IDX lub adres/port serwera.

Rozwiązanie – zweryfikuj konfigurację i wyślij test:

  • sprawdź numer IDX czujnika w Konfiguracja → Urządzenia,
  • potwierdź poprawność adresu IP i portu Domoticza,
  • wyślij dane testowe poleceniem:

curl "http://127.0.0.1:8080/json.htm?type=command&param=udevice&idx=1&nvalue=0&svalue=25;50"

Zastąp 1 numerem IDX i 25;50 testowymi wartościami temperatury i wilgotności.

Problem 4 – nieprawidłowa temperatura w Domoticzu

Przyczyna – błędny format danych lub zły typ czujnika.

Rozwiązanie – sprawdź ustawienia:

  • ustaw typ czujnika na Temp + Hum,
  • użyj formatu temperatura;wilgotność (np. 22.5;45),
  • jeśli wartości są przesunięte, sprawdź kalibrację w instrukcji producenta.

Optymalizacja i zaawansowane konfiguracje

Uruchamianie skryptu w tle (Screen)

Aby skrypt działał po zamknięciu terminala, użyj Screen:

screen -S xiaomi_sensor python3 ~/domoticz/scripts/python/MiTemperature2/LYWSD03MMC.py -d AA:BB:CC:DD:EE:FF -r -b -c 1

Aby odłączyć sesję naciśnij Ctrl+A, potem D. Powrót do sesji:

screen -r xiaomi_sensor

Monitorowanie stanu baterii

Wiele czujników Xiaomi podaje poziom baterii. W Domoticzu utwórz wirtualny czujnik typu Procent i w skrypcie wyślij wartość baterii:

# W skrypcie dodaj:
battery_level = sensor_data['battery']
# Wyślij do Domoticza dla urządzenia Battery

Zwiększenie częstotliwości pomiarów

Aby częściej odświeżać dane (np. co 5 minut), zmień harmonogram w cronie:

*/5 * * * * /usr/bin/python3 /home/pi/domoticz/scripts/python/MiTemperature2/LYWSD03MMC.py -d AA:BB:CC:DD:EE:FF -r -b -c 1

Integracja z notyfikacjami

Skonfiguruj powiadomienia w Domoticzu, aby otrzymywać alerty po przekroczeniu progów:

  1. Przejdź do Setup → Notifications.
  2. Dodaj wyzwalacz dla swojego czujnika.
  3. Ustaw progi (np. temperatura > 28°C).
  4. Wybierz kanał powiadomień (email, push itp.).

Bezpieczeństwo i najlepsze praktyki

Ochrona urządzenia Bluetooth

Wykonaj podstawowe kroki zwiększające bezpieczeństwo:

  • wyłącz Bluetooth gdy nie jest potrzebny: sudo systemctl stop bluetooth,
  • zmień hasło do Raspberry Pi na silne,
  • regularnie aktualizuj system: sudo apt update && sudo apt upgrade.

Kopia zapasowa konfiguracji

Wykonuj regularne backupy katalogu Domoticza:

tar -czf domoticz_backup_$(date +%Y%m%d).tar.gz ~/domoticz/

Zmienne środowiskowe

Zamiast wpisywać dane w skryptach, użyj zmiennych środowiskowych:

export DOMOTICZ_IDX_TEMP=1
export DOMOTICZ_SERVER="127.0.0.1:8080"
python3 ~/domoticz/scripts/python/miflora/domoticz.py

Udostępnij ten artykuł
Brak komentarzy

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *