Temperatursensort DHT11 an Raspberry GPOI18 angeschlossen
Adafruit Software auf Pi installiert,
Test mit Konsole:
sudo ./Adafruit_DHT 11 18
Using pin #18
Data (40): 0x2d 0x0 0xe 0x0 0x3b
Temp = 14 *C, Hum = 45 %
In FHEM einen Dummy angelegt:
define DHTInnen dummy
Eine auslesen.sh auf Pi im Adafruit Verzeichniss erstellt und freigeschaltet.
#!/bin/bash
#Hochkommas angepasst. Siehe Kommentar von Jörg Nießen. Danke!
#Aktuelles Datum mit Uhrzeit einer Variablen zuweisen
datum=$(date +"%d.%m.%y %H:%m")
# Im Skript den Ordner wechseln und die Temperaturdaten auslesen
cd /home/pi/adafruit/Adafruit-Raspberry-Pi-Python-Code-master/Adafruit_DHT_Dri$
WERTE=$(sudo ./Adafruit_DHT 11 18)
TEMP=( $(echo $WERTE | awk '{print $13}'))
LUFT=( $(echo $WERTE | awk '{print $17}'))
/opt/fhem/fhem.pl 7072 setstate DHTInnen 855
/opt/fhem/fhem.pl 7072 "setreading DHTInnen 855"
/opt/fhem/fhem.pl 7072 "setreading DHTInnen humidity $LUFT"
/opt/fhem/fhem.pl 7072 "setstate DHTInnen $LUFT"
/opt/fhem/fhem.pl 7072 "setstate DHTInnen depp"
# Ausgabe semikolonsepariert in Datei
echo "$datum;$TEMP;$LUFT" >>/opt/fhem/temp2.log
Einen Cronjob auf Pi erstellt welcher die auslesen.sh alle Minuten aufruft.
In FHEM änder sich unter DHTInnen dummy leider nicht
Der Cronjob funzt aber weil in der temp2.log die Daten abgelegt werden.
Jetzt versuche ich schon 2 Tage den Sensor über GPOI vom Pi in Fhem einzulesen
aber ich schaffe es einfach nicht.
Was mache ich Falsch??
Gruss
Charly
Ich kann jetzt Temp und Luchtfeuchtichkeit in Fhem von DHT11 einlesen. Deine Scribts habe ich geändert.
Hier meine Scripts.: Pfade und Pin ändern.
In einem Cron ist das Wort sudo nicht erlaubt. das der cron als root ausgeführt wird eh Sinnlos. Ausserdem muss bei der Uhrzeit das %M groß geschrieben sein.
----------------------------------------------------
AdafruitDHT.py
#!/usr/bin/python
# Copyright (c) 2014 Adafruit Industries
# Author: Tony DiCola
import sys
import Adafruit_DHT
sensor_args = { '11': Adafruit_DHT.DHT11,
'22': Adafruit_DHT.DHT22,
'2302': Adafruit_DHT.AM2302 }
if len(sys.argv) == 3 and sys.argv[1] in sensor_args:
sensor = sensor_args[sys.argv[1]]
pin = sys.argv[2]
else:
print 'usage: sudo ./Adafruit_DHT.py [11|22|2302] GPIOpin#'
print 'example: sudo ./Adafruit_DHT.py 2302 4 - Read from an AM2302 connected to GPIO #4'
sys.exit(1)
humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
if humidity is not None and temperature is not None:
print '{0:0.1f} {1:0.1f}'.format(temperature, humidity)
else:
print 'Failed to get reading. Try again!'
sys.exit(1)
----------------------------------------------------
auslesen.sh
#!/bin/bash
datum=$(date +"%y-%m-%d_%H:%M")
WERTE=$(/opt/fhem/py_script/Adafruit_Python_DHT/examples/AdafruitDHT.py 11 4)
TEMP=( $(echo $WERTE | awk '{print $1}'))
LUFT=( $(echo $WERTE | awk '{print $2}'))
/opt/fhem/fhem.pl 7072 "setreading S1_Temp temperature $TEMP"
/opt/fhem/fhem.pl 7072 "setreading S1_Luft humidity $LUFT"
/opt/fhem/fhem.pl 7072 "setstate S1_Temp $TEMP"
/opt/fhem/fhem.pl 7072 "setstate S1_Luft $LUFT"
/opt/fhem/fhem.pl 7072 "setreading S1_Zeit $datum"
/opt/fhem/fhem.pl 7072 "setstate S1_Zeit $datum"
echo "$datum;$TEMP;$LUFT" >>/opt/fhem/temp2.log
-----------------------------------------------------------------
Beide Scripts Rechte zuordnen mit chmod.
cron anlegen:
in der Datei /etc/crontab die Zeile hinzufügen. (alle 5Minuten lüft der Script.)
*/5 * * * * root /opt/fhem/py_script/Adafruit_Python_DHT/examples/auslesen.sh
Fhem.cfg:
define S1_Temp dummy
attr S1_Temp room Haus,Schlafzimmer
define S1_Luft dummy
attr S1_Luft room Haus,Schlafzimmer
define S1_Zeit dummy
attr S1_Zeit room Haus,Schlafzimmer
Als nächstes werde ich versuchen einen Plott anzulegen.
lg
Wolfgang