FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: kpwg am 31 Oktober 2013, 13:28:01

Titel: DHT22 am NetIO mit ethersex - Wie auslesen?
Beitrag von: kpwg am 31 Oktober 2013, 13:28:01
Hallo Forum,

mangels Beispiel im Wiki und im restlichen Web kann ich meinen DHT22 am NetIO nicht auslesen. Für 1wire gibte es da recht komplette Lösungsansätze, aber beim DHT komme ich nicht weiter. ECMD und der Sensor funktionieren einwandfrei und lassen sich ansprechen.

Ich habe eine dht22.classdef angelegt:
get temp cmd {"dht temp"}
get humid cmd {"dht humid"}


sowie in der fhem.cfg hinzugefügt:
# Netio im Wohnzimmer mit RFM12-433, LCD, DHT22, 2x Taster, 4x Out

define NETIO_WZ ECMD telnet 192.168.3.81:2701
attr NETIO_WZ classdefs RFM12_433=/opt/fhem/FHEM/rfm12_433.classdef:LCD=/opt/fhem/FHEM/lcd.classdef:DHT=/opt/fhem/FHEM/dht22.classdef:RELAIS=/opt/fhem/FHEM/relais.classdef
attr NETIO_WZ room Wohnzimmer
define Temp_WZ ECMDDevice DHT temp
define Humid_WZ ECMDDevice DHT humid


Damit erhalte ich ein
ZitatERROR:
Temp_WZ error: wrong number of parameters Humid_WZ error: wrong number of parameters
was ich so deute, das ich mich bei der Übergabe der Parameter vertue. Pfad zu den classdefs und Rechte der Dateien passen.

Perspektivisch nutze ich mehrere NetIO(-Eigenbauten) mit je einem DHT22 (es geht nur einer pro Gerät) - dafür reicht doch eine dht22.classdef, oder?

Wie habt ihr das gelöst?
Titel: Antw:DHT22 am NetIO mit ethersex - Wie auslesen?
Beitrag von: Hakter51 am 16 November 2013, 02:05:09
Hi hab es so gelöst. RAW Daten hat nicht geklappt.

# sht humid    Return humidity of SHT sensor
# sht raw    Return raw hex temp (first line) and humidity value (second line) of SHT sensor
# sht temp    Return temperature of SHT sensor

set dhtHUMID cmd {"dht humid"}
set dhtTEMP cmd {"dht temp"}

get dhtHUMID cmd {"dht humid"}
get dhtTEMP cmd {"dht temp"}

Und
# ONEWIRE und adc + dht22

define NETIO_02 ECMD telnet 192.168.11.2:2701
attr NETIO_02 classdefs ONEWIRE=/volumeUSB1/usbshare1-1/FHEM/onewire.classdef:adc=/volumeUSB1/usbshare1-1/FHEM/netio_adc.classdef:DHT22_0=/volumeUSB1/usbshare1-1/FHEM/dht22.classdef
attr NETIO_02 room Interfaces

# Sensor Arbeitszimmer TEMP H
define AZ_DHT22_T ECMDDevice DHT22_0
attr AZ_DHT22_T room Arbeitszimmer

# Sensor Arbeitszimmer TEMP H
define AZ_DHT22_H ECMDDevice DHT22_0
attr AZ_DHT22_H room Arbeitszimmer


Ich würde gerne wissen ob man ohne weiteres noch ein DHT22 anschließen kann. /was natürlich in ethersex programmierte werden muss.

Ps. Wenn einer ein direkten Tipp hat bitte schreiben. Heute werde ich es nicht mehr Googeln und Es ausprobieren. Dies werde ich es kommende Woche.

Aber sicher tun. ;) Gruß und gute Nacht
Titel: Antw:DHT22 am NetIO mit ethersex - Wie auslesen?
Beitrag von: kpwg am 16 November 2013, 08:11:45
Vielen Dank für Deine Info.

Ich habe es mittlerweile so weit hin bekommen, das ich die Daten zumindest sehe.

Dazu steht nun in der dht22.classdef
get klima cmd {"dht temp\ndht humid"}

und in der fhem.cfg steht
define WZ_Klima ECMDDevice DHT22
attr WZ_Klima room Wohnzimmer
define WZ__Klima at +*00:10 get WZ_Klima klima
attr WZ__Klima room hidden

womit sich schon mal die beiden Werte alle 10min automatisch aktualisiert anzeigen lassen.
Weiter bin ich noch nicht.

Was ich aber weiß, das aktuell pro ethersex/netio nur ein einzigster DHT22 bedienbar ist. Die Info stammt vom Entwickler selbst.
Meinen Erweiterungswunsch auf mehrere DHT22 habe ich bereits bekundet. Schließlich ist es noch immer die preiswerteste Möglichkeit, per Draht genaue Werte zu bekommen.
Titel: Antw:DHT22 am NetIO mit ethersex - Wie auslesen?
Beitrag von: kpwg am 20 November 2013, 16:13:43
Ich bin weiter. Und... es funktioniert!

die dht22.classdef sieht nun so aus:
get temp cmd {"dht temp"}
get humid cmd {"dht humid"}


in der fhem.cfg mache ich Folgendes:
define WZ_Klima ECMDDevice DHT22
attr WZ_Klima room Wohnzimmer
attr WZ_Klima stateFormat { sprintf("%s°C %s%", ReadingsVal("WZ_Klima","temp",0), ReadingsVal("WZ_Klima","humid",0)) ;; }
define WZ_TH at +*00:10 get WZ_Klima temp;;get WZ_Klima humid


Mein Problem war, das ich zwar die gemessenen Werte in den readings stehen hatte, aber nix damit anzufangen wusste. Der Schlüssel zum Ergebnis (in STATE Temperatur und Feuchte mit Maßeinheit zu sehen) heißt stateFormat und ReadingsVal. Zusammen mit sprintf sehr vielseitig...

Und so sieht das Ergebnis aus:
Titel: Antw:DHT22 am NetIO mit ethersex - Wie auslesen?
Beitrag von: Hakter51 am 22 November 2013, 15:46:43
Hallo,

Bei mir klappt das stateFormat nicht. Ab welcher FHEM Version ist es implementiert? Hab 5.3
Bekomme folgende Fehlermeldung:
AZ_DHT22: unknown attribute stateFormat, choose one of room group comment alias eventMap loglevel 0,1,2,3,4,5 icon referenz schwellwert sensor status webCmd or use attr global userattr stateFormat


# . NET_IO
define NETIO_02 ECMD telnet 192.168.11.2:2701
attr NETIO_02 classdefs DHT22_0=/volumeUSB1/usbshare1-1/FHEM/dht22.classdef
attr NETIO_02 room Interfaces

# Sensor Arbeitszimmer TEMP H
define AZ_DHT22 ECMDDevice DHT22_0
attr AZ_DHT22 room Arbeitszimmer
attr AZ_DHT22 stateFormat { sprintf("%s°C %s%", ReadingsVal("AZ_DHT22","dhtTEMP",0), ReadingsVal("AZ_DHT22","dhtHUMID",0)) ;; }

define 1Wire_Temp_LOG_AZ at +*00:09:00 set AZ_DHT22 dhtHUMID;; get AZ_DHT22 dhtTEMP

define Log_TemperaturAZ FileLog /volumeUSB1/usbshare1-1/FHEM/TemperaturAZ-%Y.log AZ_DHT22:(dhtHUMID).*|AZ_DHT22:(dhtTEMP).*
attr Log_TemperaturAZ room Arbeitszimmer

define weblink_2TemperaturAZ weblink fileplot Log_TemperaturAZ:PLOTtempAZ:CURRENT
attr weblink_2TemperaturAZ label "Temperatur AZ :  _$data{min1}°C, ¯$data{max1}°C, Last $data{currval1}°C"
attr weblink_2TemperaturAZ plotsize 800,200
attr weblink_2TemperaturAZ room Arbeitszimmer


Hat einer eine Idee warum ich diese Fehlermeldung bekomme?

__________________________________________________
ps. Meine classdef.  dorr habe ich noch set eingefügt um den set Button zu erhalten. Leider klapt das auslesen der RAW Werte nicht. Vielleicht hat noch einer das gleche Problem. (..mir reichen Temp und Humid)


# sht humid     Return humidity of SHT sensor
# sht raw     Return raw hex temp (first line) and humidity value (second line) of SHT sensor
# sht temp     Return temperature of SHT sensor

set dhtHUMID cmd {"dht humid"}
set dhtTEMP cmd {"dht temp"}

get dhtHUMID cmd {"dht humid"}
get dhtTEMP cmd {"dht temp"}

Titel: Antw:DHT22 am NetIO mit ethersex - Wie auslesen?
Beitrag von: Joachim am 22 November 2013, 17:22:53
Moin Hakter51,

ZitatBei mir klappt das stateFormat nicht. Ab welcher FHEM Version ist es implementiert? Hab 5.3

Mach ein Update, aktuell ist 5.5

Gruß Joachim
Titel: Antw:DHT22 am NetIO mit ethersex - Wie auslesen?
Beitrag von: Hakter51 am 22 November 2013, 23:52:00
MOIN MOIN Joachim,

Ich hab eine Synology DS213+ das ist nicht so einfach. Wenn das jemand schonmal gemach hat würde ich mich sehr freuen wenn er mir helfen würde oder tips geben könnte.


Titel: Antw:DHT22 am NetIO mit ethersex - Wie auslesen?
Beitrag von: Puschel74 am 23 November 2013, 00:06:28
Hallo,

nach Eingabe von ds213+ ins Suchfeld hat mir das Forum 5 Seiten angezeigt.

Alle schon durchgeschaut?
Ich hab mir die Beiträge jetzt nicht explizit alle durchgelesen aber der älteste ist vom Dezember 2012.
Vielleicht ist ja was brauchbares dabei für dich.

Grüße
Titel: Antw:DHT22 am NetIO mit ethersex - Wie auslesen?
Beitrag von: Joachim am 24 November 2013, 12:38:33
Kommst Du an den fhem-Ordner heran?

Wenn ja, sichern, danach Inhalte austauschen, ggf. Pfade anpassen, und mit glück läuft die 5.5, wenn nicht, Sicherung zurückspielen.

Gruß Joachim

PS: Natürlich auf eigene Gefahr!
Titel: Antw:DHT22 am NetIO mit ethersex - Wie auslesen?
Beitrag von: kpwg am 25 November 2013, 20:04:15
Ich übernehme mal wieder  ::)

So richtig gefällig ist die Sache bei mir noch nicht. Die Werte kommen zwar passend und funktionell an, jedoch habe ich im Logfile noch immer einen Zeilenumbruch. Mittlerweile sieht das so aus:
2013.11.25 19:41:03 3: WZ_TH: T 20.6
H 41.4


Ziel wäre aber
2013.11.25 19:41:03 3: WZ_TH: T 20.6 H 41.4

Ich vermute, bereits in der classdef per postproc eingreifen zu müssen. Hat jemand eine Idee?