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?
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
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.
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:
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"}
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
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.
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
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!
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?