DHT22-Messwerte in fhem auslesen

Begonnen von zYloriC, 16 Juli 2014, 16:22:01

Vorheriges Thema - Nächstes Thema

klausmrkor

Hallo

Namen im Script und Dummy sind gleich

Temperature und Humidity habe ich auch schon groß und klein versucht.

Ich danke Dir für deine Ausdauer.

Gruß
Klaus



bull1t

#61
Rückmeldung von mir:
Bekomme auch jetzt nur 3 Fragezeichen in FHEM angezeigt.
Frustrierend wenn man so fest hängt.

Nachtrag:
Meine 2 DHT's gehen jetzt. Der Fehler war erwartungsgemäß recht simpel wenn man es denn weiß.
FHEM hat schlichtweg die Berechtigung gefehlt das Skript auszuführen.
###in ssh Konsole eingeben zum Öffnen###
visudo
###am Ende der Datei einfügen###
fhem ALL=(ALL) NOPASSWD: ALL
Und speichern....
Die Fragezeichen sind weg & die Werte sind da... Es geht mir runter wie Öl das das endlich klappt.
Danke an alle beteiligten für Anleitungen und Denkanstöße.
Gruss bull1t

magentouser

Hallo habe grad mal so installiert wie moemoe mit Adafruit_Python_DHT es beschrieben hat, soweit so gut nur sind die werte T: 2662.5 H: 1651.2  irgenwie falsch.. wo kann ich dies ändern  lolware gibt mir Humidity = 54.20 % Temperature = 14.70 *C

magentouser

#63
so hat sich nun erledigt , hab das per loldht hinbekommen...


#!/bin/bash
cd /home/pi/lol_dht22
WERTE=$(sudo ./loldht 0 | grep "Humidity")
Hum=$(echo $WERTE|cut -d " " -f3)
Temp=$(echo $WERTE|cut -d " " -f7)
#echo $WERTE
#echo $HUM
#echo $Temp
/opt/fhem/fhem.pl 7072 "setreading DHTInnen temperature $Temp"
/opt/fhem/fhem.pl 7072 "setreading DHTInnen humidity $Hum"

und im fhem.cfg
define telnetPort telnet 7072 global
define DHTInnen dummy
attr DHTInnen room GPIO4
attr DHTInnen stateFormat T: temperature H: humidity

komplette anleitung in #66

simonela80

Hallo magentouser,

stehe gerade voll auf der Leitung, wo hast du das Skript gespeichert?
Unter /home/pi/lol_dht22, dort sind aber noch einige andere Dateien?

Wo muss ich das nun hineinkopieren, bin nun schon einige Zeit dran


vielen Dank mal für die Hilfe
Peter

magentouser

#65
ja habe das ganze Verzeichniss dort installiert,

die anderen Dateien sind nur für die Installation notwendig..

also
in deinem Home Verzeichniss (möglichst nicht root)

Dann einen clone von wiringPi ziehen und kompilieren:
git clone git://git.drogon.net/wiringPi
cd wiringPi
./build
cd ..

ob wiringPi  funktioniert und Pinbelegung sieht man mit

gpio readall

Als beispiel des ergebnisses
+-----+-----+---------+------+---+---Pi 2---+---+------+---------+-----+-----+
| BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
|     |     |    3.3v |      |   |  1 || 2  |   |      | 5v      |     |     |
|   2 |   8 |   SDA.1 |   IN | 1 |  3 || 4  |   |      | 5V      |     |     |
|   3 |   9 |   SCL.1 |   IN | 1 |  5 || 6  |   |      | 0v      |     |     |
|   4 |   7 | GPIO. 7 |   IN | 1 |  7 || 8  | 1 | ALT0 | TxD     | 15  | 14  |
|     |     |      0v |      |   |  9 || 10 | 1 | ALT0 | RxD     | 16  | 15  |
|  17 |   0 | GPIO. 0 |   IN | 1 | 11 || 12 | 0 | IN   | GPIO. 1 | 1   | 18  |
|  27 |   2 | GPIO. 2 |   IN | 0 | 13 || 14 |   |      | 0v      |     |     |
|  22 |   3 | GPIO. 3 |   IN | 0 | 15 || 16 | 0 | IN   | GPIO. 4 | 4   | 23  |
|     |     |    3.3v |      |   | 17 || 18 | 0 | IN   | GPIO. 5 | 5   | 24  |
|  10 |  12 |    MOSI |   IN | 0 | 19 || 20 |   |      | 0v      |     |     |
|   9 |  13 |    MISO |   IN | 0 | 21 || 22 | 0 | IN   | GPIO. 6 | 6   | 25  |
|  11 |  14 |    SCLK |   IN | 0 | 23 || 24 | 1 | IN   | CE0     | 10  | 8   |
|     |     |      0v |      |   | 25 || 26 | 1 | IN   | CE1     | 11  | 7   |
|   0 |  30 |   SDA.0 |   IN | 1 | 27 || 28 | 1 | IN   | SCL.0   | 31  | 1   |
|   5 |  21 | GPIO.21 |  OUT | 1 | 29 || 30 |   |      | 0v      |     |     |
|   6 |  22 | GPIO.22 |   IN | 1 | 31 || 32 | 0 | IN   | GPIO.26 | 26  | 12  |
|  13 |  23 | GPIO.23 |   IN | 0 | 33 || 34 |   |      | 0v      |     |     |
|  19 |  24 | GPIO.24 |   IN | 0 | 35 || 36 | 0 | IN   | GPIO.27 | 27  | 16  |
|  26 |  25 | GPIO.25 |   IN | 0 | 37 || 38 | 0 | IN   | GPIO.28 | 28  | 20  |
|     |     |      0v |      |   | 39 || 40 | 0 | IN   | GPIO.29 | 29  | 21  |
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
| BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
+-----+-----+---------+------+---+---Pi 2---+---+------+---------+-----+-----+


