Temperatursensort DHT11 an Raspberry GPOI18

Begonnen von hubsi, 01 März 2015, 19:05:47

Vorheriges Thema - Nächstes Thema

hubsi

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

wthiess

#1
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


Raspberry Pi 3; 8xRelais; Aptodec Nano V3.0 Pro; FS1000a; RF-5V; Hama TS33C; 3x Brennerstuhl FunkSteckdosen; 9x Dooya funk Rollo; KWL Systemair VR400; Thermokon Modbusthermostat; diverse China Modbus Thermostate; 1-wire Bus; Telegram; QuickFhem; FhemNative; Firmata; Alexa ......