
Jakiś czas temu skutecznie udało mi się zintegrować Xiaomi Mi Smart Home Gateway 2 z DOMOTICZEM. Zapraszam do lektury wpisu pod linkiem. W zamówionej paczce przyszedł także czujnik wilgotności gleby, natężenia światła, temperatury i przewodności elektrycznej gleby – Xiaomi Mi Plant Flowers Tester. Długo nie miałem zacięcia, aby się do nie go zabrać. Wynikało to głównie z tego powodu, iż czujnik komunikuje się przez Bluetooth Low Energy a na moim Rassberry Pi 2 nie był skonfigurowany Bluetooth. W końcu jednak podjąłem wyzwanie i zadanie okazało się w miarę proste w realizacji.
Na początku kilka słów o samym urządzeniu. Jest to tani czujnik Bluetooth Low Energy mierzący jak napisałem powyżej poziom wilgotności gleby, natężenia światła, temperatury i przewodności elektrycznej gleby w doniczce. Zasilany jest standardową baterią zegarkową 2032, która powinna wystarczyć na rok pracy przy ustawieniu codziennych odczytów. Znalazłem informacje, że na Raspberry Pi 3 powinien działać bez problemu, dla wersji Raspberry Pi 2 wszystko zależy od użytego adaptera. Zanim się napracujemy proponuje ( ja tak zrobiłem ) przeprowadzić instalacje na czystym Raspbianie i w trybie graficznym sprawdzić czy działa adapter Bluetooth i czy prawidłowo wykrywany jest czujnik. Poniżej pokaże jednak jak przeprowadzić instalacje krok, po kroku. Warto nie iść na skróty. U mnie ten sposób zadziałał bez żadnych problemów. Są dwa sposoby integracji czujnika – poprzez skrypt w Pythonie oraz serwer MQTT. Ja skorzystałem z pierwszego sposobu.
Przygotowanie DOMOTICZA.
Na początku tworzymy w DOMOTICZU 4 wirtualne ( dummy ) sensory.
- typ procent (wilgotność)
- typ temperatura
- typ natężenie światła
- typ custom sensor (przewodności elektrycznej gleby ), jednostka µs/cm

Instalacja Bluetooth
Do obsługi czujnik potrzebujemy Bluez przynajmniej w wersji 5.3. Najlepiej jednak skompilować Bluez w wersji 5.44, które ma poprawione błędy z obsługą Bluetooth Low Energy. Brzmi groźnie ale poszło bez problemów. Na początku instalujemy zależności:
sudo apt-get install libglib2.0-dev libdbus-1-dev libical-dev libreadline-dev libudev-dev
Kompilujemy Bluez-5.44
cd /home/pi
wget http://www.kernel.org/pub/linux/bluetooth/bluez-5.44.tar.gz
tar -xvf bluez-5.44.tar.gz
cd bluez-5.44
sudo ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --enable-tools --disable-test --disable-systemd --enable-deprecated
sudo make all
sudo apt-get install python-bluez python-requests
Następnie kopiujemy Gatttool do odpowiedniego katalogu.
sudo cp attrib/gatttool /usr/bin/
U mnie ( na najnowszym Raspbianie ) do katalogu /usr/bin. Podobno, w zależności od dystrybucji może być konieczność skopiowania Gatttools do
sudo cp attrib/gatttool /usr/bin/
Wykonujemy restart.
Integracja czujnika z DOMOTICZEM przy pomocy skryptu Pythona.
Na wszelki wypadek sprawdzamy, czy mamy zainstalowanego git-a.
sudo apt-get install -y git-core
Pobieramy skrypt obsługujący czujnik i kopiujemy go do odpowiedniej lokalizacji.
cd ~ && git clone https://github.com/Tristan79/miflora.git
cp -R ~/miflora/ ~/domoticz/scripts/python/miflora
Pobieramy Python3 i instalujemy wymagane biblioteki do obsługi Bluetooth.
sudo aptitude install python3 python3-pip
sudo pip3 install pygatt
sudo pip3 install requests
Znajdujemy MAC adres czujnika.
Uruchamiamy Bluetooth LE wykonując po kolei
sudo tools/btmgmt le on
sudo tools/btmgmt connectable on
sudo tools/btmgmt power on
i skanujemy w poszukiwaniu urządzeń
sudo hciconfig hci0 down
sudo hciconfig hci0 up
hciconfig
sudo hcitool lescan
efekt poniżej:

Zapisujemy adres, który wykorzystamy do edycji pliku domoticz.py
Edytujemy skrypt domotic.py
Otwieramy pobrany wcześniej skrypt.
~/domoticz/scripts/python/miflora $ sudo nano domoticz.py
Edytujemy w dwóch miejscach ( wstawiamy swój adres DOMOTICZA i port ):

oraz na samym końcu pliku:

adres urządzenia zwrócony przez komendę sudo hcitool lescan
oraz numery wirtualnych czujników DOMOTICZA utworzonych na poczatku.
Testujemy czy wszystko działa:
~/domoticz/scripts/python/miflora $ sudo python3 domoticz.py

Efekt końcowy

Ustawienie odczytów co 12 godzin
Producent obiecuje, iż przy odczytach co 12 godzin bateria wytrzyma przynajmniej rok. Sprawdźmy. Otwieramy Crona : sudo crontab -e i na koncu dodajemy wpis.
0 0,12 * * * /usr/bin/python3 /home/pi/domoticz/scripts/python/miflora/domoticz.py
Po restarcie możemy spać spokojnie. Kwiatki zawsze będą miały mokro. Miłej zabawy.