Monitoring wilgotności roślin doniczkowych przy pomocy Xiaomi Mi Plant Flowers Tester i DOMOTICZA.

Original-for-Xiaomi-Mi-Flora-Monitor-Digital-Plants-Grass-Flowers-Soil-Water-Light-Smart-Tester-Sensor

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.

  1. typ procent (wilgotność)
  2. typ temperatura
  3. typ natężenie światła
  4. typ custom sensor (przewodności elektrycznej gleby ), jednostka µs/cm

Screenshot_20170726_093240

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:

Screenshot_20170802_162228.png

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 ):

Screenshot_20170802_162846.png

oraz na samym końcu pliku:

Screenshot_20170802_162915.png

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

Screenshot_20170802_163552.png

Efekt końcowy

Screenshot_20170802_163823.png

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.