DHT22-Messwerte in fhem auslesen

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

Vorheriges Thema - Nächstes Thema

fridamme

Vielen Dank für deinen Effort... Und wirklich nur wenn es dich reizt - wie gesagt, habe bereits zwei DHT22 bestellt ;-)

Beckmann

Guten Tag,
ich habe soeben mithilfe dieser Ausführlichen Erklärungen und Diskussionen hier meinen DHT22 an meinem Raspberry ans laufen gebracht, Danke dafür!!  In FHEM werden nun auch korrekt im Minuten-Takt Temperatur und Luftfeuchtigkeit angezeigt. Nun zum Problem: ich habe FHEM mittels Homebridge mit dem Homekit system von Apple verknüpft und kann so auf meinem iPhone unteranderem Temperatur ablesen, scheinbar hat es jedoch damit Probleme dass, die Werte des DHT22 mit Nachkommastelle angegeben werden. Denn beim DHT22 steht immer 0°C. Mit den Wetter-Daten welche ich von Yahoo in mein FHEM eingebunden hatte Funktioniert es wunderbar und der einzige Unterschied den ich feststellen konnte ist eben dass diese Ganzzahlige Messwerte sind. Da ich definitiv noch ein Laie in diesem Bereich bin hoffe ich dass mir jemand sagen kann wie ich nun die Werte des DHT22 auf Ganzzahlige Werte runden kann...   Vielen Dank schonmal und ich bin auf sämtliche Antworten/Lösungsansätze gespannt :)

juergs

#92
ZitatPin 1 wird an die 3,3V Versorgungsspannung angeschlossen

Hier gibt es eine Abhandlung darüber (Aussetzer vs. Betriebsspannung):
hier und hier

ZitatDHT22 VCC über VIN speisen (also +5V)
dann den pull-up analog zu dieser Anleitung realisieren:
http://tansi.info/rp/interfacing5v.html

juergs

Kleine Frage am Rande:

in der RC-Switch-Library wurde eine Arduino-Lib in eine auf dem Raspi ausführbare Datei gewrapped.
https://github.com/sui77/rc-switch
Wäre das mit der DHT22-Lib auch (leicht) möglich?


Bracew

Hallo,

ich habe auch einen DHT22 an meinen RasPi angeschlossen. Ich habe im Logfile je Messung nur eine Zeile. Das Logfile "PiSensorKellerBuero-2016.log" sieht also auszugsweise so aus:
Zitat2016-10-08_14:37:03 SensorKellerBuero temperature: 17.0 humidity 64.5
2016-10-08_14:47:04 SensorKellerBuero temperature: 16.9 humidity 64.8
2016-10-08_14:57:04 SensorKellerBuero temperature: 16.9 humidity 65.0
2016-10-08_15:07:04 SensorKellerBuero temperature: 16.9 humidity 64.9

Die Definition in fhem.cfg habe ich wie folgt angelegt:
Zitatdefine SensorKellerBuero dummy
attr   SensorKellerBuero room Kellerbuero
attr   SensorKellerBuero group Temperatur-Feuchtigkeit
attr   SensorKellerBuero stateFormat T:temperature, H:humidity
#
define TempLogfile FileLog ./log/PiSensorKellerBuero-%Y.log SensorKellerBuero
attr   TempLogfile logtype temp4:window,text
attr   TempLogfile room Kellerbuero
attr   TempLogfile group Temperatur-Feuchtigkeit

JEDOCH sieht die Ausgabe in FHEM auf dem Bildschirm so aus:
ZitatSensorKellerBuero  T:16.9 humidity 65.1, H:humidity

und damit komme ich nun zu meiner Frage:
Wie kann ich es ungefähr so angezeigt bekommen ?
ZitatSensorKellerBuero  Temperatur:16.9°C  Feuchtigkeit: 65.1 %

Danke für Hilfe
Gruß Bracew

FHEM auf Raspberry Pi
für z.B. Lichtsteuerung, Temperaturmessung, Balkonkraftwerk,
Öltankfüllstandsmessung und für Hühnerstall Hühnerklappe

PeMue

ggf. könnte das Attribut stateFormat helfen?

Gruß PeMue
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

Bracew

OK,...(Kratz am Kopf)...aber wie?

ich hatte eher vermutet, dass es ggf. mit "temp4" zusammenhängt (Ich habe keine Ahnung für was temp4 ist).

Wie müsste ich stateFormat ändern?
FHEM auf Raspberry Pi
für z.B. Lichtsteuerung, Temperaturmessung, Balkonkraftwerk,
Öltankfüllstandsmessung und für Hühnerstall Hühnerklappe

LuckyDay

attr   SensorKellerBuero stateFormat T:temperature, H:humidity

das Komma nach temperature ist falsch

zeig mal ein List von deinem Dummy
list SensorKellerBuero
das mann mal sieht welche readings du dort überhaupt hast

Bracew

Danke für den Hinweis. Komma habe ich rausgenommen, Anzeige ist aber gleich.

list SensorKellerBuero gibt folgende Ausgabe:
ZitatInternals:
   NAME       SensorKellerBuero
   NR         526
   STATE      T:17.1 humidity 64.5, H:humidity
   TYPE       dummy
   Readings:
     2016-10-08 15:41:34   temperature     17.1 humidity 64.5
Attributes:
   group      Temperatur-Feuchtigkeit
   room       Kellerbuero
   stateFormat T:temperature H:humidity
FHEM auf Raspberry Pi
für z.B. Lichtsteuerung, Temperaturmessung, Balkonkraftwerk,
Öltankfüllstandsmessung und für Hühnerstall Hühnerklappe

PeMue

Zitat von: Bracew am 08 Oktober 2016, 15:39:02
... ich hatte eher vermutet, dass es ggf. mit "temp4" zusammenhängt (Ich habe keine Ahnung für was temp4 ist).
das könnte die gplot Datei sein, die aus dem Log die 4. Spalte zum Plotten nimmt. Wie kommen bei Dir die einzelnen Readings? Wenn diese nicht korrekt vorhanden sind, hast Du mit stateFormat auch schlechte Karten ;)

Gruß PeMue
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

LuckyDay

Zitat2016-10-08 15:41:34   temperature     17.1 humidity 64.5

du hast nur das eine Reading temperature und kein Reading humidity :)
deswegen tut deine Version nicht

wie wird denn bei dir der Dummy gefüllt?

Bracew

#101
Die gplot Datei ist eine von mir abgewandelte "temp4hum4.gplot" mit Namen "WeBeTempHum.gplot". Das Plotten funktioniert auch ganz OK.

Die Definition in fhem.cfg für das Plotten sieht bei mir so aus:
define SVG_SensorKellerBuero SVG TempLogfile:WeBeTempHum:CURRENT
attr   SVG_SensorKellerBuero label " Temperatur (°C)"::"Feuchtigkeit relativ (%)"::"Temperatur (Rot) Max.=$data{max1}°C, Min.=$data{min1}°C, Letzte=$data{currval1}°C"
attr   SVG_SensorKellerBuero room Kellerbuero
attr   SVG_SensorKellerBuero group Temperatur-Feuchtigkeit


Ich habe noch eine bash-Datei, welche alle 10 Minuten von einem Cron-Job aufgerufen wird:
#!/bin/bash
sudo killall -q loldht > /dev/null 2>&1
cd /opt/lol_dht22
WERTE=$(sudo /opt/lol_dht22/loldht 7 | 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 SensorKellerBuero temperature $Temp humidity $Hum"


Das mit den "Readings" habe ich noch nie verstanden. Entschuldigung.
Deshalb weiß ich auch nicht, wie ich die Frage:
ZitatWie kommen bei Dir die einzelnen Readings?
beantworten soll?

bzw. auf
Zitatdu hast nur das eine Reading temperature und kein Reading humidity
reagieren muss?

Plot sieht übrigens wie angefügte Datei aus.
FHEM auf Raspberry Pi
für z.B. Lichtsteuerung, Temperaturmessung, Balkonkraftwerk,
Öltankfüllstandsmessung und für Hühnerstall Hühnerklappe

LuckyDay

/opt/fhem/fhem.pl 7072 "setreading SensorKellerBuero temperature $Temp humidity $Hum"

hier erzeugst du das eine Reading "temperature"

auf die schnelle geht bestimmt auch

/opt/fhem/fhem.pl 7072 "setreading SensorKellerBuero temperature $Temp"
/opt/fhem/fhem.pl 7072 "setreading SensorKellerBuero humidity $Hum"


dann hättest zwei getrennte Readings, aber deine LOGdatei ändert sich dadurch auch

Bracew

#103
Danke, aber ich möchte gerne nur eine Zeile pro Log-Datei Eintrag haben.

Liegt es vielleicht am fehlenden Doppelpunkt in der Log Datei nach humidity ?
FHEM auf Raspberry Pi
für z.B. Lichtsteuerung, Temperaturmessung, Balkonkraftwerk,
Öltankfüllstandsmessung und für Hühnerstall Hühnerklappe

PeMue

... ist doch kein Problem. Du machst
- ein reading temperature
- ein reading humidity.
Damit hast Du beide Einzelwerte und kannst damit Dein state sauber definieren.
Dann machst Du noch ein reading:
- T: xx H: yy
auf das Du dann mit Deinem FileLog triggerst.
Sprich es müsste dann so heißen:
/opt/fhem/fhem.pl 7072 "setreading SensorKellerBuero temperature $Temp"
/opt/fhem/fhem.pl 7072 "setreading SensorKellerBuero humidity $Hum"
/opt/fhem/fhem.pl 7072 "setreading SensorKellerBuero T: $Temp H: $Hum"


Oder Du nimmst nur die beiden ersten Readings, definierst Dir ein sauberes state und loggst nur den state. Ginge auch  ;)

Gruß PeMue
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser