Przesyłanie danych pomiędzy Domoticzami. Udostępnianie odczytów z czujników.

W dzisiejszym wpisie przedstawię w jaki sposób przekazywać odczyty z czujników z jednego urządzenia z zainstalowanym Domoticzem do drugiego. Zaleta takiego rozwiązania jest oczywiście wyeliminowanie konieczności łączności przewodowej pomiędzy urządzeniami.

W salonie umiejscowiłem główny Domoticz ( MASTER ) a w piwnicy i sypialni pozostałe dwa ( SLAVE 1 i SLAVE 2 ).  Wykorzystałem dwie sztuki Raspberry Pi 2 oraz Pi Zero. Po zainstalowaniu systemu, skonfigurowaniu sieci ( zobacz post Raspberry na WIFI ) i podłączeniu czujników przystąpiłem do budowy sieci.

SLAVE 1 – piwnica ( podłączyłem czujnik temperatury DS18S20 do boilera )

zrzut ekranu105.png

Aby przekazać dane z czujnika do sieci podajemy w ustawieniach  port, po którym maja się komunikować urządzenia – domyślnie 6144.

zrzut-ekranu107

Następnie ustawiamy login i hasło niezbędne przy odbieraniu danych.

zrzut-ekranu108

Przechodzimy teraz do Konfiguracja/Więcej opcji/Użytkownicy i dodajemy nowego użytkownika.

zrzut-ekranu109

Możemy również ustawić, które czujniki będą udostępniane ( USTAW URZĄDZENIA – z prawej strony ). Nie wybranie żadnego oznacza udostępnienie wszystkich.

SLAVE 2 – sypialnia ( podłączyłem czujnik DHT22 oraz monitor temperatury procesora Raspberry )

zrzut-ekranu106

Ustawiamy takie same dane jak dla SLAVE 1. Możemy oczywiście zmienić port, użytkownika czy hasło, pamiętając aby jednak dane te były wypełnione.

Teraz należy te dane przekazać do urządzenia MASTER. Używamy typu urządzenia : Domoticz – Remote Server. Ustawiamy sprzęt wpisując dane ustawione w SLAVE 1 i SLAVE 2 jak na grafice poniżej:

Na głównym urządzeniu MASTER dodajemy sprzęt jak poniżej:

zrzut-ekranu112

Podajemy adresy IP urządzeń SLAVE 1 i SLAVE 2, port udostępniania oraz użytkownika i hasło dla poszczególnych urządzeń.  Przechodzimy do Konfiguracja/Urządzenia i dodajemy je do panelu ( klikamy zieloną strzałkę i nadajemy nazwę urządzenia ). Efekt finalny wygląda tak.

zrzut-ekranu114

Widzimy wartość odczytu temperatury wewnętrznej z sypialni – SLAVE 2 oraz temperaturę ciepłej wody z piwnicy – SLAVE 1 na urządzeniu MASTER w salonie. Zauważyć można, że nie mamy odczytu z czujnika DHT22 z sypialni. Wynika to z tego, iż jest on obsługiwany jako czujnik wirtualny a one nie maja jeszcze zaimplementowanej obsługi udostępniania w systemie.

Moim zdaniem jest to bardzo użyteczny sposób pokrycia zasięgiem odczytu czujników całego domu. Biorąc pod uwagę, iż koszt Pi ZERO to jedyne 5 $ zbudowanie sieci monitorującej jest stosunkowo tanie. Jest zdecydowanie tańsze od urządzeń wykorzystujących Z-Wave czy BLE 4.0 ). Ponadto każde Raspberry Pi można rozbudować o dowolna ilość czujników i przekaźników automatyzujących zbieranie danych z otoczenia czy zarządzanie urządzeniami.


PS. Od jakiegoś czasu na stronie głównej DOMOTICZA jest polecany nowy sposób instalacji systemu. Pobieramy i instalujemy najnowszego Rassbiana a następnie  instalujemy Domoticza komendą:

sudo curl -L install.domoticz.com | bash

Wszystkie instalacje wykonałem tym sposobem i wszystko przebiegło bezproblemowo.

Podłączenie czujnika temperatury i wilgotności DHT-11/DHT22 do Raspberry i DOMOTICZA

Znalezione obrazy dla zapytania dht11 dht22

Poniżej przedstawię sposób integracji jednego z bardziej popularnych ( i tanich ) czujników do pomiaru wilgotności powietrza i temperatury w pomieszczeniu ( DHT11 ) oraz na zewnątrz ( DHT22).

Porównanie parametrów czujnika DHT11 i DHT22:

  • Napięcie zasilania: 3 V do 5,5 V / 3,3 V do 6 V
  • Średni pobór prądu: 0,2 mA / 0,2 mA
  • Temperatura
    • Zakres pomiarowy: 0 – 50 °C / -40 do 80 °C
    • Rozdzielczość: 8-bitów (1 °C) / 8-bitów (0,1 °C)
    • Dokładność: 1 °C / ± 0,5 °C
    • Czas odpowiedzi: 6 – 15 s (typowo 10 s) / średnio 2 s
  • Wilgotność:
    • Zakres pomiarowy: 20 – 90 %RH / 0 – 100 % RH
    • Rozdzielczość: 8-bitów (±1 % RH*) / 8-bitów (±0,1 % RH)
    • Dokładność  ±4 RH* (przy 25 °C) / ±2 %RH*
    • Zakres pomiarowy: 6 – 30 s / średnio 2 s

Jak widać powyżej, czujnik DHT22 cechuje się większym zakresem pomiaru oraz dokładnością. Sposób podłączenia i oprogramowanie czujników właściwie się nie różni.

Podłączenie czujników do Raspberry Pi

Znalezione obrazy dla zapytania dht 11 raspberry pi

DHT11 Pinout

źródło : http://domoticx.com

Po zalogowaniu się do DOMOTICZA przez ssh wydajemy kolejno poniższe komendy:

sudo apt-get install git-core

sudo apt-get update
sudo apt-get install -y python3 python3-pip python-dev
sudo pip3 install rpi.gpio
sudo apt-get update
sudo apt-get install build-essential python-dev
sudo git clone git://github.com/adafruit/Adafruit_Python_DHT.git
cd Adafruit_Python_DHT

sudo python setup.py install
cd examples
sudo chmod +x AdafruitDHT.py

Po uruchomieniu skryptu poniższa komendą powinniśmy otrzymać wynik pomiaru.
sudo ./AdafruitDHT.py 22 4 ( gdzie 22 to typ czujnika a 4 to pin, do którego jest podłączony )

zrzut ekranu99.png

Jeżeli Raspberry Pi poprawnie odczytuje temperaturę i wilgotność przekazujemy dane do DOMOTICZA.

Dodanie odczytów z czujników DHT11 i DHT22 do DOMOTICZA.

Na początku tworzymy wirtualny czujnik wilgotności i temperatury ( analogicznie jak np. w poście Geolokalizacja w Domoticzu).

zrzut ekranu100.png

Następnie tworzymy skrypt o nazwie np. DHT22 komendą:

sudo nano DHT22.sh

Wklejamy następujący kod:

#!/bin/sh

# Domoticz server
SERVER="192.168.2.21:8080"
# DHT IDX
DHTIDX="21"

# DHTPIN
DHTPIN="4"

sleep 5

sudo nice -20 python /home/pi/Adafruit_Python_DHT/examples/AdafruitDHT.py 22 $DHTPIN > /var/tmp/temp.txt
#TEMP=$(cat /var/tmp/temp.txt | grep "Temp" | awk '{ print $3 }')
#TEMP=$(cat /var/tmp/temp.txt | grep "Temp")

