Benutzer-Werkzeuge

Webseiten-Werkzeuge


hardware:channels:sensors:dht22

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
hardware:channels:sensors:dht22 [2017/10/04 23:41] – verschoben jauhardware:channels:sensors:dht22 [2019/01/05 16:06] (aktuell) – [Ergänzung sudo] ruperts
Zeile 1: Zeile 1:
-Feuchte-und Temperatur-Sensor DHT22 am Raspberry Pi betreiben+======Feuchte- und Temperatur-Sensor DHT22====== 
 +Im folgenden wird beschrieben wie man einen DHT22 am Raspberry Pi anschließt und betreibt.
  
-  * 1. Schritt +====Sensor anschließen==== 
-Sensor anschließen. +Dieser benötigt an PIN2 ein Pull up (4,7k - 10k) Widerstand nach 3,3V (GPIO Pin1) und Pin4 Masse (z.B. GPIO Pin 9)
-Dieser benötigt an PIN2 ein Pull up (4,7k - 10k) Wiederstand nach 3,3V (Pin1) und Pin4 Masse. +Pin2 wird mit einem beliebigen GPIO verbunden (z.B. GPIO23 Pin 16). 
-Pin2 wird mit einem beliebigen GPIO verbunden.+<note>Es gibt auch Ausführungen des Sensors die den Pull up-Widerstand bereits eingebaut haben.</note>
  
-  *   2. Schritt +====Software installieren====
-Benötigte Software installieren+
 <code> <code>
-apt-get install git-core+sudo apt-get install git-core 
 + 
 +cd ~
  
 git clone git://git.drogon.net/wiringPi git clone git://git.drogon.net/wiringPi
Zeile 21: Zeile 23:
 make make
 </code> </code>
