Czujnik temperatury i wilgotności DHT11 w Domoticzu

W artykule Arduino – czujnik wilgotności i temperatury DHT11 opisywałem sposób odczytywania wartości temperatury i wilgotności powietrza na wyświetlaczu LCD z wykorzystaniem arduino uno.
Dzisiaj przedstawię w jaki sposób podłączyć taki sensor do Raspberry Pi i skonfigurować jego działanie w Domoticzu.

Podłączenie:

Tak jak już wspominałem DHT11 występuje w dwóch wariantach – jako sam czujnik, do którego musimy podłączyć jeszcze rezystor oraz z płytką z wbudowanym już opornikiem.

  • Wbudowany termometr
    • Zakres pomiarowy: 0 – 50 °C
    • Dokładność: ±2°C
  • Czujnik wilgotności:
    • Zakres pomiarowy: 20 – 95%RH
    • Dokładność  ±5%RH

Pin Vcc (1) podłączamy do zasilania w malince. Może być to 3,3V jaki i 5V – czujnik pracuje na obydwu napięciach.
Pin Data (2) to wyjście sygnałowe. Podłączamy je do wybranego pinu w Raspberry – w moim przypadku do pinu 5.
Pin GND podłączamy do masy w malince.

Logujemy się do Raspberry przez SSH i wpisujemy kolejno:

  • 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 http://github.com/adafruit/Adafruit_Python_DHT.git
  • cd Adafruit_Python_DHT
  • sudo python setup.py install
  • cd examples
  • sudo chmod +x AdafruitDHT.py
  • sudo ./AdafruitDHT.py 11 5

Jeżeli wszystko zrobiliśmy poprawnie to w konsoli powinny pokazać się odczyty z czujnika.

Teraz musimy dodać wirtualny przełącznik w systemie Domoticz. W tym celu wchodzimy w zakładkę Konfiguracja\Sprzęt i wybieramy jako typ opcję Dummy. Nazywamy przełącznik i dodajemy go.

Następnie klikamy Utwórz wirtualne czujniki, nadajemy nazwę, a typ czujnika ustawiamy jako Temp+Wilg.

 

Teraz należy zapamiętać IDX tego przełącznika i utworzyć plik, który będzie automatycznie odczytywał wartości temperatury i wilgotności z czujnika i przesyłał je do Domoticza.
W tym celu w terminalu wpisujemy:

  • sudo nano temp.sh

Otworzy się plik, do którego wklejamy poniższy kod:

#!/bin/sh

# Domoticz server
SERVER="adres ip domoticza i port np. 192.168.0.106:8080"
# DHT IDX
DHTIDX="numer IDX wirtualnego czujnika"

# DHTPIN
DHTPIN="5"

sleep 5

sudo nice -20 python /home/pi/Adafruit_Python_DHT/examples/AdafruitDHT.py 11 $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=""

 

Musimy wpisać w miejsce:

  • SERVER – adres ip domoticza wraz z portem
  • DHTDX – numer IDX wcześniej utworzonego czujnika w domoticzu
  • DHTPIN – pin GPIO w Raspberry, do którego podpięty jest czujnik. W moim wypadku jest to pin 5.

Musicie zwrócić uwagę czy w linii 15 utworzonego pliku temp.sh (/home/pi/Adafruit-Raspberry-Pi-Python-Code/Adafruit_DHT_Driver/Adafruit_DHT 11) ścieżka do Waszego pliku Adafruit_DHT jest taka sama w Waszym przypadku.

Zapisujemy plik i nadajemy mu uprawnienia komendą:

  • sudo chmod +x temp.sh

Ustawiamy uruchamianie się skryptu i przesyłanie danych co określony czas komendą:

  • crontab -e

W otwartym pliku na samym końcu dopisujemy:
*/5 * * * * /home/pi/temp.sh

Liczba 5 określa co ile minut będzie dokonywany pomiar. Można tu ustawić dowolną wartość.

PO wykonani poprawnie wszystkich powyższych kroków w Domoticzu możemy odczytać wartości wilgotności i temperatury powietrza.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *