HM-Sen-RD-O Funk-Regensensor

Aus FHEMWiki
Version vom 20. September 2015, 21:11 Uhr von Fnord (Diskussion | Beiträge) (Aktualisierung Bausatz)

Allgemeines

Beim HM-Sen-RD-O (RD-O) handelt es sich um einen Funk-Regensensor. Stand 26.06.2013 war er noch nicht lieferbar, ab August 2013 waren die Fertiggeräte verfügbar und seit Dezember 2013 sind auch die Bausätze lieferbar.

Er erkennt beginnenden Regen und kann über mit ihm gepeerte Aktoren Reaktionen veranlassen. Zudem verfügt er über eine eingebaute Heizung sowie eine optische Anzeige (grüne LED) direkt im Gehäuse, die durch Aufleuchten die Regenerkennung darstellt. Er wird mittels einer externen Spannungsversorgung (DC 7,5 bis 30 V) betrieben (nicht im Lieferumfang).

Die eingebaute Heizung in der Sensorfläche soll Fehlmeldungen (Betauung, z.B. durch Nebel, bzw. Vereisung) vermeiden helfen.

Technische Daten

  • Aktuelle Firmware: 1.4 (Stand Dezember 2013)
  • Versorgungsspannung: 7,5–30 V DC
  • Max. Stromaufnahme: 250 mA
  • IP-Schutzart: IP44
  • Leistungsaufnahme Ruhebetrieb: 0,4 W (ohne Sensorheizung)
  • Leistungsaufnahme Sensorheizung: ca. 1 W
  • Abmessungen (B x H x T): 80 x 82 x 55 mm
  • Gewicht: 286 gr.

Man kann den RD-O auch als Bausatz bestellen, dann ist er ein paar Euro preiswerter. Der Zusammenbau erfordert keine Profi-Lötkenntnisse, da nur ein paar bedrahtete Bauteile (Elko, LEDs, Transceiver-Modul usw.) einzulöten sind. Der Sensor ist bereits verklebt und angeschlossen.

Betrieb mit FHEM

Mit Stand Dezember 2013 wird der RD-O von Fhem unterstützt (Ausnahme siehe "Probleme"). Voraussetzung ist ein halbwegs aktueller Fhem-Versionsstand, da es sich um ein relativ neues HomeMatic-Gerät handelt. Zunächst ist der RD-O mit Fhem zu pairen. Nun kann man das Device umbenennen ("renamen"). Die Kanäle (siehe unten) wurden hier dabei (leider) nicht automatisch mitumbenannt, dies kann aber durch entsprechende rename-Befehle von Hand nachgeholt werden. Danach ein save config und rereadcfg und weiter ...

Geräte-Kanäle (Device-channels)

Der RD-O hat 2 Kanäle zusätzlich zum "Channel 00", der das eigentliche Device darstellt.

  • Channel 01, dieser enthält alles um die eigentliche Erkennung ob es gerade regnet oder nicht
  • Channel 02, über diesen kann das Verhalten der internen Heizung gesteuert werden

Channel 00

Die Register:

list:        register | range              | peer     | description
  0: localResDis      |     literal        |          | local reset disable options:on,off
  0: pairCentral      |   0 to 16777215    |          | pairing to central
  0: transmDevTryMax  |   1 to 10          |          | max message re-transmit

Channel 01

Die Register:

list:        register | range              | peer     | description
  1: condTxThrhHi     |   0 to 3000mV      |          | threshold high condition
  1: eventFilterTimeB |   5 to 7620s       |          | event filter time
  1: evntRelFltTime   |   1 to 7620s       |          | event filter release time 
  1: highHoldTime     |  60 to 7620s       |          | hold time on high state
  1: transmitTryMax   |   1 to 10          |          | max message re-transmit
  4: expectAES        |     literal        | required | expect AES options:on,off
  4: peerNeedsBurst   |     literal        | required | peer expects burst options:on,off

Channel 02

Z. Zt. sind keine Register verfügbar.

fhem.cfg

Bei eingeschaltetem autocreate werden die erforderlichen Definitionen zum erkannten Sen-RD-O überwiegend selbstständig angelernt:

