FHEM Forum

FHEM => Sonstiges => Thema gestartet von: hubsi am 01 März 2015, 19:05:47

Titel: Temperatursensort DHT11 an Raspberry GPOI18
Beitrag von: hubsi am 01 März 2015, 19:05:47
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
Titel: Antw:Temperatursensort DHT11 an Raspberry GPOI18 bei mir 4 gelöst
Beitrag von: wthiess am 14 April 2016, 14:07:23
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