TEMP=$(awk ' /Temp/ {print substr ($0,6,4)}' /var/tmp/temp.txt)
#HUM=$(awk ' /Hudmidity/ {print substr ($0,0)}' /var/tmp/temp.txt)
#HUM=$(awk ' /Humidity/ {print 1$}' /var/tmp/temp.txt)
HUM=$(awk ' /Humidity/ {print substr ($0,22,4)}' /var/tmp/temp.txt)
echo $TEMP
echo $HUM

# Send data
curl -s -i -H "Accept: application/json" "http://$SERVER/json.htm?type=command&c=getauth&param=udevice&idx=$DHTIDX&nvalue=0&svalue=$TEMP;$HUM;2"


TEMP=""
HUM=""

Nadajemy uprawnienia dla pliku:

sudo chmod +x DHT22.sh

i dodajemy wpis do crona, aby otrzymywać odczyty w zadanym interwale czasu ( analogicznie jak we wpisie Czujnik deszczu w Domoticzu ).

Efekt końcowy powinien być mniej więcej taki.

zrzut-ekranu101

Podsumowując. Bardzo polecam te czujniki. Ich cena na Aliexpress to tylko ok. $ 0,80. Są w miarę dokładne i stabilne. Przy tej cenie i wykorzystaniu Pi ZERO możemy stworzyć tani, bezprzewodowy czujnik o praktycznie nieograniczonych możliwościach zastosowania.

your code here

Geolokalizacja w Domoticzu

Cover art

Nadszedł czas na rozbudowę systemu DOMOTICZ o funkcjonalności związane z geolokalizacją. Pomyślałem, że bardzo użyteczna byłaby funkcja wykonywania pewnych, zaplanowanych zdarzeń, w zależności od miejsca, gdzie aktualnie się znajdujemy. Czujniki ruchu nie rozwiązują problemu, ponieważ było by trzeba zainstalować ich dużą ilość. Pomysł polega na tym, aby pewne czynności wykonywały się w momencie wejścia lub wyjścia z określonej geograficznie strefy. Okazuje się to banalnie proste, gdyż praktycznie nie rozstajemy się z telefonem. Z pomocą przychodzi aplikacja GeoFence for Domoticz. Za jej pomocą, na naszym smartphonie, określimy współrzędne strefy i promień jej zasięgu oraz określimy adres serwera, na który ma być wysłana informacja o wejściu lub wyjściu z określonego obszaru.

  GeoFence for Domoticz – zrzut ekranu

Na telefonie podajemy kolejno adres serwera DOMOTICZ i port ( domyślnie 8080 ), standardowe hasło serwera ( pi:raspberry ), współrzędne np. naszego domu ( pobrane np. z serwisu http://www.wspolrzedne-gps.pl ), promień strefy w metrach i numer przełącznika w DOMOTICZU ( o czym poniżej )

Aby połączyć nasz telefon z systemem tworzymy wirtualny przełącznik, którego stan ( ON/OFF ) poinformuje sparowane urządzenia o tym czy jesteśmy w zasięgu strefy.

Dodajemy wirtualny przełącznik i konfigurujemy go jako ( ON/OFF ).

zrzut-ekranu96

zrzut-ekranu97

Przechodzimy do /Konfiguracja/Urządzenia i zapamiętujemy jego IDX ( u mnie 19) .

zrzut-ekranu98

Ta wartość ustawiamy w konfiguracji Geofence for Domoticz. Testujemy połączenie przyciskiem na dole ekranu i gotowe.

Teraz możemy zacząć tworzyć zdarzenia oparte na geolokalizacji. Zakładając, że mamy przy sobie telefon, możemy zaprogramować, aby po naszym powrocie do domu zapaliły się światła pod bramą czy włączył się ekspres do kawy. Rozwiązanie to jest praktycznie bezkosztowe i nie wymaga instalacji czujników. Oczywiście, by w pełni wykorzystać jego zalety, musimy mieć malinę „wystawioną na zewnątrz” np. przy użyciu serwerów HAMACHI.

Życzę miłego testowania.