define Regensensor CUL_HM 20CE4B
attr Regensensor .devInfo 040101
attr Regensensor .stc 70
attr Regensensor autoReadReg 4_reqStatus
attr Regensensor firmware 1.4
attr Regensensor model HM-Sen-RD-O
attr Regensensor peerIDs 
attr Regensensor room CUL_HM
attr Regensensor serialNr KEQ0117756
attr Regensensor subType sensRain
attr Regensensor webCmd getConfig
define FileLog_Regensensor FileLog /opt/fhem/log/Regensensor-%Y-%m.log Regensensor
attr FileLog_Regensensor logtype text
attr FileLog_Regensensor room CUL_HM
 # Channel 01 => 20CE4B01 
define Regensensor_EsRegnet CUL_HM 20CE4B01
attr Regensensor_EsRegnet expert 1
attr Regensensor_EsRegnet model HM-Sen-RD-O
attr Regensensor_EsRegnet peerIDs 00000000,
attr Regensensor_EsRegnet room CUL_HM
define FileLog_Regensensor_EsRegnet FileLog /opt/fhem/log/Regensensor_EsRegnet-%Y-%m.log Regensensor_EsRegnet
attr FileLog_Regensensor_EsRegnet logtype text
attr FileLog_Regensensor_EsRegnet room CUL_HM
define SVG_FileLog_Regensensor_EsRegnet SVG FileLog_Regensensor_EsRegnet:Regensensor:CURRENT
attr SVG_FileLog_Regensensor_EsRegnet room CUL_HM
# Channel 02 => 20CE4B02
define Regensensor_Heizung CUL_HM 20CE4B02
attr Regensensor_Heizung expert 1
attr Regensensor_Heizung model HM-Sen-RD-O
attr Regensensor_Heizung peerIDs 
attr Regensensor_Heizung room CUL_HM
define FileLog_Regensensor_Heizung FileLog /opt/fhem/log/Regensensor_Heizung-%Y-%m.log Regensensor_Heizung
attr FileLog_Regensensor_Heizung logtype text
attr FileLog_Regensensor_Heizung room CUL_HM

Steuerung / Betrieb

Über die Veränderung der entsprechenden Register kann man das Verhalten des RD-O seinen eigenen Bedürfnissen anpassen. So läuft z.B. ab Werk die Heizung nach Anschluss der Spannungsversorgung ständig mit. Nach der Verbindung mit einer Zentrale (hier Fhem) kann man dies steuern. Mittels (bitte auf den Channel 02)

set Regensensor_Heizung off

wird die Heizung aus- und durch

set Regensensor_Heizung on

wieder eingeschaltet. Evtl. sollte man die Heizung in Abhängigkeit von Temperatur und/oder relativer Luftfeuchte ein- bzw. ausschalten (Stromverbrauch; Materialschonung, denn die Sensorfläche wird merklich warm). Ein Einschalten bei erkanntem Regen ist sicher ebenfalls sinnvoll, denn die Heizung sorgt für ein schnelleres Abtrocknen der Sensorfläche und somit einer zeitnahen Regenende-Erkennung.

Hierzu könnte man folgendes in Fhem definieren:

define DoIf_RegenSensorHzgOnOff DOIF ([Aussen.ThermoHygro:temperature]<5 or [Regensensor_EsRegnet] eq "rain") (set Regensensor_Heizung on) DOELSEIF ([Aussen.ThermoHygro:temperature]>6 and [Regensensor_EsRegnet] eq "dry") (set Regensensor_Heizung  off)
attr DoIf_RegenSensorHzgOnOff room Wetter

Die Sensor-Heizung wird damit bei Temperaturen unter 5 °C oder bei erkanntem Regen eingeschaltet. Die Abschaltung der Heizung erfolgt, sobald die Temperatur über 6 °C beträgt und es trocken ist.

Der RD-O reagiert bereits bei der Berührung der Sensorfläche mit einem Finger mit der Meldung "Es regnet". Dies erfolgt auch, sobald man einen kleinen Bereich mit einem Tropfen Wasser befeuchtet. Die Meldung bleibt (ab Werk) einige Minuten erhalten. Das Ansprech- und Rücksetzverhalten kann über die Veränderung der entsprechenden Register angepasst werden.

