Monitor prawdopodobieństwa opadów deszczu w Domoticzu.

Na blogu u Cezara wyczytałem swego czasu świetny wpis o zaimplementowaniu w Domoticzu radaru burzowego z serwisu https://burze.dzis.net/. Działa znakomicie.

FireShot Capture 60 - Domoticz - http___91.245.83.80_9009_#_Utility.png

Nie chcąc dublować wpisu postanowiłem poszukać rozwinięcia i ewentualnego uzupełnienia tematu. Znalazłem na forum Domoticza skrypt, który na podstawie danych z http://www.wunderground.com podaje prawdopodobieństwo opadów i w zależności od wyniku ustawia przełącznik w odpowiedniej pozycji. Sprawdzałem kilkanaście dni ( aktualnie u nas co jakiś czas pada ) i działa prawidłowo. Przydaje się do np. do planowania podlewania ogródka.

Sprawa jest bardzo prosta. Tworzymy 3 wirtualne czujniki ( przełącznik prognozowanych opadów w danym dniu,  przełącznik prognozowanych opadów w aktualnej godzinie i kafelek tekstowy z procentowym prawdopodobieństwem opadów ). Skrypt jest napisany w języku dzVents. Jest to kolejna generacja LUA. Swoją drogą bardzo intuicyjny język. Aktualnie trochę się im bawię i jestem pod wrażeniem. Na początku musimy włączyć jego obsługę w Domoticzu. Przechodzimy do /Konfiguracja/Ustawienia/Inne

FireShot Capture 61 - Domoticz - http___91.245.83.80_9009_#_Setup.png

Dobrze jest ustawić poziom zapisywania do logów aby wiedzieć co aktualnie zwraca skrypt. Aby zapobiec błędom w kopiowaniu skryptu na blog proponuje pobrać kod bezpośrednio z forum Domoticza. Wątek jest tu.

Uzupełniamy dane:

FireShot Capture 62 - Domoticz - http___91.245.83.80_9009_#_Events

Najlepiej wkleić poniższy skrypt w kreatorze zdarzeń Domoticza /Konfiguracja/Więcej opcji/Zdarzenia. Nie będzie problemu ze ścieżką dostępu.

FireShot Capture 64 - Domoticz - http___91.245.83.80_9009_#_Events

Wstawiamy nazwę swojej lokalizacji, kraj, klucz API z www.wunderground.com. Jak pobrać klucz pisałem w poście Prognoza pogody z serwisów internetowych w Raspberry Pi i systemie DOMOTICZ. Tworzymy teraz 3 wirtualne czujniki, o których pisałem wcześniej.

Albo nadajemy im nazwy jak w skrypcie, albo własne, pamiętając o aktualizacji skryptu. Ważne, aby sprawdzić poprawność ścieżki do lua.  ( 21 linijka kodu ). Powinno być OK, ale u mnie musiałem poprawić. W linijce 8 kodu ustawiamy odświeżanie ( u mnie co 1 minuta – tak dla testów ). Oczywiście restart i w logach powinniśmy zobaczyć coś takiego. Pamiętamy o zaznaczeniu Event active.

FireShot Capture 63 - Domoticz - http___91.245.83.80_9009_#_Log

Efekt finalny jest taki. W zakładce przełączniki zobaczymy.

FireShot Capture 65 - Domoticz - http___91.245.83.80_9009_#_LightSwitches.png

Natomiast w zakładce /Użytkowe mamy nasz wynik procentowy.

FireShot Capture 66 - Domoticz - http___91.245.83.80_9009_#_Utility.png

 

Jeżeli w Waszej lokalizacji aktualnie nie pada ( jak u mnie ) proponuje znaleźć miasto z opadami i dla testu zmienić w skrypcie.

PS. Ikonki w przełącznikach nie są domyślne. Proponuje poszukać na forum fajnych ikonek np. tu i zaktualizować w przełącznikach.

FireShot Capture 70 - Domoticz - http___91.245.83.80_9009_#_LightSwitches

Wchodzimy w /Konfiguracja/Więcej opcji/Własne ikony wybieramy *.zip i przesyłamy. Możemy już wybierać swoje ikony.

PS2. Jeżeli będzie ktoś miał problemy ze skryptem proszę o info w komentarzach a prześlę mailem.

Teraz oczekiwanie na deszcz nabrało innego sensu 🙂

 

 

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.

System automatycznego podlewania ogrodu z wykorzystaniem Domoticza.

Z uwagi, że zima jeszcze nie odpuściła i jest jeszcze trochę czasu do pierwszych prac polowych, postanowiłem z wyprzedzeniem opisać mój system irygacyjny, który świetnie sprawdził się w ubiegłym roku. Testowałem go od wiosny do jesieni.  Działał bez zarzutu. W tym roku postanowiłem go trochę udoskonalić o czym napisze poniżej.

Mój ubiegłoroczny system składał się z :

1. Raspberry Pi, plus oczywiście DOMOTICZ

2. Moduł przekaźnika RM1 z izolacją optoelektroniczną 5V 10A/125VAC

3. Elektrozawór 1/2″-24vBurkert

372160525_1_644x461_elektrozawor-1-2-24vburkert-tarnowskie-gory

4. Zawór kulowy

5. Zraszacz ogrodowy

6. Garść szybkozłączek i kawałków węży ogrodowych.

W wersji podstawowej systemu to w zupełności wystarcza. Należy podłączyć moduł przekaźnika do Raspberry a następnie podpiąć do niego elektrozawór. Wszystko spiąć wężami ogrodowymi i ustawić odpowiedni harmonogram lub zdarzenie.  Ale po kolei.

Podłączenie przekaźnika i zarządzanie zasilaniem

Przekaźnik podłączamy według poniższego schematu:

  1. VCC – zasilanie 3,3 V PIN 01
  2. IN1 – podłaczany do odpowiedniego pinu GPIO – PIN XX
  3. GDN – uziemienie – PIN 06

Przewód zasilający elektrozawór podłączamy do zacisków z prawej strony. Rozcinany żyłę brązaową i łączymy z zaciskami nr 2 i 3 ( patrząc z lewej strony ). Żyła niebieska powinna zostać nieprzecięta. Po otrzymaniu sygnału z GPIO Raspberry złącza 2 i 3 zostają połączone i urządzenie jest zasilane.

img_20160627_221234

Podłączanie do wodociągu nie wymaga wyjaśnień.

img_20160709_134019

Skrypty sterujące przekaźnikiem.

Aby uruchomić urządzenie tworzymy nowy skrypt:


sudo nano zraszacz_ON.py

Wstawiamy poniższy kod:


#!/usr/bin/python
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setup(XX, GPIO.OUT)
GPIO.output(XX,1)
GPIO.cleanup()

Aby wyłączyć  urządzenie tworzymy kolejny skrypt:


sudo nano zraszacz_OFF.py

Wstawiamy poniższy kod zmieniając GPI0.setup z 1 na 0


#!/usr/bin/python
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setup(XX, GPIO.OUT)
GPIO.output(XX,0)
GPIO.cleanup()

Nadajemy prawa do wykonywania dla skryptów


sudo chmod zraszacz_ON.py
sudo chmod zraszacz_OFF.py

Ręczne wywołanie skryptów powinno uruchomić i wyłączyć urządzenie:


sudo python zraszacz_ON.py
sudo python zraszacz_OFF.py

Moim zdaniem wygodniej jednak będzie użyć sterowanych bezprzewodowo gniazdek gniazdek, aby nie ciągać się z kablami po piwnicach np. Orvibo lub Xiaomi Smart Plug .

Integracja urządzeń z DOMOTICZEM.

Dodajemy wirtualny czujnik, ustawiamy na Przekaźnik.

screenshot_20170126_175816

W sekcji Przekaźniki ustawiamy akcje uruchomienia zaworu:

screenshot_20170126_180047

screenshot_20170126_180408

Ustawienie planów i zdarzeń

Możemy ustawić poszczególne okresy, w których system podlewania zostanie uruchomiony . Naciskamy przycisk „Plany” na kafelku w sekcji Przekaźniki. Możemy ustawić dowolny harmonogram.

Screenshot_20170126_181238.png

W takiej wersji system funkcjonował u mnie w ubiegłym sezonie. Działał bardzo sprawnie. Podlewanie uruchamiało się na 15 min. codziennie. Minus tego rozwiązania był taki, że również podczas deszczu włączały się zraszacze, dlatego postanowiłem rozbudować system.

Dodatkowe elementy systemu

W tym sezonie system został rozbudowany o dwa nowe elementy, które opisywałem już na blogu:

Pozwoli mi to na bardziej precyzyjne zarządzanie procesem podlewania przy pomocy zdarzeń w Domoticzu. Do sekcji „Zdarzenia” przechodzimy poprzez ścieżkę /Konfiguracja/Więcej opcji/Zdarzenia. Otwiera się kreator, gdzie za pomocą prostych i intuicyjnych komend możemy budować dowolne zdarzenia. Wykorzystać możemy odczyty z czujników podłączonych do Rasberry jak również dane z sensorów wirtualnych. Ich podłączenie opisałem w poście Prognoza pogody z serwisów internetowych w Raspberry Pi i systemie DOMOTICZ.

Działający system pokaże, gdy na poważnie ruszy sezon ogrodowy.