Hallo,
ich habe mich nach dem folgenden Forum durchgearbeitet und bekomme auf dem Pi wenn ich folgenden Befehl eintrage auch die Werte angezeigt
https://forum.fhem.de/index.php/topic,25413.msg184030.html#msg184030 (https://forum.fhem.de/index.php/topic,25413.msg184030.html#msg184030)
pi@raspberrypi:~/lol_dht22 $ sudo ./loldht 7
Raspberry Pi wiringPi DHT22 reader
www.lolware.net
Humidity = 75.00 % Temperature = 21.20 *C
Zudem habe ich ein Script erstellt, welches mir die Werte auslesen soll. Dies will ich dann regelmäßig aufrufen:
#!/bin/bash
cd /home/pi/lol_dht22
WERTE=$(sudo ./loldht 7 | grep "Humidity")
Hum=$(echo $WERTE|cut -d " " -f3)
Temp=$(echo $WERTE|cut -d " " -f7)
echo $WERTE
echo $Hum
echo $Temp
sudo /opt/fhem/fhem.pl 7072 "setreading DHTInnen temperature $Temp"
sudo /opt/fhem/fhem.pl 7072 "setreading DHTInnen humidity $Hum"
Dies liegt im Ordner lol_dht22 mit dem Namen Temp_Wohnzimmer.sh
Des Weitern habe ich unter
/usr/local/sbin eine Datei fhem-dht angelegt mit folgenden Inhalt:
cat << 'EOF' > /usr/local/sbin/fhem-dht
#!/usr/bin/python
import Adafruit_DHT
import socket
### CONFIG ###
# fhem's telnet port
host = 'localhost'
port = 7072
sensors = [
{
'name': 'Dach.DHT22',
'type': Adafruit_DHT.DHT22,
'pin': 4
},
{
'name': 'Wohnzimmer.DHT22',
'type': Adafruit_DHT.DHT22,
'pin': 17
},
]
# retry in case of error
retries = 15
delay = 2
## config reference:
# sensors = [
# {
# 'name': 'DHT22',
# 'type': Adafruit_DHT.DHT22,
# 'pin': 4
# },
# {
# 'name': 'DHT11',
# 'type': Adafruit_DHT.DHT11,
# 'pin': 4
# },
# {
# 'name': 'AM2302',
# 'type': Adafruit_DHT.AM2302,
# 'pin': 4
# },
# ]
### END CONFIG ###
def netcat(hostname, port, content):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((hostname, port))
s.sendall(content)
s.shutdown(socket.SHUT_WR)
while 1:
data = s.recv(1024)
if data == "":
break
if data:
print "Received:", repr(data)
s.close()
# empty netcat string
s = "";
for sensor in sensors:
humidity, temperature = Adafruit_DHT.read_retry(sensor['type'], sensor['pin'], retries, delay)
if humidity is not None and temperature is not None:
s += 'setreading {0} Temperature {1:0.1f}\n'.format(sensor['name'], temperature)
s += 'setreading {0} Humidity {1:0.1f}\n'.format(sensor['name'], humidity)
s += 'setreading {0} Error 0\n'.format(sensor['name'])
else:
s += 'setreading {0} Error 1\n'.format(sensor['name'])
s += "quit"
netcat(host, port, s)
EOF
chmod +x /usr/local/sbin/fhem-dht
Anschließend habe ich noch foldendes Script angelegt
cat <<'EOF' >> /etc/cron.d/fhem-dht
# read dht22 values every 5mins and feed into fhem
SHELL=/bin/sh
# m h dom mon dow user command
*/5 * * * * root /usr/local/sbin/fhem-dht
EOF
Nun stellt sich mir die Frage welches Script ruft welches Script auf, da ja kein Script auf Temp_Wohnzimmer.sh verweist.
- /etc/cron.d/fhem-dht
- /usr/local/sbin/fhem-dht
- /lol_dht22/Temp_Wohnzimmer.sh
Könnt ihr mir helfen, welche Reihenfolge ich einhalten muss und wie ich die Werte in FHEM angezeigt bekomme?
Kann ich die Scripte irgendwie mit Putty einzeln Testen, um zu schauen was funktioniert und was nicht?
In FHEM habe ich den Sensor so angemeldet
define DHTInnen dummy
attr DHTInnen room GPIO4
define FileLog_DHTInnen FileLog ./log/DHTInnen-%Y-%m.log DHTInnen
attr DHTInnen stateFormat T: temperature H: humidity
attr FileLog_DHTInnen logtype logtype temp4:Tempt,text
attr FileLog_DHTInnen room Logfiles
define SVG_DHTInnen SVG FileLog_DHTInnen:SVG_DHTInnen:CURRENT
attr SVG_DHTInnen room Plots
Gruß hardtacker