-  * 3. Schritt + 
-Software starten mit Name des Programms plus Pin nummer, in diesem Fall Pin 4+====Software starten==== 
 +Die [[http://wiringpi.com/pins/|Pin Nummer von wiringPi]], in diesem Fall Pin 4, an dem der Sensor angeschlossen ist wird als Parameter mit übergeben. 
 +<note important>Der Zugriff auf den Sensor erfordert immer Superuser-Rechte!</note>
 <code> <code>
 sudo ./loldht 4 sudo ./loldht 4
Zeile 30: Zeile 34:
  Humidity = 57.60 % Temperature = 20.40 *C  Humidity = 57.60 % Temperature = 20.40 *C
 </code> </code>
-  * 4. Schritt 
-Kanäle in der Middelware einbinden. Hierzu in der Middelware auf Kanal Hinzufügen und anschließend Kanal erstellen klicken. 
-es wird 1 Kanal für die Temperatur und 1 Kanal für die Luftfeucht benötigt. IDs merken! 
  
-  * 5Schritt +====Kanäle der Middelware==== 
-Script erstellen. Die Werte der URL und der ID müssen angepasst werden.+Es wird 1 Kanal für die Temperatur und 1 Kanal für die Luftfeuchtigkeit benötigt. Siehe: [[software:middleware:einrichtung|Einrichtung]]
 + 
 +====Script erstellen====
 <code> <code>
-nano /root/dht22script.sh+nano ~/dht22script.sh
 </code> </code>
-mit folgendem inhalt + 
-<code>+Die IP-Adresse und UUID müssen angepasst werden. 
 +<code bash dht22script.sh>
 #!/bin/bash #!/bin/bash
-WERTE=$( /root/lol_dht22/loldht 4  | grep Humidity)+WERTE=$( /home/pi/lol_dht22/loldht 4  | grep Humidity)
 d=`date +%Y-%m-%d-%H-%M` d=`date +%Y-%m-%d-%H-%M`
-echo "$d ergebnis $WERTE" >> /root/log_vom_dht22.log+#echo "$d ergebnis $WERTE" >> /home/pi/log_vom_dht22.log
 Hum=$(echo $WERTE | awk {'print $3'}) Hum=$(echo $WERTE | awk {'print $3'})
 Temp=$(echo $WERTE | awk {'print $7'}) Temp=$(echo $WERTE | awk {'print $7'})
 if [ "$(echo $Hum| sed 's/\.//g')" -gt "0" ] && [ "$(echo $Hum | sed 's/\.//g')" -lt "10000" ];then if [ "$(echo $Hum| sed 's/\.//g')" -gt "0" ] && [ "$(echo $Hum | sed 's/\.//g')" -lt "10000" ];then
 echo "Humidity: $Hum" echo "Humidity: $Hum"
-wget  -O /dev/null "http://<URL der Middelware>/volkszaehler.org/htdocs/middleware.php/data/<ID vom Sensor>.json?operation=add&value=$Hum"+wget  -O /dev/null "http://<IP Adresse>/middleware.php/data/<ID vom Sensor>.json?operation=add&value=$Hum"
 fi fi
 echo "Temperature: $Temp" echo "Temperature: $Temp"
 if [ "$(echo $Temp | sed 's/\.//g')" -gt "-2000" ] && [ "$(echo $Temp | sed 's/\.//g')" -lt "5000" ];then if [ "$(echo $Temp | sed 's/\.//g')" -gt "-2000" ] && [ "$(echo $Temp | sed 's/\.//g')" -lt "5000" ];then
-wget  -O /dev/null "http://<URL der Middelware>/volkszaehler.org/htdocs/middleware.php/data/<ID vom Sensor>.json?operation=add&value=$Temp"+wget  -O /dev/null "http://<IP Adresse>/middleware.php/data/<ID vom Sensor>.json?operation=add&value=$Temp"
 fi fi
 </code> </code>
 +
 Script ausführbar machen Script ausführbar machen
 <code> <code>
-chmod +x /root/dht22script.sh+chmod +x ~/dht22script.sh
 </code> </code>
  
 Script testen Script testen
 <code> <code>
-/root/dht22script.sh+sudo ~/dht22script.sh
 </code> </code>
-wenn alles funktioniert müssten nun in der Middelware messwerte erscheinen+Wenn alles funktioniertmüssten nun in der Middleware die ersten Messwerte ankommen.
  
-  * 6. Schritt +====cronjob====
-cronjob erstellen+
 <code> <code>
 crontab -e crontab -e
 </code> </code>
-folgende Zeite hinzufügen, in diesem Fall wird das Script 1 mal pro stunde ausgeführt+Folgende Zeile hinzufügen. In diesem Fall wird das Script jede volle Stunde ausgeführt.
 <code> <code>
-      * * *  /root/dht22script.sh+0 * * * *  sudo /home/pi/dht22script.sh
 </code> </code>
 +Das Programm loldht versucht im Sekundentakt bis zu 100 mal, den Sensor auszulesen -- bis es "gute" Daten erhält und diese ausgibt. Wer diesen Sensor also mit sehr schnell veränderlicher Temperatur und/oder Luftfeuchtigkeit per cronjob **jede Minute** auslesen und die Daten in die DB eintragen will, sollte mit einem zweiten Kommandozeilen-Parameter die Anzahl der Versuche z.B. auf 45 oder maximal 50 begrenzen: Sonst kann es sein, dass ein Job noch gar nicht fertig ist und der nächste schon gestartet werden soll. Mehrere Zugriffe gleichzeitig verträgt der Sensor aber nicht und daher wird es mittels eines Lockfiles verhindert.
  
 +Ebenfalls zu beachten ist die "Geschwätzigkeit" von loldht (und auch des Shell-Scripts). Man sollte also seine Logfiles überwachen -- oder in der obigen crontab-Zeile ein
 +<code>
 +> /dev/null 2>&1
 +</code>
 +anhängen. Ob sinnvolle Werte geliefert und erfolgreich eingespeichert werden, sieht man ja auch im Volkszähler :-)
hardware/channels/sensors/dht22.1507153316.txt.gz · Zuletzt geändert: von jau