Log-Daten

Auszüge aus den Logs unmittelbar nach Anschluss der Spannungsversorgung und dem ersten Drücken der Anlerntaste am RD-O:

Event monitor

<Datum> <Zeit> Global global UNDEFINED CUL_HM_HM_Sen_RD_O_20EC4B CUL_HM 20EC4B A1A02840020EC4B0000001400A74B45513031313730363770040101
<Datum> <Zeit> Global global DEFINED CUL_HM_HM_Sen_RD_O_20EC4B
<Datum> <Zeit> Global global DEFINED FileLog_CUL_HM_HM_Sen_RD_O_20EC4B
<Datum> <Zeit> Global global SAVE
<Datum> <Zeit> Global global UNDEFINED CUL_HM_HM_Sen_RD_O_20EC4B_Rain CUL_HM 20EC4B01
<Datum> <Zeit> Global global DEFINED CUL_HM_HM_Sen_RD_O_20EC4B_Rain
<Datum> <Zeit> Global global DEFINED FileLog_CUL_HM_HM_Sen_RD_O_20EC4B_Rain
<Datum> <Zeit> Global global SAVE
<Datum> <Zeit> Global global UNDEFINED CUL_HM_HM_Sen_RD_O_20EC4B_Heating CUL_HM 20EC4B02
<Datum> <Zeit> Global global DEFINED CUL_HM_HM_Sen_RD_O_20EC4B_Heating
<Datum> <Zeit> Global global DEFINED FileLog_CUL_HM_HM_Sen_RD_O_20EC4B_Heating
<Datum> <Zeit> Global global SAVE
... und kurz darauf ...
<Datum> <Zeit> CUL_HM CUL_HM_HM_Sen_RD_O_20EC4B_Rain timedOn: off
<Datum> <Zeit> CUL_HM CUL_HM_HM_Sen_RD_O_20EC4B_Rain dry

Fhem-Log

<Datum> <Zeit> 3: CUL_HM Unknown device CUL_HM_HM_Sen_RD_O_20EC4B, please define it
<Datum> <Zeit> 2: autocreate: define CUL_HM_HM_Sen_RD_O_20EC4B CUL_HM 20EC4B A1A02840020EC4B0000001400A74B45513031313730363770040101
<Datum> <Zeit> 2: autocreate: define FileLog_CUL_HM_HM_Sen_RD_O_20EC4B FileLog /opt/fhem/log/CUL_HM_HM_Sen_RD_O_20EC4B-%Y-%m.log CUL_HM_HM_Sen_RD_O_20EC4B
<Datum> <Zeit> 2: autocreate: define CUL_HM_HM_Sen_RD_O_20EC4B_Rain CUL_HM 20EC4B01
<Datum> <Zeit> 2: autocreate: define FileLog_CUL_HM_HM_Sen_RD_O_20EC4B_Rain FileLog /opt/fhem/log/CUL_HM_HM_Sen_RD_O_20EC4B_Rain-%Y-%m.log CUL_HM_HM_Sen_RD_O_20EC4B_Rain
<Datum> <Zeit> 2: autocreate: define CUL_HM_HM_Sen_RD_O_20EC4B_Heating CUL_HM 20EC4B02
<Datum> <Zeit> 2: autocreate: define FileLog_CUL_HM_HM_Sen_RD_O_20EC4B_Heating FileLog /opt/fhem/log/CUL_HM_HM_Sen_RD_O_20EC4B_Heating-%Y-%m.log CUL_HM_HM_Sen_RD_O_20EC4B_Heating
<Datum> <Zeit> 2: CUL_HM set CUL_HM_HM_Sen_RD_O_20EC4B getConfig

Device-Logs

Channel 01 Log (Es regnet)

<Datum> <Zeit> Regensensor_EsRegnet timedOn: off
<Datum> <Zeit> Regensensor_EsRegnet dry
<Datum> <Zeit> Regensensor_EsRegnet timedOn: off
<Datum> <Zeit> Regensensor_EsRegnet rain
<Datum> <Zeit> Regensensor_EsRegnet timedOn: off
<Datum> <Zeit> Regensensor_EsRegnet dry
<Datum> <Zeit> Regensensor_EsRegnet timedOn: off
<Datum> <Zeit> Regensensor_EsRegnet rain
<Datum> <Zeit> Regensensor_EsRegnet timedOn: off
<Datum> <Zeit> Regensensor_EsRegnet dry