dannl lol_dht22, dieses Programm liest den eigentlichen Sensor aus.

git clone https://github.com/technion/lol_dht22
cd lol_dht22
./configure
make


zum testen der sensoren  0 ist der wiringPi port wo die sensoren dranhängen

./loldht 0
kommen nun werte

Raspberry Pi wiringPi DHT22 reader
www.lolware.net
Humidity = 50.80 % Temperature = 16.00 *C

cd ..
nano deinscriptname.sh

den wert DHTInnen könnt ihr benennen wie ihr wolt aber keine lehr oder sonderzeichen und muss auch in der fhem.cfg dann gleich sein
#!/bin/bash
cd /home/pi/lol_dht22
WERTE=$(sudo ./loldht 0 | grep "Humidity")
Hum=$(echo $WERTE|cut -d " " -f3)
Temp=$(echo $WERTE|cut -d " " -f7)
echo $WERTE
echo $Hum
echo $Temp
/opt/fhem/fhem.pl 7072 "setreading DHTInnen temperature $Temp"
/opt/fhem/fhem.pl 7072 "setreading DHTInnen humidity $Hum"


hineinkopieren
und speichern..
chmod +x deinscriptname.sh
chomd 777 deinscriptname.sh

und im fhem.cfg folgendes eintragen
define telnetPort telnet 7072 global
define DHTInnen dummy
attr DHTInnen room GPIO4
attr DHTInnen stateFormat T: temperature H: humidity
define FileLog_DHTInnen  FileLog ./log/DHTInnen -%Y.log DHTInnen
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

und fhem neu starten

zum Testen

./deinscriptname.sh
nun sollte folgendes erscheinen (Werte können abweichen)
Humidity = 50.50 % Temperature = 14.10 *C
14.10
50.50


wenn alles funktioniert
nano deinscriptname.sh
echo $WERTE
echo $Hum
echo $Temp

in
#echo $WERTE
#echo $Hum
#echo $Temp

ändern und speichern

danach per cron z.b. aller 5 minuten aufrufen
*/5  *    * * * root /home/pi/deinscriptname.sh > /dev/null 2>&1 &

simonela80

Hallo,

habe nun alles so gemacht wie beschrieben, aber leider funktioniert es immer noch nicht.
Ich bekomme zwar die Werte im raspberry, aber ich bekomme die Werte nicht in fhem.

Im raspberry bekomme ich die Werte wenn ich in den Ordner /home/pi/lol_dht22 gehe und dort den Befehl sudo loldht 0 eingebe.

den cron habe ich in /etc/crontab geschrieben:
1  *    * * *   root    /home/pi/feuchtigkeit.sh >/dev/null 2>&1

in fhem.cfg habe ich dann einen Dummy gemacht, wie beschrieben:
define DHTInnen dummy
attr DHTInnen room Ameisen
attr DHTInnen stateFormat T: temperature H: humidity

aber wie gesagt funktioniert es nicht in fhem, bekomme keine Werte

hoffe mal jemand weiß wo der Fehler liegt und kann mir helfen

Danke
Peter

magentouser

Ändere mal in deiner /home/pi/feuchtigkeit.sh

#echo $WERTE
#echo $Temp

in

echo $WERTE
echo $Temp

als das # davor weg und führe die datei direkt aus also $ ./feuchtigkeit.sh
nun sollten die gleichen werte wie bei loldht 0 erscheinen und auch im fhem Daten da sein.

ich denke mal das root bei dir keine rechte für die Datei hat.. dann mit chmod 777 feuchtigkeit.sh für jeden setzten.

simonela80


OK, das funktioniert nun mit $ ./Feuchtigkeit.sh da bekomme ich Werte in meinen pi

aber es kommt auch noch eine Meldung:
Use of uninitialized value in numeric gt (>) at /opt/fhem/fhem.pl line 434.


und was ist das jetzt?
Wenn ich in die Datei reinschaue hat das mit Client Mode zu tun

hoffe ihr könnt mir noch immer helfen

magentouser

füge mal in der datei
unter
echo $Temp

echo $Hum
hinzu

dann nochmal per hand ausführen

ergebniss sollte wie folgt aussehen

Humidity = 49.70 % Temperature = 14.00 *C
14.00
49.70

wenn dort etwas anderes steht (werte selbst können abweichen) als 14.00 und 49.70 z.b. Buchstaben dann könnte es zu problemen kommen

simonela80

Hallo magentouser

habe es zu der Datei hinzugefügt und es kommt folgendes Ergebnis:
Humidity = 62.80 % Temperature = 23.70 *C
23.70
62.80
Use of uninitialized value in numeric gt (>) at /opt/fhem/fhem.pl line 434.


aber in fhem bekomme ich nur drei Fragezeichen, die Datei habe ich mit
sudo chmod 777 feuchtigkeit.sh
freigegeben.

wo liegt der Fehler? ich weiß einfach nicht mehr weiter

Gruß
Peter

Doublefant

#71
Nachdem ich mich auch an der einbindung eines DHT22 versucht habe, mehrmals mit den Anleitungen weiter vorne erfolglos war und die Adafruit Library auch nicht laufen wollte, habe ich nun mit WiringPi und der Anleitung von Magentouser das ganze ans laufen gebracht.

@Magentouser Vielen dank für eine ausführliche und vor allem einsteigerfreundliche Anleitung!  ;D
Bis zu deinem Beitrag war ich mir nie sicher wo ich welche Datei installieren, erstellen oder editieren muss. Ich bin allerdings auch noch blutiger Anfänger in dem ganzen Thema. ::)

Bei der beschriebenen Fehlermeldung kann ich leider nicht helfen, die kam bei mir nicht.
Dafür hat das Skript bei mir die Fehlermeldung ausgespuckt, dass es keine Berechtigung hat die Werte in die fhem.pl zu schreiben.
Dann habe ich mit "chmod" die Berechtigung der fhem.pl geändert, dann wurden die werte auch in Fhem in den Dummy eingetragen und die ?? sind verschwunden.

*edit*
Ich habe das Script bei mir manuell ausgeführt und Echo aktiviert. Bei mir steht in der Ausgabe nach der "Huminity" Zeile nur 1 Zahlenwert (23.70) , bei dir steht dort noch 62.80
Kann das das Problem sein? Wie ist es bei dir Magetouser?

simonela80




bei mir funktionierts nur im pi, im fhem bekomme ich keine Werte

magentouser

#73
ist in der fhem.cfg
define telnetPort telnet 7072 global
eingetragen?

@Doublefant

WERTE=$(sudo ./loldht 0 | grep "Humidity")
Hum=$(echo $WERTE|cut -d " " -f3)
Temp=$(echo $WERTE|cut -d " " -f7)
echo $WERTE
echo $Temp
echo $Hum

dann sollten
3 Zeilen mit den werten erscheinen

in der 1. fassung vom 11 Januar 2016 & #66  stand echo $Hum noch nicht drin (ist aber auch nicht notwendig sit nur zur kontrolle ob die werte wie gewünscht erscheinen und kann dann wieder mit # davor versehen werden also
#echo $WERTE
#echo $Temp
#echo $Hum


hab mal beitrag #66 geändert

simonela80


so nun funktionierts -- fast
bei mir in der fhem cfg war noch
define telnetPort telnet 7072 global
attr telnetPort SSL 1
attr telnetPort password ........


habe das SSL 1 und Password mal gelöscht und schon hatte ich einen Wert.

Nur leider verändert sich der Wert nicht, also muss was am Cronjob nicht stimmen. Habe in der Datei etc/crontab folgendes eingetragen

*/1*    * * *   root    /home/pi/feuchtigkeit.sh >/dev/null 2>&1


habe auch probiert unter crontab -e das selbe eingetragen (worin liegt denn hier der unterschied zwischen den beiden)

aber leider verändert sich der Wert nicht.
Der Wert ändert sich erst dann wenn ich im pi die Datei wieder von Hand ausführe, dann bekomme ich auch aktuelle Werte im fhem

ich denke nach diesem Job brauche ich mal wieder eine Pause, sehe den Wald vor lauter Bäumen nicht mehr