Sie sehen, dass der Sen-RD-O Zustandsänderungen genau 1 Mal meldet und danach nicht wiederholt.

Channel 02 Log (Heizung an oder aus)

<Datum> <Zeit> Regensensor_Heizung timedOn: off
<Datum> <Zeit> Regensensor_Heizung on
<Datum> <Zeit> Regensensor_Heizung set_off
<Datum> <Zeit> Regensensor_Heizung timedOn: off
<Datum> <Zeit> Regensensor_Heizung off
<Datum> <Zeit> Regensensor_Heizung set_on
<Datum> <Zeit> Regensensor_Heizung timedOn: off
<Datum> <Zeit> Regensensor_Heizung on

Plot / Grafische Darstellung

Der RD-O meldet im Channel_01-Log die Zustände "rain" (für: es regnet) und "dry" (für: es regnet nicht). Diese Werte kann man in Fhem-Plots natürlich nicht so auswerten wie numerische Angaben. Aber auch dafür bietet Fhem eine Lösung. Hier zunächst der Plot:

Plot des HM-Sen-RD-O

Und hier die dazugehörige Plot-Datei:

set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title 'Regnet es: Ja/Nein'
set ytics ("Trocken" 0, "Regen" 1)
set y2tics ("Trocken" 0, "Regen" 1)
set grid
set ylabel ""
set y2label ""
set yrange [-0.1:1.1]
set y2range [-0.1:1.1]

#FileLog 3::0:$fld[2]=~"rain"?1:0

plot "<IN>" using 1:2 axes x1y2 title 'Regnet es?' ls l0 lw 1 with steps

Dieser Plot hat noch einen Mangel. Um kurz vor 20:00 Uhr hat es erneut angefangen zu regnen und obwohl es jetzt nach 22:00 Uhr ist, deutet der Plot an, dass es momentan "nicht regnet". An einer plausibleren Darstellung wird gearbeitet.

Probleme

getConfig

Anfangs (Mitte Dezember 2013) gab es noch ein Problem mit dem getConfig. Dieser Befehl wurde quittiert mit den Meldungen:

protState	CMDs_done_Errors:1
...
state		RESPONSE TIMEOUT:RegisterRead

Andere Befehle (wie oben z.B. Heizung an/aus) wurden dagegen umgehend erfolgreich abgearbeitet.

Dieses Problem ist mittlerweile gelöst, so dass der RD-O voll genutzt werden kann.

Erst Minuten nach Regenende meldet der RD-O "dry" (also kein Regen mehr)

Das liegt zum einen daran, dass der auf der Sensorfläche befindliche Niederschlag erst einmal durch die interne Sensorheizung "verdampft" werden muss. Zum anderen ist der RD-O so eingestellt, dass er erst 5 Minuten nach Abtrocknen der Sensorfläche wieder den Zustand "dry" an Fhem meldet. Zuständig dafür ist das RD-O-Register highHoldTime im Channel 01, das werksseitig auf 300 Sekunden (also 5 Minuten) eingestellt ist. Dieses Register kann man aber auf einen Wert von (minimal, kürzer geht nicht) z.B. 60 Sekunden setzen:

set Regensensor_EsRegnet regSet highHoldTime 60

Korrosion / eindringendes Wasser

In den Käuferbewertungen und im Kundenforum von ELV gibt es Meldungen, dass möglicherweise die Sensorfläche "korrodiert" bzw. der RD-O mit Wasser "voll läuft". Diese Meldungen scheinen sich allerdings auf eine frühere Version des ARR-bausatzes zu beziehen, bei der man die Sensorfläche noch selbst in den Gehäusedeckel (wasserdicht) einkleben musste. Dieses Einkleben war bei dem Bausatz von Mitte Dezember 2013 nicht mehr erforderlich. Sobald dazu Erfahrungswerte vorliegen, werden diese hier eingetragen.

Links