<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>http://wiki.fhem.de/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Burny4600</id>
	<title>FHEMWiki - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.fhem.de/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Burny4600"/>
	<link rel="alternate" type="text/html" href="http://wiki.fhem.de/wiki/Spezial:Beitr%C3%A4ge/Burny4600"/>
	<updated>2026-04-30T16:00:36Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=DOIF/do_always_Alternative_am_Beispiel_einer_Batteriewarnung_via_Telegram&amp;diff=35982</id>
		<title>DOIF/do always Alternative am Beispiel einer Batteriewarnung via Telegram</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=DOIF/do_always_Alternative_am_Beispiel_einer_Batteriewarnung_via_Telegram&amp;diff=35982"/>
		<updated>2021-08-31T10:31:38Z</updated>

		<summary type="html">&lt;p&gt;Burny4600: Rechtschreibung&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DOIF führt die Anweisungen einer Bedingung nur 1x aus. Das kann durch Setzen des Attributes &#039;do&#039; mit dem Wert &#039;always&#039; geändert werden, doch manchmal ist eine Mix aus beiden Situationen interessant, wie dieses Beispiel zeigen soll.&lt;br /&gt;
==Alarm bei Battery low eines Homematic-Gerätes==&lt;br /&gt;
Würde ohne das Attribut do always gearbeitet werden, so würde das [[DOIF]] genau eine Meldung verschicken. Selbst, wenn die Batterie getauscht wurde und eine eine andere Batterie zur Neige geht, käme keine Meldung mehr, da [[DOIF]] noch auf ein &#039;Rücksetzen&#039; der Meldung wartet. Das [[Attribut]] do always würde jedoch wiederum bei jedem [[Event]] eine Meldung erzeugen (z.B. alle 30 Min.), was doch etwas zu sehr nerven könnte. Das Ziel ist es also, 1x täglich die Meldung zu versenden.&lt;br /&gt;
===Beschreibung===&lt;br /&gt;
Mittels einer strikten Namensvergabe der [[Gerät|Devices]] kann man sehr einfach alle [[HomeMatic]]-Geräte greifen. Hierbei ist es auch erst einmal unerheblich, ob sie eine Batterie haben, denn netzbetriebene Geräte werden nie das passende [[Event]] schicken. Im Beispiel wird nun davon ausgegangen, dass alle [[HomeMatic]]-Geräte mit dem Namenspräfix HM_ beginnen.&amp;lt;br&amp;gt;&lt;br /&gt;
Der [[Regulärer Ausdruck|reguläre Ausdruck]] sichert alle Events, unabhängig davon, ob der Battery groß oder klein geschrieben ist, oder auch Batterie dort steht.&amp;lt;br&amp;gt;&lt;br /&gt;
Zum täglichen &#039;Rücksetzen&#039; des [[DOIF]] wird eine 2., zeitbasierte Bedingung definiert, welche das [[DOIF]] von state cmd1 (nach einer ausgelösten Warnung) auf cmd2 wechseln lässt. Somit führt das nächste [[Event]] wieder zu einer Warnung.&amp;lt;br&amp;gt;&lt;br /&gt;
===Definition===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define di_HM_Batt_Warn DOIF ([&amp;quot;HM_.*:[Bb]atte.*[Ll]ow&amp;quot;]) (set telegramBot message @xxxxxxx Batterie eines Homematic-Gerätes leer!)&lt;br /&gt;
     DOELSEIF ([10:00])&lt;br /&gt;
attr di_HM_Batt_Warn room CUL_HM&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
[[Kategorie:Code Snippets]]&lt;/div&gt;</summary>
		<author><name>Burny4600</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-Sen-RD-O_Funk-Regensensor&amp;diff=33457</id>
		<title>HM-Sen-RD-O Funk-Regensensor</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-Sen-RD-O_Funk-Regensensor&amp;diff=33457"/>
		<updated>2020-07-05T14:27:10Z</updated>

		<summary type="html">&lt;p&gt;Burny4600: /* Konfiguration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Allgemeines ==&lt;br /&gt;
Der HM-Sen-RD-O (RD-O) ist ein 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.&lt;br /&gt;
&lt;br /&gt;
Er erkennt beginnenden Regen und kann über mit ihm [[Peering (HomeMatic)|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&amp;amp;nbsp;V; nicht im Lieferumfang) betrieben.&lt;br /&gt;
&lt;br /&gt;
Die eingebaute Heizung in der Sensorfläche soll Fehlmeldungen (Betauung, z.B. durch Nebel, bzw. Vereisung) vermeiden helfen.&lt;br /&gt;
&lt;br /&gt;
== Technische Daten ==&lt;br /&gt;
* Aktuelle Firmware: 1.4 (Stand Dezember 2013)&lt;br /&gt;
* Versorgungsspannung: 7,5–30 V DC&lt;br /&gt;
* Max. Stromaufnahme: 250 mA&lt;br /&gt;
* IP-Schutzart: IP44&lt;br /&gt;
* Leistungsaufnahme Ruhebetrieb: 0,4 W (ohne Sensorheizung)&lt;br /&gt;
* Leistungsaufnahme Sensorheizung: ca. 1 W&lt;br /&gt;
* Abmessungen (B x H x T): 80 x 82 x 55 mm&lt;br /&gt;
* Gewicht: 286 gr.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Betrieb mit FHEM ==&lt;br /&gt;
Mit Stand Dezember 2013 wird der RD-O von FHEM unterstützt (Ausnahme siehe &amp;quot;Probleme&amp;quot;). 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 p&#039;&#039;&#039;ai&#039;&#039;&#039;ren. Nun kann man das Device [[rename|umbenennen]]. Die Kanäle (siehe unten) werden dabei (leider) nicht automatisch mit umbenannt, dies kann aber durch entsprechende &#039;&#039;rename&#039;&#039;-Befehle von Hand nachgeholt werden (ggf. vorher prüfen, ob das Gerät ein &#039;&#039;set ... deviceRename ...&#039;&#039; anbietet; damit würden auch die Kanäle umbenannt). Danach ein &#039;&#039;save config&#039;&#039; und &#039;&#039;rereadcfg&#039;&#039; und weiter ...&lt;br /&gt;
&lt;br /&gt;
=== Geräte-Kanäle (Device-channels) ===&lt;br /&gt;
Der RD-O hat 2 Kanäle zusätzlich zum &amp;quot;Channel 00&amp;quot;, der das eigentliche Device darstellt.&lt;br /&gt;
* Channel 01, dieser enthält alles für die eigentliche Erkennung, ob es gerade regnet oder nicht&lt;br /&gt;
* Channel 02, über diesen kann das Verhalten der internen Heizung gesteuert werden&lt;br /&gt;
&lt;br /&gt;
==== Channel 00 ====&lt;br /&gt;
Die Register:&lt;br /&gt;
 list:        register | range              | peer     | description&lt;br /&gt;
   0: localResDis      |     literal        |          | local reset disable options:on,off&lt;br /&gt;
   0: pairCentral      |   0 to 16777215    |          | pairing to central&lt;br /&gt;
   0: transmDevTryMax  |   1 to 10          |          | max message re-transmit&lt;br /&gt;
&lt;br /&gt;
==== Channel 01 ====&lt;br /&gt;
&lt;br /&gt;
Die Register:&lt;br /&gt;
 list:        register | range              | peer     | description&lt;br /&gt;
   1: cndTxThrhHi      |   0 to 3000mV      |          | threshold high condition&lt;br /&gt;
   1: cndTxThrhLo      |   0 to 3000mV      |          | threshold high condition&lt;br /&gt;
   1: eventFilterTimeB |   5 to 7620s       |          | event filter time&lt;br /&gt;
   1: evntRelFltTime   |   1 to 7620s       |          | event filter release time &lt;br /&gt;
   1: highHoldTime     |  60 to 7620s       |          | hold time on high state&lt;br /&gt;
   1: sign             |     literal        |          | signature (AES) options:off,on&lt;br /&gt;
   1: transmitTryMax   |   1 to 10          |          | max message re-transmit&lt;br /&gt;
   4: expectAES        |     literal        | required | expect AES options:off,on&lt;br /&gt;
   4: peerNeedsBurst   |     literal        | required | peer expects burst options:on,off&lt;br /&gt;
&lt;br /&gt;
==== Channel 02 ====&lt;br /&gt;
Die Register:&lt;br /&gt;
 list:        register | range              | peer     | description&lt;br /&gt;
   1: sign             |     literal        |          | signature (AES) options:off,on&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration ===&lt;br /&gt;
Bei eingeschaltetem [[autocreate]] werden die erforderlichen Definitionen zum erkannten Sen-RD-O überwiegend selbstständig angelernt:&lt;br /&gt;
&lt;br /&gt;
 define Regensensor CUL_HM 20CE4B&lt;br /&gt;
 attr Regensensor .devInfo 040101&lt;br /&gt;
 attr Regensensor .stc 70&lt;br /&gt;
 attr Regensensor autoReadReg 4_reqStatus&lt;br /&gt;
 attr Regensensor firmware 1.4&lt;br /&gt;
 attr Regensensor model HM-Sen-RD-O&lt;br /&gt;
 attr Regensensor room CUL_HM&lt;br /&gt;
 attr Regensensor serialNr KEQ0117756&lt;br /&gt;
 attr Regensensor subType sensRain&lt;br /&gt;
 attr Regensensor webCmd getConfig&lt;br /&gt;
 define FileLog_Regensensor FileLog /opt/fhem/log/Regensensor-%Y-%m.log Regensensor&lt;br /&gt;
 attr FileLog_Regensensor logtype text&lt;br /&gt;
 attr FileLog_Regensensor room CUL_HM&lt;br /&gt;
&lt;br /&gt;
 # Channel 01 =&amp;gt; 20CE4B01 &lt;br /&gt;
 define Regensensor_EsRegnet CUL_HM 20CE4B01&lt;br /&gt;
 attr Regensensor_EsRegnet expert 1&lt;br /&gt;
 attr Regensensor_EsRegnet model HM-Sen-RD-O&lt;br /&gt;
 attr Regensensor_EsRegnet peerIDs 00000000,&lt;br /&gt;
 attr Regensensor_EsRegnet room CUL_HM&lt;br /&gt;
 define FileLog_Regensensor_EsRegnet FileLog /opt/fhem/log/Regensensor_EsRegnet-%Y-%m.log Regensensor_EsRegnet&lt;br /&gt;
 attr FileLog_Regensensor_EsRegnet logtype text&lt;br /&gt;
 attr FileLog_Regensensor_EsRegnet room CUL_HM&lt;br /&gt;
 define SVG_FileLog_Regensensor_EsRegnet SVG FileLog_Regensensor_EsRegnet:Regensensor:CURRENT&lt;br /&gt;
 attr SVG_FileLog_Regensensor_EsRegnet room CUL_HM&lt;br /&gt;
&lt;br /&gt;
 # Channel 02 =&amp;gt; 20CE4B02&lt;br /&gt;
 define Regensensor_Heizung CUL_HM 20CE4B02&lt;br /&gt;
 attr Regensensor_Heizung expert 1&lt;br /&gt;
 attr Regensensor_Heizung model HM-Sen-RD-O&lt;br /&gt;
 attr Regensensor_Heizung peerIDs 00000000,&lt;br /&gt;
 attr Regensensor_Heizung room CUL_HM&lt;br /&gt;
 define FileLog_Regensensor_Heizung FileLog /opt/fhem/log/Regensensor_Heizung-%Y-%m.log Regensensor_Heizung&lt;br /&gt;
 attr FileLog_Regensensor_Heizung logtype text&lt;br /&gt;
 attr FileLog_Regensensor_Heizung room CUL_HM&lt;br /&gt;
&lt;br /&gt;
=== Steuerung / Betrieb ===&lt;br /&gt;
Über die Veränderung der entsprechenden Register kann man das Verhalten des RD-O 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. &lt;br /&gt;
&lt;br /&gt;
Eine manuelle Heizungssteuerung erreicht man über den &#039;&#039;Channel 02&#039;&#039;:&lt;br /&gt;
Mit dem Befehl &lt;br /&gt;
:&amp;lt;code&amp;gt; set Regensensor_Heizung off&amp;lt;/code&amp;gt;&lt;br /&gt;
wird die Heizung aus- und durch&lt;br /&gt;
:&amp;lt;code&amp;gt; set Regensensor_Heizung on&amp;lt;/code&amp;gt;&lt;br /&gt;
wieder eingeschaltet. &lt;br /&gt;
&lt;br /&gt;
Eine einfache Heizungsautomatik ist ganz einfach über ein Attribut möglich:&lt;br /&gt;
:&amp;lt;code&amp;gt; attr Regensensor_Heizung param offAtPon,onAtRain&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;offAtPon&amp;lt;/code&amp;gt; schaltet die Heizung zwingend aus, wenn der (wieder) Sensor mit Spannung versorgt wird (nach einem Stromausfall). &lt;br /&gt;
&amp;lt;code&amp;gt;onAtRain&amp;lt;/code&amp;gt; schaltet die Heizung beim Status &#039;&#039;rain&#039;&#039; ein und beim Status &#039;&#039;dry&#039;&#039; wieder aus.&lt;br /&gt;
&lt;br /&gt;
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 (wenn nicht bereits durch das o.g. Attribut realisiert) ist ebenfalls sinnvoll, denn die Heizung sorgt für ein schnelleres Abtrocknen der Sensorfläche und somit eine zeitnahe Regenende-Erkennung.&lt;br /&gt;
&lt;br /&gt;
Hierzu kann beispielsweise folgendes in FHEM definiert werden:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt; define DoIf_RegenSensorHzgOnOff DOIF ([Aussen.ThermoHygro:temperature]&amp;lt;5 or [Regensensor_EsRegnet] eq &amp;quot;rain&amp;quot;) (set Regensensor_Heizung on) DOELSEIF ([Aussen.ThermoHygro:temperature]&amp;gt;6 and [Regensensor_EsRegnet] eq &amp;quot;dry&amp;quot;) (set Regensensor_Heizung  off)&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt; attr DoIf_RegenSensorHzgOnOff room Wetter&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Sensor-Heizung wird damit bei Temperaturen unter 5 °C &#039;&#039;&#039;oder&#039;&#039;&#039; bei erkanntem Regen eingeschaltet. Die Abschaltung der Heizung erfolgt, sobald die Temperatur über 6 °C beträgt &#039;&#039;&#039;und&#039;&#039;&#039; es trocken ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der RD-O reagiert bereits bei der Berührung der Sensorfläche mit einem Finger mit der Meldung &amp;quot;Es regnet&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
=== Log-Daten ===&lt;br /&gt;
Auszüge aus den Logs unmittelbar nach Anschluss der Spannungsversorgung und dem ersten Drücken der Anlerntaste am RD-O:&lt;br /&gt;
&lt;br /&gt;
==== Event monitor ====&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global UNDEFINED CUL_HM_HM_Sen_RD_O_20EC4B CUL_HM 20EC4B A1A02840020EC4B0000001400A74B45513031313730363770040101&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED CUL_HM_HM_Sen_RD_O_20EC4B&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED FileLog_CUL_HM_HM_Sen_RD_O_20EC4B&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global SAVE&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global UNDEFINED CUL_HM_HM_Sen_RD_O_20EC4B_Rain CUL_HM 20EC4B01&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED CUL_HM_HM_Sen_RD_O_20EC4B_Rain&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED FileLog_CUL_HM_HM_Sen_RD_O_20EC4B_Rain&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global SAVE&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global UNDEFINED CUL_HM_HM_Sen_RD_O_20EC4B_Heating CUL_HM 20EC4B02&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED CUL_HM_HM_Sen_RD_O_20EC4B_Heating&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED FileLog_CUL_HM_HM_Sen_RD_O_20EC4B_Heating&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global SAVE&lt;br /&gt;
 ... und kurz darauf ...&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; CUL_HM CUL_HM_HM_Sen_RD_O_20EC4B_Rain timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; CUL_HM CUL_HM_HM_Sen_RD_O_20EC4B_Rain dry&lt;br /&gt;
&lt;br /&gt;
==== FHEM-Log ====&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 3: CUL_HM Unknown device CUL_HM_HM_Sen_RD_O_20EC4B, please define it&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 2: autocreate: define CUL_HM_HM_Sen_RD_O_20EC4B CUL_HM 20EC4B A1A02840020EC4B0000001400A74B45513031313730363770040101&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 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&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 2: autocreate: define CUL_HM_HM_Sen_RD_O_20EC4B_Rain CUL_HM 20EC4B01&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 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&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 2: autocreate: define CUL_HM_HM_Sen_RD_O_20EC4B_Heating CUL_HM 20EC4B02&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 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&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 2: CUL_HM set CUL_HM_HM_Sen_RD_O_20EC4B getConfig&lt;br /&gt;
&lt;br /&gt;
==== Device-Logs ====&lt;br /&gt;
==== Channel 01 Log (Es regnet) ====&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet dry&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet rain&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet dry&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet rain&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet dry&lt;br /&gt;
&lt;br /&gt;
Am gezeigten log ist zu erkennen, dass der Sen-RD-O Zustandsänderungen genau einmal meldet und danach nicht wiederholt.&lt;br /&gt;
&lt;br /&gt;
==== Channel 02 Log (Heizung an oder aus) ====&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung on&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung set_off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung set_on&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung on&lt;br /&gt;
&lt;br /&gt;
=== Plot / Grafische Darstellung ===&lt;br /&gt;
Der RD-O meldet im Channel_01-Log die Zustände &amp;quot;rain&amp;quot; (für: es regnet) und &amp;quot;dry&amp;quot; (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:&lt;br /&gt;
&lt;br /&gt;
[[Datei:HM-Sen-RD-O_cut.jpg|Plot des HM-Sen-RD-O]]&lt;br /&gt;
&lt;br /&gt;
Und hier die dazugehörige Plot-Datei:&lt;br /&gt;
 set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
 set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
 set xdata time&lt;br /&gt;
 set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
 set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
 set title &#039;Regnet es: Ja/Nein&#039;&lt;br /&gt;
 set ytics (&amp;quot;Trocken&amp;quot; 0, &amp;quot;Regen&amp;quot; 1)&lt;br /&gt;
 set y2tics (&amp;quot;Trocken&amp;quot; 0, &amp;quot;Regen&amp;quot; 1)&lt;br /&gt;
 set grid&lt;br /&gt;
 set ylabel &amp;quot;&amp;quot;&lt;br /&gt;
 set y2label &amp;quot;&amp;quot;&lt;br /&gt;
 set yrange [-0.1:1.1]&lt;br /&gt;
 set y2range [-0.1:1.1]&lt;br /&gt;
 &lt;br /&gt;
 #FileLog 3::0:$fld[2]=~&amp;quot;rain&amp;quot;?1:0&lt;br /&gt;
 &lt;br /&gt;
 plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Regnet es?&#039; ls l0 lw 1 with steps&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;nicht regnet&amp;quot;. An einer plausibleren Darstellung wird gearbeitet.&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
=== getConfig ===&lt;br /&gt;
Anfangs (Mitte Dezember 2013) gab es noch ein Problem mit dem &#039;&#039;getConfig&#039;&#039;. Dieser Befehl wurde quittiert mit den Meldungen:&lt;br /&gt;
&lt;br /&gt;
 protState	CMDs_done_Errors:1&lt;br /&gt;
 ...&lt;br /&gt;
 state		RESPONSE TIMEOUT:RegisterRead&lt;br /&gt;
 &lt;br /&gt;
Andere Befehle (wie oben z.B. Heizung an/aus) wurden dagegen umgehend erfolgreich abgearbeitet.&lt;br /&gt;
&lt;br /&gt;
Dieses Problem ist mittlerweile gelöst, so dass der RD-O voll genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
=== Erst Minuten nach Regenende meldet der RD-O &amp;quot;dry&amp;quot; (also kein Regen mehr) ===&lt;br /&gt;
Das liegt zum einen daran, dass der auf der Sensorfläche befindliche Niederschlag erst einmal durch die interne Sensorheizung &amp;quot;verdampft&amp;quot; werden muss. Zum anderen ist der RD-O so eingestellt, dass er erst 5 Minuten nach Abtrocknen der Sensorfläche wieder den Zustand &amp;quot;dry&amp;quot; an FHEM meldet. Zuständig dafür ist das RD-O-Register &#039;&#039;highHoldTime&#039;&#039; im Channel &#039;&#039;&#039;01&#039;&#039;&#039;, 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: &lt;br /&gt;
:&amp;lt;code&amp;gt; set Regensensor_EsRegnet regSet highHoldTime 60&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Korrosion / eindringendes Wasser ===&lt;br /&gt;
In den Käuferbewertungen und im Kundenforum von ELV gibt es Meldungen, dass möglicherweise die Sensorfläche &amp;quot;korrodiert&amp;quot; bzw. der RD-O mit Wasser &amp;quot;voll läuft&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://www.elv.de/homematic-funk-regensensor-1.html Produktinfo]&lt;br /&gt;
* Bedienungsanleitung (PDF) {{DocLink|elv|/Assets/Produkte/13/1302/130220/Downloads/130220_hm_regensensor_um.pdf}}&lt;br /&gt;
* Datenblatt (PDF) {{DocLink|elv|/Assets/Produkte/13/1302/130220/Downloads/130220_hm_regensensor_data.pdf}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;br /&gt;
[[Kategorie:Regensensor]]&lt;/div&gt;</summary>
		<author><name>Burny4600</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-Sen-RD-O_Funk-Regensensor&amp;diff=33456</id>
		<title>HM-Sen-RD-O Funk-Regensensor</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-Sen-RD-O_Funk-Regensensor&amp;diff=33456"/>
		<updated>2020-07-05T14:25:07Z</updated>

		<summary type="html">&lt;p&gt;Burny4600: /* Channel 02 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Allgemeines ==&lt;br /&gt;
Der HM-Sen-RD-O (RD-O) ist ein 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.&lt;br /&gt;
&lt;br /&gt;
Er erkennt beginnenden Regen und kann über mit ihm [[Peering (HomeMatic)|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&amp;amp;nbsp;V; nicht im Lieferumfang) betrieben.&lt;br /&gt;
&lt;br /&gt;
Die eingebaute Heizung in der Sensorfläche soll Fehlmeldungen (Betauung, z.B. durch Nebel, bzw. Vereisung) vermeiden helfen.&lt;br /&gt;
&lt;br /&gt;
== Technische Daten ==&lt;br /&gt;
* Aktuelle Firmware: 1.4 (Stand Dezember 2013)&lt;br /&gt;
* Versorgungsspannung: 7,5–30 V DC&lt;br /&gt;
* Max. Stromaufnahme: 250 mA&lt;br /&gt;
* IP-Schutzart: IP44&lt;br /&gt;
* Leistungsaufnahme Ruhebetrieb: 0,4 W (ohne Sensorheizung)&lt;br /&gt;
* Leistungsaufnahme Sensorheizung: ca. 1 W&lt;br /&gt;
* Abmessungen (B x H x T): 80 x 82 x 55 mm&lt;br /&gt;
* Gewicht: 286 gr.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Betrieb mit FHEM ==&lt;br /&gt;
Mit Stand Dezember 2013 wird der RD-O von FHEM unterstützt (Ausnahme siehe &amp;quot;Probleme&amp;quot;). 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 p&#039;&#039;&#039;ai&#039;&#039;&#039;ren. Nun kann man das Device [[rename|umbenennen]]. Die Kanäle (siehe unten) werden dabei (leider) nicht automatisch mit umbenannt, dies kann aber durch entsprechende &#039;&#039;rename&#039;&#039;-Befehle von Hand nachgeholt werden (ggf. vorher prüfen, ob das Gerät ein &#039;&#039;set ... deviceRename ...&#039;&#039; anbietet; damit würden auch die Kanäle umbenannt). Danach ein &#039;&#039;save config&#039;&#039; und &#039;&#039;rereadcfg&#039;&#039; und weiter ...&lt;br /&gt;
&lt;br /&gt;
=== Geräte-Kanäle (Device-channels) ===&lt;br /&gt;
Der RD-O hat 2 Kanäle zusätzlich zum &amp;quot;Channel 00&amp;quot;, der das eigentliche Device darstellt.&lt;br /&gt;
* Channel 01, dieser enthält alles für die eigentliche Erkennung, ob es gerade regnet oder nicht&lt;br /&gt;
* Channel 02, über diesen kann das Verhalten der internen Heizung gesteuert werden&lt;br /&gt;
&lt;br /&gt;
==== Channel 00 ====&lt;br /&gt;
Die Register:&lt;br /&gt;
 list:        register | range              | peer     | description&lt;br /&gt;
   0: localResDis      |     literal        |          | local reset disable options:on,off&lt;br /&gt;
   0: pairCentral      |   0 to 16777215    |          | pairing to central&lt;br /&gt;
   0: transmDevTryMax  |   1 to 10          |          | max message re-transmit&lt;br /&gt;
&lt;br /&gt;
==== Channel 01 ====&lt;br /&gt;
&lt;br /&gt;
Die Register:&lt;br /&gt;
 list:        register | range              | peer     | description&lt;br /&gt;
   1: cndTxThrhHi      |   0 to 3000mV      |          | threshold high condition&lt;br /&gt;
   1: cndTxThrhLo      |   0 to 3000mV      |          | threshold high condition&lt;br /&gt;
   1: eventFilterTimeB |   5 to 7620s       |          | event filter time&lt;br /&gt;
   1: evntRelFltTime   |   1 to 7620s       |          | event filter release time &lt;br /&gt;
   1: highHoldTime     |  60 to 7620s       |          | hold time on high state&lt;br /&gt;
   1: sign             |     literal        |          | signature (AES) options:off,on&lt;br /&gt;
   1: transmitTryMax   |   1 to 10          |          | max message re-transmit&lt;br /&gt;
   4: expectAES        |     literal        | required | expect AES options:off,on&lt;br /&gt;
   4: peerNeedsBurst   |     literal        | required | peer expects burst options:on,off&lt;br /&gt;
&lt;br /&gt;
==== Channel 02 ====&lt;br /&gt;
Die Register:&lt;br /&gt;
 list:        register | range              | peer     | description&lt;br /&gt;
   1: sign             |     literal        |          | signature (AES) options:off,on&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration ===&lt;br /&gt;
Bei eingeschaltetem [[autocreate]] werden die erforderlichen Definitionen zum erkannten Sen-RD-O überwiegend selbstständig angelernt:&lt;br /&gt;
&lt;br /&gt;
 define Regensensor CUL_HM 20CE4B&lt;br /&gt;
 attr Regensensor .devInfo 040101&lt;br /&gt;
 attr Regensensor .stc 70&lt;br /&gt;
 attr Regensensor autoReadReg 4_reqStatus&lt;br /&gt;
 attr Regensensor firmware 1.4&lt;br /&gt;
 attr Regensensor model HM-Sen-RD-O&lt;br /&gt;
 attr Regensensor room CUL_HM&lt;br /&gt;
 attr Regensensor serialNr KEQ0117756&lt;br /&gt;
 attr Regensensor subType sensRain&lt;br /&gt;
 attr Regensensor webCmd getConfig&lt;br /&gt;
 define FileLog_Regensensor FileLog /opt/fhem/log/Regensensor-%Y-%m.log Regensensor&lt;br /&gt;
 attr FileLog_Regensensor logtype text&lt;br /&gt;
 attr FileLog_Regensensor room CUL_HM&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # Channel 01 =&amp;gt; 20CE4B01 &lt;br /&gt;
 define Regensensor_EsRegnet CUL_HM 20CE4B01&lt;br /&gt;
 attr Regensensor_EsRegnet expert 1&lt;br /&gt;
 attr Regensensor_EsRegnet model HM-Sen-RD-O&lt;br /&gt;
 attr Regensensor_EsRegnet peerIDs 00000000,&lt;br /&gt;
 attr Regensensor_EsRegnet room CUL_HM&lt;br /&gt;
 define FileLog_Regensensor_EsRegnet FileLog /opt/fhem/log/Regensensor_EsRegnet-%Y-%m.log Regensensor_EsRegnet&lt;br /&gt;
 attr FileLog_Regensensor_EsRegnet logtype text&lt;br /&gt;
 attr FileLog_Regensensor_EsRegnet room CUL_HM&lt;br /&gt;
  define SVG_FileLog_Regensensor_EsRegnet SVG FileLog_Regensensor_EsRegnet:Regensensor:CURRENT&lt;br /&gt;
 attr SVG_FileLog_Regensensor_EsRegnet room CUL_HM&lt;br /&gt;
&lt;br /&gt;
 # Channel 02 =&amp;gt; 20CE4B02&lt;br /&gt;
 define Regensensor_Heizung CUL_HM 20CE4B02&lt;br /&gt;
 attr Regensensor_Heizung expert 1&lt;br /&gt;
 attr Regensensor_Heizung model HM-Sen-RD-O&lt;br /&gt;
 attr Regensensor_Heizung peerIDs 00000000,&lt;br /&gt;
 attr Regensensor_Heizung room CUL_HM&lt;br /&gt;
 define FileLog_Regensensor_Heizung FileLog /opt/fhem/log/Regensensor_Heizung-%Y-%m.log Regensensor_Heizung&lt;br /&gt;
 attr FileLog_Regensensor_Heizung logtype text&lt;br /&gt;
 attr FileLog_Regensensor_Heizung room CUL_HM&lt;br /&gt;
&lt;br /&gt;
=== Steuerung / Betrieb ===&lt;br /&gt;
Über die Veränderung der entsprechenden Register kann man das Verhalten des RD-O 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. &lt;br /&gt;
&lt;br /&gt;
Eine manuelle Heizungssteuerung erreicht man über den &#039;&#039;Channel 02&#039;&#039;:&lt;br /&gt;
Mit dem Befehl &lt;br /&gt;
:&amp;lt;code&amp;gt; set Regensensor_Heizung off&amp;lt;/code&amp;gt;&lt;br /&gt;
wird die Heizung aus- und durch&lt;br /&gt;
:&amp;lt;code&amp;gt; set Regensensor_Heizung on&amp;lt;/code&amp;gt;&lt;br /&gt;
wieder eingeschaltet. &lt;br /&gt;
&lt;br /&gt;
Eine einfache Heizungsautomatik ist ganz einfach über ein Attribut möglich:&lt;br /&gt;
:&amp;lt;code&amp;gt; attr Regensensor_Heizung param offAtPon,onAtRain&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;offAtPon&amp;lt;/code&amp;gt; schaltet die Heizung zwingend aus, wenn der (wieder) Sensor mit Spannung versorgt wird (nach einem Stromausfall). &lt;br /&gt;
&amp;lt;code&amp;gt;onAtRain&amp;lt;/code&amp;gt; schaltet die Heizung beim Status &#039;&#039;rain&#039;&#039; ein und beim Status &#039;&#039;dry&#039;&#039; wieder aus.&lt;br /&gt;
&lt;br /&gt;
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 (wenn nicht bereits durch das o.g. Attribut realisiert) ist ebenfalls sinnvoll, denn die Heizung sorgt für ein schnelleres Abtrocknen der Sensorfläche und somit eine zeitnahe Regenende-Erkennung.&lt;br /&gt;
&lt;br /&gt;
Hierzu kann beispielsweise folgendes in FHEM definiert werden:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt; define DoIf_RegenSensorHzgOnOff DOIF ([Aussen.ThermoHygro:temperature]&amp;lt;5 or [Regensensor_EsRegnet] eq &amp;quot;rain&amp;quot;) (set Regensensor_Heizung on) DOELSEIF ([Aussen.ThermoHygro:temperature]&amp;gt;6 and [Regensensor_EsRegnet] eq &amp;quot;dry&amp;quot;) (set Regensensor_Heizung  off)&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt; attr DoIf_RegenSensorHzgOnOff room Wetter&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Sensor-Heizung wird damit bei Temperaturen unter 5 °C &#039;&#039;&#039;oder&#039;&#039;&#039; bei erkanntem Regen eingeschaltet. Die Abschaltung der Heizung erfolgt, sobald die Temperatur über 6 °C beträgt &#039;&#039;&#039;und&#039;&#039;&#039; es trocken ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der RD-O reagiert bereits bei der Berührung der Sensorfläche mit einem Finger mit der Meldung &amp;quot;Es regnet&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
=== Log-Daten ===&lt;br /&gt;
Auszüge aus den Logs unmittelbar nach Anschluss der Spannungsversorgung und dem ersten Drücken der Anlerntaste am RD-O:&lt;br /&gt;
&lt;br /&gt;
==== Event monitor ====&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global UNDEFINED CUL_HM_HM_Sen_RD_O_20EC4B CUL_HM 20EC4B A1A02840020EC4B0000001400A74B45513031313730363770040101&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED CUL_HM_HM_Sen_RD_O_20EC4B&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED FileLog_CUL_HM_HM_Sen_RD_O_20EC4B&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global SAVE&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global UNDEFINED CUL_HM_HM_Sen_RD_O_20EC4B_Rain CUL_HM 20EC4B01&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED CUL_HM_HM_Sen_RD_O_20EC4B_Rain&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED FileLog_CUL_HM_HM_Sen_RD_O_20EC4B_Rain&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global SAVE&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global UNDEFINED CUL_HM_HM_Sen_RD_O_20EC4B_Heating CUL_HM 20EC4B02&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED CUL_HM_HM_Sen_RD_O_20EC4B_Heating&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED FileLog_CUL_HM_HM_Sen_RD_O_20EC4B_Heating&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global SAVE&lt;br /&gt;
 ... und kurz darauf ...&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; CUL_HM CUL_HM_HM_Sen_RD_O_20EC4B_Rain timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; CUL_HM CUL_HM_HM_Sen_RD_O_20EC4B_Rain dry&lt;br /&gt;
&lt;br /&gt;
==== FHEM-Log ====&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 3: CUL_HM Unknown device CUL_HM_HM_Sen_RD_O_20EC4B, please define it&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 2: autocreate: define CUL_HM_HM_Sen_RD_O_20EC4B CUL_HM 20EC4B A1A02840020EC4B0000001400A74B45513031313730363770040101&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 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&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 2: autocreate: define CUL_HM_HM_Sen_RD_O_20EC4B_Rain CUL_HM 20EC4B01&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 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&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 2: autocreate: define CUL_HM_HM_Sen_RD_O_20EC4B_Heating CUL_HM 20EC4B02&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 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&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 2: CUL_HM set CUL_HM_HM_Sen_RD_O_20EC4B getConfig&lt;br /&gt;
&lt;br /&gt;
==== Device-Logs ====&lt;br /&gt;
==== Channel 01 Log (Es regnet) ====&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet dry&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet rain&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet dry&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet rain&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet dry&lt;br /&gt;
&lt;br /&gt;
Am gezeigten log ist zu erkennen, dass der Sen-RD-O Zustandsänderungen genau einmal meldet und danach nicht wiederholt.&lt;br /&gt;
&lt;br /&gt;
==== Channel 02 Log (Heizung an oder aus) ====&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung on&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung set_off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung set_on&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung on&lt;br /&gt;
&lt;br /&gt;
=== Plot / Grafische Darstellung ===&lt;br /&gt;
Der RD-O meldet im Channel_01-Log die Zustände &amp;quot;rain&amp;quot; (für: es regnet) und &amp;quot;dry&amp;quot; (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:&lt;br /&gt;
&lt;br /&gt;
[[Datei:HM-Sen-RD-O_cut.jpg|Plot des HM-Sen-RD-O]]&lt;br /&gt;
&lt;br /&gt;
Und hier die dazugehörige Plot-Datei:&lt;br /&gt;
 set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
 set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
 set xdata time&lt;br /&gt;
 set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
 set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
 set title &#039;Regnet es: Ja/Nein&#039;&lt;br /&gt;
 set ytics (&amp;quot;Trocken&amp;quot; 0, &amp;quot;Regen&amp;quot; 1)&lt;br /&gt;
 set y2tics (&amp;quot;Trocken&amp;quot; 0, &amp;quot;Regen&amp;quot; 1)&lt;br /&gt;
 set grid&lt;br /&gt;
 set ylabel &amp;quot;&amp;quot;&lt;br /&gt;
 set y2label &amp;quot;&amp;quot;&lt;br /&gt;
 set yrange [-0.1:1.1]&lt;br /&gt;
 set y2range [-0.1:1.1]&lt;br /&gt;
 &lt;br /&gt;
 #FileLog 3::0:$fld[2]=~&amp;quot;rain&amp;quot;?1:0&lt;br /&gt;
 &lt;br /&gt;
 plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Regnet es?&#039; ls l0 lw 1 with steps&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;nicht regnet&amp;quot;. An einer plausibleren Darstellung wird gearbeitet.&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
=== getConfig ===&lt;br /&gt;
Anfangs (Mitte Dezember 2013) gab es noch ein Problem mit dem &#039;&#039;getConfig&#039;&#039;. Dieser Befehl wurde quittiert mit den Meldungen:&lt;br /&gt;
&lt;br /&gt;
 protState	CMDs_done_Errors:1&lt;br /&gt;
 ...&lt;br /&gt;
 state		RESPONSE TIMEOUT:RegisterRead&lt;br /&gt;
 &lt;br /&gt;
Andere Befehle (wie oben z.B. Heizung an/aus) wurden dagegen umgehend erfolgreich abgearbeitet.&lt;br /&gt;
&lt;br /&gt;
Dieses Problem ist mittlerweile gelöst, so dass der RD-O voll genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
=== Erst Minuten nach Regenende meldet der RD-O &amp;quot;dry&amp;quot; (also kein Regen mehr) ===&lt;br /&gt;
Das liegt zum einen daran, dass der auf der Sensorfläche befindliche Niederschlag erst einmal durch die interne Sensorheizung &amp;quot;verdampft&amp;quot; werden muss. Zum anderen ist der RD-O so eingestellt, dass er erst 5 Minuten nach Abtrocknen der Sensorfläche wieder den Zustand &amp;quot;dry&amp;quot; an FHEM meldet. Zuständig dafür ist das RD-O-Register &#039;&#039;highHoldTime&#039;&#039; im Channel &#039;&#039;&#039;01&#039;&#039;&#039;, 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: &lt;br /&gt;
:&amp;lt;code&amp;gt; set Regensensor_EsRegnet regSet highHoldTime 60&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Korrosion / eindringendes Wasser ===&lt;br /&gt;
In den Käuferbewertungen und im Kundenforum von ELV gibt es Meldungen, dass möglicherweise die Sensorfläche &amp;quot;korrodiert&amp;quot; bzw. der RD-O mit Wasser &amp;quot;voll läuft&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://www.elv.de/homematic-funk-regensensor-1.html Produktinfo]&lt;br /&gt;
* Bedienungsanleitung (PDF) {{DocLink|elv|/Assets/Produkte/13/1302/130220/Downloads/130220_hm_regensensor_um.pdf}}&lt;br /&gt;
* Datenblatt (PDF) {{DocLink|elv|/Assets/Produkte/13/1302/130220/Downloads/130220_hm_regensensor_data.pdf}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;br /&gt;
[[Kategorie:Regensensor]]&lt;/div&gt;</summary>
		<author><name>Burny4600</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-Sen-RD-O_Funk-Regensensor&amp;diff=33455</id>
		<title>HM-Sen-RD-O Funk-Regensensor</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-Sen-RD-O_Funk-Regensensor&amp;diff=33455"/>
		<updated>2020-07-05T14:24:50Z</updated>

		<summary type="html">&lt;p&gt;Burny4600: /* Channel 01 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Allgemeines ==&lt;br /&gt;
Der HM-Sen-RD-O (RD-O) ist ein 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.&lt;br /&gt;
&lt;br /&gt;
Er erkennt beginnenden Regen und kann über mit ihm [[Peering (HomeMatic)|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&amp;amp;nbsp;V; nicht im Lieferumfang) betrieben.&lt;br /&gt;
&lt;br /&gt;
Die eingebaute Heizung in der Sensorfläche soll Fehlmeldungen (Betauung, z.B. durch Nebel, bzw. Vereisung) vermeiden helfen.&lt;br /&gt;
&lt;br /&gt;
== Technische Daten ==&lt;br /&gt;
* Aktuelle Firmware: 1.4 (Stand Dezember 2013)&lt;br /&gt;
* Versorgungsspannung: 7,5–30 V DC&lt;br /&gt;
* Max. Stromaufnahme: 250 mA&lt;br /&gt;
* IP-Schutzart: IP44&lt;br /&gt;
* Leistungsaufnahme Ruhebetrieb: 0,4 W (ohne Sensorheizung)&lt;br /&gt;
* Leistungsaufnahme Sensorheizung: ca. 1 W&lt;br /&gt;
* Abmessungen (B x H x T): 80 x 82 x 55 mm&lt;br /&gt;
* Gewicht: 286 gr.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Betrieb mit FHEM ==&lt;br /&gt;
Mit Stand Dezember 2013 wird der RD-O von FHEM unterstützt (Ausnahme siehe &amp;quot;Probleme&amp;quot;). 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 p&#039;&#039;&#039;ai&#039;&#039;&#039;ren. Nun kann man das Device [[rename|umbenennen]]. Die Kanäle (siehe unten) werden dabei (leider) nicht automatisch mit umbenannt, dies kann aber durch entsprechende &#039;&#039;rename&#039;&#039;-Befehle von Hand nachgeholt werden (ggf. vorher prüfen, ob das Gerät ein &#039;&#039;set ... deviceRename ...&#039;&#039; anbietet; damit würden auch die Kanäle umbenannt). Danach ein &#039;&#039;save config&#039;&#039; und &#039;&#039;rereadcfg&#039;&#039; und weiter ...&lt;br /&gt;
&lt;br /&gt;
=== Geräte-Kanäle (Device-channels) ===&lt;br /&gt;
Der RD-O hat 2 Kanäle zusätzlich zum &amp;quot;Channel 00&amp;quot;, der das eigentliche Device darstellt.&lt;br /&gt;
* Channel 01, dieser enthält alles für die eigentliche Erkennung, ob es gerade regnet oder nicht&lt;br /&gt;
* Channel 02, über diesen kann das Verhalten der internen Heizung gesteuert werden&lt;br /&gt;
&lt;br /&gt;
==== Channel 00 ====&lt;br /&gt;
Die Register:&lt;br /&gt;
 list:        register | range              | peer     | description&lt;br /&gt;
   0: localResDis      |     literal        |          | local reset disable options:on,off&lt;br /&gt;
   0: pairCentral      |   0 to 16777215    |          | pairing to central&lt;br /&gt;
   0: transmDevTryMax  |   1 to 10          |          | max message re-transmit&lt;br /&gt;
&lt;br /&gt;
==== Channel 01 ====&lt;br /&gt;
&lt;br /&gt;
Die Register:&lt;br /&gt;
 list:        register | range              | peer     | description&lt;br /&gt;
   1: cndTxThrhHi      |   0 to 3000mV      |          | threshold high condition&lt;br /&gt;
   1: cndTxThrhLo      |   0 to 3000mV      |          | threshold high condition&lt;br /&gt;
   1: eventFilterTimeB |   5 to 7620s       |          | event filter time&lt;br /&gt;
   1: evntRelFltTime   |   1 to 7620s       |          | event filter release time &lt;br /&gt;
   1: highHoldTime     |  60 to 7620s       |          | hold time on high state&lt;br /&gt;
   1: sign             |     literal        |          | signature (AES) options:off,on&lt;br /&gt;
   1: transmitTryMax   |   1 to 10          |          | max message re-transmit&lt;br /&gt;
   4: expectAES        |     literal        | required | expect AES options:off,on&lt;br /&gt;
   4: peerNeedsBurst   |     literal        | required | peer expects burst options:on,off&lt;br /&gt;
&lt;br /&gt;
==== Channel 02 ====&lt;br /&gt;
Die Register:&lt;br /&gt;
list:         register | range              | peer     | description&lt;br /&gt;
   1: sign             |     literal        |          | signature (AES) options:off,on&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration ===&lt;br /&gt;
Bei eingeschaltetem [[autocreate]] werden die erforderlichen Definitionen zum erkannten Sen-RD-O überwiegend selbstständig angelernt:&lt;br /&gt;
&lt;br /&gt;
 define Regensensor CUL_HM 20CE4B&lt;br /&gt;
 attr Regensensor .devInfo 040101&lt;br /&gt;
 attr Regensensor .stc 70&lt;br /&gt;
 attr Regensensor autoReadReg 4_reqStatus&lt;br /&gt;
 attr Regensensor firmware 1.4&lt;br /&gt;
 attr Regensensor model HM-Sen-RD-O&lt;br /&gt;
 attr Regensensor room CUL_HM&lt;br /&gt;
 attr Regensensor serialNr KEQ0117756&lt;br /&gt;
 attr Regensensor subType sensRain&lt;br /&gt;
 attr Regensensor webCmd getConfig&lt;br /&gt;
 define FileLog_Regensensor FileLog /opt/fhem/log/Regensensor-%Y-%m.log Regensensor&lt;br /&gt;
 attr FileLog_Regensensor logtype text&lt;br /&gt;
 attr FileLog_Regensensor room CUL_HM&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # Channel 01 =&amp;gt; 20CE4B01 &lt;br /&gt;
 define Regensensor_EsRegnet CUL_HM 20CE4B01&lt;br /&gt;
 attr Regensensor_EsRegnet expert 1&lt;br /&gt;
 attr Regensensor_EsRegnet model HM-Sen-RD-O&lt;br /&gt;
 attr Regensensor_EsRegnet peerIDs 00000000,&lt;br /&gt;
 attr Regensensor_EsRegnet room CUL_HM&lt;br /&gt;
 define FileLog_Regensensor_EsRegnet FileLog /opt/fhem/log/Regensensor_EsRegnet-%Y-%m.log Regensensor_EsRegnet&lt;br /&gt;
 attr FileLog_Regensensor_EsRegnet logtype text&lt;br /&gt;
 attr FileLog_Regensensor_EsRegnet room CUL_HM&lt;br /&gt;
  define SVG_FileLog_Regensensor_EsRegnet SVG FileLog_Regensensor_EsRegnet:Regensensor:CURRENT&lt;br /&gt;
 attr SVG_FileLog_Regensensor_EsRegnet room CUL_HM&lt;br /&gt;
&lt;br /&gt;
 # Channel 02 =&amp;gt; 20CE4B02&lt;br /&gt;
 define Regensensor_Heizung CUL_HM 20CE4B02&lt;br /&gt;
 attr Regensensor_Heizung expert 1&lt;br /&gt;
 attr Regensensor_Heizung model HM-Sen-RD-O&lt;br /&gt;
 attr Regensensor_Heizung peerIDs 00000000,&lt;br /&gt;
 attr Regensensor_Heizung room CUL_HM&lt;br /&gt;
 define FileLog_Regensensor_Heizung FileLog /opt/fhem/log/Regensensor_Heizung-%Y-%m.log Regensensor_Heizung&lt;br /&gt;
 attr FileLog_Regensensor_Heizung logtype text&lt;br /&gt;
 attr FileLog_Regensensor_Heizung room CUL_HM&lt;br /&gt;
&lt;br /&gt;
=== Steuerung / Betrieb ===&lt;br /&gt;
Über die Veränderung der entsprechenden Register kann man das Verhalten des RD-O 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. &lt;br /&gt;
&lt;br /&gt;
Eine manuelle Heizungssteuerung erreicht man über den &#039;&#039;Channel 02&#039;&#039;:&lt;br /&gt;
Mit dem Befehl &lt;br /&gt;
:&amp;lt;code&amp;gt; set Regensensor_Heizung off&amp;lt;/code&amp;gt;&lt;br /&gt;
wird die Heizung aus- und durch&lt;br /&gt;
:&amp;lt;code&amp;gt; set Regensensor_Heizung on&amp;lt;/code&amp;gt;&lt;br /&gt;
wieder eingeschaltet. &lt;br /&gt;
&lt;br /&gt;
Eine einfache Heizungsautomatik ist ganz einfach über ein Attribut möglich:&lt;br /&gt;
:&amp;lt;code&amp;gt; attr Regensensor_Heizung param offAtPon,onAtRain&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;offAtPon&amp;lt;/code&amp;gt; schaltet die Heizung zwingend aus, wenn der (wieder) Sensor mit Spannung versorgt wird (nach einem Stromausfall). &lt;br /&gt;
&amp;lt;code&amp;gt;onAtRain&amp;lt;/code&amp;gt; schaltet die Heizung beim Status &#039;&#039;rain&#039;&#039; ein und beim Status &#039;&#039;dry&#039;&#039; wieder aus.&lt;br /&gt;
&lt;br /&gt;
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 (wenn nicht bereits durch das o.g. Attribut realisiert) ist ebenfalls sinnvoll, denn die Heizung sorgt für ein schnelleres Abtrocknen der Sensorfläche und somit eine zeitnahe Regenende-Erkennung.&lt;br /&gt;
&lt;br /&gt;
Hierzu kann beispielsweise folgendes in FHEM definiert werden:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt; define DoIf_RegenSensorHzgOnOff DOIF ([Aussen.ThermoHygro:temperature]&amp;lt;5 or [Regensensor_EsRegnet] eq &amp;quot;rain&amp;quot;) (set Regensensor_Heizung on) DOELSEIF ([Aussen.ThermoHygro:temperature]&amp;gt;6 and [Regensensor_EsRegnet] eq &amp;quot;dry&amp;quot;) (set Regensensor_Heizung  off)&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt; attr DoIf_RegenSensorHzgOnOff room Wetter&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Sensor-Heizung wird damit bei Temperaturen unter 5 °C &#039;&#039;&#039;oder&#039;&#039;&#039; bei erkanntem Regen eingeschaltet. Die Abschaltung der Heizung erfolgt, sobald die Temperatur über 6 °C beträgt &#039;&#039;&#039;und&#039;&#039;&#039; es trocken ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der RD-O reagiert bereits bei der Berührung der Sensorfläche mit einem Finger mit der Meldung &amp;quot;Es regnet&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
=== Log-Daten ===&lt;br /&gt;
Auszüge aus den Logs unmittelbar nach Anschluss der Spannungsversorgung und dem ersten Drücken der Anlerntaste am RD-O:&lt;br /&gt;
&lt;br /&gt;
==== Event monitor ====&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global UNDEFINED CUL_HM_HM_Sen_RD_O_20EC4B CUL_HM 20EC4B A1A02840020EC4B0000001400A74B45513031313730363770040101&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED CUL_HM_HM_Sen_RD_O_20EC4B&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED FileLog_CUL_HM_HM_Sen_RD_O_20EC4B&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global SAVE&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global UNDEFINED CUL_HM_HM_Sen_RD_O_20EC4B_Rain CUL_HM 20EC4B01&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED CUL_HM_HM_Sen_RD_O_20EC4B_Rain&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED FileLog_CUL_HM_HM_Sen_RD_O_20EC4B_Rain&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global SAVE&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global UNDEFINED CUL_HM_HM_Sen_RD_O_20EC4B_Heating CUL_HM 20EC4B02&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED CUL_HM_HM_Sen_RD_O_20EC4B_Heating&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED FileLog_CUL_HM_HM_Sen_RD_O_20EC4B_Heating&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global SAVE&lt;br /&gt;
 ... und kurz darauf ...&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; CUL_HM CUL_HM_HM_Sen_RD_O_20EC4B_Rain timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; CUL_HM CUL_HM_HM_Sen_RD_O_20EC4B_Rain dry&lt;br /&gt;
&lt;br /&gt;
==== FHEM-Log ====&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 3: CUL_HM Unknown device CUL_HM_HM_Sen_RD_O_20EC4B, please define it&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 2: autocreate: define CUL_HM_HM_Sen_RD_O_20EC4B CUL_HM 20EC4B A1A02840020EC4B0000001400A74B45513031313730363770040101&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 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&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 2: autocreate: define CUL_HM_HM_Sen_RD_O_20EC4B_Rain CUL_HM 20EC4B01&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 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&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 2: autocreate: define CUL_HM_HM_Sen_RD_O_20EC4B_Heating CUL_HM 20EC4B02&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 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&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 2: CUL_HM set CUL_HM_HM_Sen_RD_O_20EC4B getConfig&lt;br /&gt;
&lt;br /&gt;
==== Device-Logs ====&lt;br /&gt;
==== Channel 01 Log (Es regnet) ====&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet dry&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet rain&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet dry&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet rain&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet dry&lt;br /&gt;
&lt;br /&gt;
Am gezeigten log ist zu erkennen, dass der Sen-RD-O Zustandsänderungen genau einmal meldet und danach nicht wiederholt.&lt;br /&gt;
&lt;br /&gt;
==== Channel 02 Log (Heizung an oder aus) ====&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung on&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung set_off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung set_on&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung on&lt;br /&gt;
&lt;br /&gt;
=== Plot / Grafische Darstellung ===&lt;br /&gt;
Der RD-O meldet im Channel_01-Log die Zustände &amp;quot;rain&amp;quot; (für: es regnet) und &amp;quot;dry&amp;quot; (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:&lt;br /&gt;
&lt;br /&gt;
[[Datei:HM-Sen-RD-O_cut.jpg|Plot des HM-Sen-RD-O]]&lt;br /&gt;
&lt;br /&gt;
Und hier die dazugehörige Plot-Datei:&lt;br /&gt;
 set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
 set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
 set xdata time&lt;br /&gt;
 set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
 set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
 set title &#039;Regnet es: Ja/Nein&#039;&lt;br /&gt;
 set ytics (&amp;quot;Trocken&amp;quot; 0, &amp;quot;Regen&amp;quot; 1)&lt;br /&gt;
 set y2tics (&amp;quot;Trocken&amp;quot; 0, &amp;quot;Regen&amp;quot; 1)&lt;br /&gt;
 set grid&lt;br /&gt;
 set ylabel &amp;quot;&amp;quot;&lt;br /&gt;
 set y2label &amp;quot;&amp;quot;&lt;br /&gt;
 set yrange [-0.1:1.1]&lt;br /&gt;
 set y2range [-0.1:1.1]&lt;br /&gt;
 &lt;br /&gt;
 #FileLog 3::0:$fld[2]=~&amp;quot;rain&amp;quot;?1:0&lt;br /&gt;
 &lt;br /&gt;
 plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Regnet es?&#039; ls l0 lw 1 with steps&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;nicht regnet&amp;quot;. An einer plausibleren Darstellung wird gearbeitet.&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
=== getConfig ===&lt;br /&gt;
Anfangs (Mitte Dezember 2013) gab es noch ein Problem mit dem &#039;&#039;getConfig&#039;&#039;. Dieser Befehl wurde quittiert mit den Meldungen:&lt;br /&gt;
&lt;br /&gt;
 protState	CMDs_done_Errors:1&lt;br /&gt;
 ...&lt;br /&gt;
 state		RESPONSE TIMEOUT:RegisterRead&lt;br /&gt;
 &lt;br /&gt;
Andere Befehle (wie oben z.B. Heizung an/aus) wurden dagegen umgehend erfolgreich abgearbeitet.&lt;br /&gt;
&lt;br /&gt;
Dieses Problem ist mittlerweile gelöst, so dass der RD-O voll genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
=== Erst Minuten nach Regenende meldet der RD-O &amp;quot;dry&amp;quot; (also kein Regen mehr) ===&lt;br /&gt;
Das liegt zum einen daran, dass der auf der Sensorfläche befindliche Niederschlag erst einmal durch die interne Sensorheizung &amp;quot;verdampft&amp;quot; werden muss. Zum anderen ist der RD-O so eingestellt, dass er erst 5 Minuten nach Abtrocknen der Sensorfläche wieder den Zustand &amp;quot;dry&amp;quot; an FHEM meldet. Zuständig dafür ist das RD-O-Register &#039;&#039;highHoldTime&#039;&#039; im Channel &#039;&#039;&#039;01&#039;&#039;&#039;, 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: &lt;br /&gt;
:&amp;lt;code&amp;gt; set Regensensor_EsRegnet regSet highHoldTime 60&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Korrosion / eindringendes Wasser ===&lt;br /&gt;
In den Käuferbewertungen und im Kundenforum von ELV gibt es Meldungen, dass möglicherweise die Sensorfläche &amp;quot;korrodiert&amp;quot; bzw. der RD-O mit Wasser &amp;quot;voll läuft&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://www.elv.de/homematic-funk-regensensor-1.html Produktinfo]&lt;br /&gt;
* Bedienungsanleitung (PDF) {{DocLink|elv|/Assets/Produkte/13/1302/130220/Downloads/130220_hm_regensensor_um.pdf}}&lt;br /&gt;
* Datenblatt (PDF) {{DocLink|elv|/Assets/Produkte/13/1302/130220/Downloads/130220_hm_regensensor_data.pdf}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;br /&gt;
[[Kategorie:Regensensor]]&lt;/div&gt;</summary>
		<author><name>Burny4600</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-Sen-RD-O_Funk-Regensensor&amp;diff=33454</id>
		<title>HM-Sen-RD-O Funk-Regensensor</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-Sen-RD-O_Funk-Regensensor&amp;diff=33454"/>
		<updated>2020-07-05T14:23:48Z</updated>

		<summary type="html">&lt;p&gt;Burny4600: /* Channel 02 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Allgemeines ==&lt;br /&gt;
Der HM-Sen-RD-O (RD-O) ist ein 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.&lt;br /&gt;
&lt;br /&gt;
Er erkennt beginnenden Regen und kann über mit ihm [[Peering (HomeMatic)|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&amp;amp;nbsp;V; nicht im Lieferumfang) betrieben.&lt;br /&gt;
&lt;br /&gt;
Die eingebaute Heizung in der Sensorfläche soll Fehlmeldungen (Betauung, z.B. durch Nebel, bzw. Vereisung) vermeiden helfen.&lt;br /&gt;
&lt;br /&gt;
== Technische Daten ==&lt;br /&gt;
* Aktuelle Firmware: 1.4 (Stand Dezember 2013)&lt;br /&gt;
* Versorgungsspannung: 7,5–30 V DC&lt;br /&gt;
* Max. Stromaufnahme: 250 mA&lt;br /&gt;
* IP-Schutzart: IP44&lt;br /&gt;
* Leistungsaufnahme Ruhebetrieb: 0,4 W (ohne Sensorheizung)&lt;br /&gt;
* Leistungsaufnahme Sensorheizung: ca. 1 W&lt;br /&gt;
* Abmessungen (B x H x T): 80 x 82 x 55 mm&lt;br /&gt;
* Gewicht: 286 gr.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Betrieb mit FHEM ==&lt;br /&gt;
Mit Stand Dezember 2013 wird der RD-O von FHEM unterstützt (Ausnahme siehe &amp;quot;Probleme&amp;quot;). 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 p&#039;&#039;&#039;ai&#039;&#039;&#039;ren. Nun kann man das Device [[rename|umbenennen]]. Die Kanäle (siehe unten) werden dabei (leider) nicht automatisch mit umbenannt, dies kann aber durch entsprechende &#039;&#039;rename&#039;&#039;-Befehle von Hand nachgeholt werden (ggf. vorher prüfen, ob das Gerät ein &#039;&#039;set ... deviceRename ...&#039;&#039; anbietet; damit würden auch die Kanäle umbenannt). Danach ein &#039;&#039;save config&#039;&#039; und &#039;&#039;rereadcfg&#039;&#039; und weiter ...&lt;br /&gt;
&lt;br /&gt;
=== Geräte-Kanäle (Device-channels) ===&lt;br /&gt;
Der RD-O hat 2 Kanäle zusätzlich zum &amp;quot;Channel 00&amp;quot;, der das eigentliche Device darstellt.&lt;br /&gt;
* Channel 01, dieser enthält alles für die eigentliche Erkennung, ob es gerade regnet oder nicht&lt;br /&gt;
* Channel 02, über diesen kann das Verhalten der internen Heizung gesteuert werden&lt;br /&gt;
&lt;br /&gt;
==== Channel 00 ====&lt;br /&gt;
Die Register:&lt;br /&gt;
 list:        register | range              | peer     | description&lt;br /&gt;
   0: localResDis      |     literal        |          | local reset disable options:on,off&lt;br /&gt;
   0: pairCentral      |   0 to 16777215    |          | pairing to central&lt;br /&gt;
   0: transmDevTryMax  |   1 to 10          |          | max message re-transmit&lt;br /&gt;
&lt;br /&gt;
==== Channel 01 ====&lt;br /&gt;
&lt;br /&gt;
Die Register:&lt;br /&gt;
list:         register | range              | peer     | description&lt;br /&gt;
   1: cndTxThrhHi      |   0 to 3000mV      |          | threshold high condition&lt;br /&gt;
   1: cndTxThrhLo      |   0 to 3000mV      |          | threshold high condition&lt;br /&gt;
   1: eventFilterTimeB |   5 to 7620s       |          | event filter time&lt;br /&gt;
   1: evntRelFltTime   |   1 to 7620s       |          | event filter release time &lt;br /&gt;
   1: highHoldTime     |  60 to 7620s       |          | hold time on high state&lt;br /&gt;
   1: sign             |     literal        |          | signature (AES) options:off,on&lt;br /&gt;
   1: transmitTryMax   |   1 to 10          |          | max message re-transmit&lt;br /&gt;
   4: expectAES        |     literal        | required | expect AES options:off,on&lt;br /&gt;
   4: peerNeedsBurst   |     literal        | required | peer expects burst options:on,off&lt;br /&gt;
&lt;br /&gt;
==== Channel 02 ====&lt;br /&gt;
Die Register:&lt;br /&gt;
list:         register | range              | peer     | description&lt;br /&gt;
   1: sign             |     literal        |          | signature (AES) options:off,on&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration ===&lt;br /&gt;
Bei eingeschaltetem [[autocreate]] werden die erforderlichen Definitionen zum erkannten Sen-RD-O überwiegend selbstständig angelernt:&lt;br /&gt;
&lt;br /&gt;
 define Regensensor CUL_HM 20CE4B&lt;br /&gt;
 attr Regensensor .devInfo 040101&lt;br /&gt;
 attr Regensensor .stc 70&lt;br /&gt;
 attr Regensensor autoReadReg 4_reqStatus&lt;br /&gt;
 attr Regensensor firmware 1.4&lt;br /&gt;
 attr Regensensor model HM-Sen-RD-O&lt;br /&gt;
 attr Regensensor room CUL_HM&lt;br /&gt;
 attr Regensensor serialNr KEQ0117756&lt;br /&gt;
 attr Regensensor subType sensRain&lt;br /&gt;
 attr Regensensor webCmd getConfig&lt;br /&gt;
 define FileLog_Regensensor FileLog /opt/fhem/log/Regensensor-%Y-%m.log Regensensor&lt;br /&gt;
 attr FileLog_Regensensor logtype text&lt;br /&gt;
 attr FileLog_Regensensor room CUL_HM&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # Channel 01 =&amp;gt; 20CE4B01 &lt;br /&gt;
 define Regensensor_EsRegnet CUL_HM 20CE4B01&lt;br /&gt;
 attr Regensensor_EsRegnet expert 1&lt;br /&gt;
 attr Regensensor_EsRegnet model HM-Sen-RD-O&lt;br /&gt;
 attr Regensensor_EsRegnet peerIDs 00000000,&lt;br /&gt;
 attr Regensensor_EsRegnet room CUL_HM&lt;br /&gt;
 define FileLog_Regensensor_EsRegnet FileLog /opt/fhem/log/Regensensor_EsRegnet-%Y-%m.log Regensensor_EsRegnet&lt;br /&gt;
 attr FileLog_Regensensor_EsRegnet logtype text&lt;br /&gt;
 attr FileLog_Regensensor_EsRegnet room CUL_HM&lt;br /&gt;
  define SVG_FileLog_Regensensor_EsRegnet SVG FileLog_Regensensor_EsRegnet:Regensensor:CURRENT&lt;br /&gt;
 attr SVG_FileLog_Regensensor_EsRegnet room CUL_HM&lt;br /&gt;
&lt;br /&gt;
 # Channel 02 =&amp;gt; 20CE4B02&lt;br /&gt;
 define Regensensor_Heizung CUL_HM 20CE4B02&lt;br /&gt;
 attr Regensensor_Heizung expert 1&lt;br /&gt;
 attr Regensensor_Heizung model HM-Sen-RD-O&lt;br /&gt;
 attr Regensensor_Heizung peerIDs 00000000,&lt;br /&gt;
 attr Regensensor_Heizung room CUL_HM&lt;br /&gt;
 define FileLog_Regensensor_Heizung FileLog /opt/fhem/log/Regensensor_Heizung-%Y-%m.log Regensensor_Heizung&lt;br /&gt;
 attr FileLog_Regensensor_Heizung logtype text&lt;br /&gt;
 attr FileLog_Regensensor_Heizung room CUL_HM&lt;br /&gt;
&lt;br /&gt;
=== Steuerung / Betrieb ===&lt;br /&gt;
Über die Veränderung der entsprechenden Register kann man das Verhalten des RD-O 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. &lt;br /&gt;
&lt;br /&gt;
Eine manuelle Heizungssteuerung erreicht man über den &#039;&#039;Channel 02&#039;&#039;:&lt;br /&gt;
Mit dem Befehl &lt;br /&gt;
:&amp;lt;code&amp;gt; set Regensensor_Heizung off&amp;lt;/code&amp;gt;&lt;br /&gt;
wird die Heizung aus- und durch&lt;br /&gt;
:&amp;lt;code&amp;gt; set Regensensor_Heizung on&amp;lt;/code&amp;gt;&lt;br /&gt;
wieder eingeschaltet. &lt;br /&gt;
&lt;br /&gt;
Eine einfache Heizungsautomatik ist ganz einfach über ein Attribut möglich:&lt;br /&gt;
:&amp;lt;code&amp;gt; attr Regensensor_Heizung param offAtPon,onAtRain&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;offAtPon&amp;lt;/code&amp;gt; schaltet die Heizung zwingend aus, wenn der (wieder) Sensor mit Spannung versorgt wird (nach einem Stromausfall). &lt;br /&gt;
&amp;lt;code&amp;gt;onAtRain&amp;lt;/code&amp;gt; schaltet die Heizung beim Status &#039;&#039;rain&#039;&#039; ein und beim Status &#039;&#039;dry&#039;&#039; wieder aus.&lt;br /&gt;
&lt;br /&gt;
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 (wenn nicht bereits durch das o.g. Attribut realisiert) ist ebenfalls sinnvoll, denn die Heizung sorgt für ein schnelleres Abtrocknen der Sensorfläche und somit eine zeitnahe Regenende-Erkennung.&lt;br /&gt;
&lt;br /&gt;
Hierzu kann beispielsweise folgendes in FHEM definiert werden:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt; define DoIf_RegenSensorHzgOnOff DOIF ([Aussen.ThermoHygro:temperature]&amp;lt;5 or [Regensensor_EsRegnet] eq &amp;quot;rain&amp;quot;) (set Regensensor_Heizung on) DOELSEIF ([Aussen.ThermoHygro:temperature]&amp;gt;6 and [Regensensor_EsRegnet] eq &amp;quot;dry&amp;quot;) (set Regensensor_Heizung  off)&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt; attr DoIf_RegenSensorHzgOnOff room Wetter&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Sensor-Heizung wird damit bei Temperaturen unter 5 °C &#039;&#039;&#039;oder&#039;&#039;&#039; bei erkanntem Regen eingeschaltet. Die Abschaltung der Heizung erfolgt, sobald die Temperatur über 6 °C beträgt &#039;&#039;&#039;und&#039;&#039;&#039; es trocken ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der RD-O reagiert bereits bei der Berührung der Sensorfläche mit einem Finger mit der Meldung &amp;quot;Es regnet&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
=== Log-Daten ===&lt;br /&gt;
Auszüge aus den Logs unmittelbar nach Anschluss der Spannungsversorgung und dem ersten Drücken der Anlerntaste am RD-O:&lt;br /&gt;
&lt;br /&gt;
==== Event monitor ====&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global UNDEFINED CUL_HM_HM_Sen_RD_O_20EC4B CUL_HM 20EC4B A1A02840020EC4B0000001400A74B45513031313730363770040101&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED CUL_HM_HM_Sen_RD_O_20EC4B&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED FileLog_CUL_HM_HM_Sen_RD_O_20EC4B&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global SAVE&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global UNDEFINED CUL_HM_HM_Sen_RD_O_20EC4B_Rain CUL_HM 20EC4B01&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED CUL_HM_HM_Sen_RD_O_20EC4B_Rain&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED FileLog_CUL_HM_HM_Sen_RD_O_20EC4B_Rain&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global SAVE&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global UNDEFINED CUL_HM_HM_Sen_RD_O_20EC4B_Heating CUL_HM 20EC4B02&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED CUL_HM_HM_Sen_RD_O_20EC4B_Heating&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED FileLog_CUL_HM_HM_Sen_RD_O_20EC4B_Heating&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global SAVE&lt;br /&gt;
 ... und kurz darauf ...&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; CUL_HM CUL_HM_HM_Sen_RD_O_20EC4B_Rain timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; CUL_HM CUL_HM_HM_Sen_RD_O_20EC4B_Rain dry&lt;br /&gt;
&lt;br /&gt;
==== FHEM-Log ====&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 3: CUL_HM Unknown device CUL_HM_HM_Sen_RD_O_20EC4B, please define it&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 2: autocreate: define CUL_HM_HM_Sen_RD_O_20EC4B CUL_HM 20EC4B A1A02840020EC4B0000001400A74B45513031313730363770040101&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 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&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 2: autocreate: define CUL_HM_HM_Sen_RD_O_20EC4B_Rain CUL_HM 20EC4B01&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 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&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 2: autocreate: define CUL_HM_HM_Sen_RD_O_20EC4B_Heating CUL_HM 20EC4B02&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 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&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 2: CUL_HM set CUL_HM_HM_Sen_RD_O_20EC4B getConfig&lt;br /&gt;
&lt;br /&gt;
==== Device-Logs ====&lt;br /&gt;
==== Channel 01 Log (Es regnet) ====&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet dry&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet rain&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet dry&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet rain&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet dry&lt;br /&gt;
&lt;br /&gt;
Am gezeigten log ist zu erkennen, dass der Sen-RD-O Zustandsänderungen genau einmal meldet und danach nicht wiederholt.&lt;br /&gt;
&lt;br /&gt;
==== Channel 02 Log (Heizung an oder aus) ====&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung on&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung set_off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung set_on&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung on&lt;br /&gt;
&lt;br /&gt;
=== Plot / Grafische Darstellung ===&lt;br /&gt;
Der RD-O meldet im Channel_01-Log die Zustände &amp;quot;rain&amp;quot; (für: es regnet) und &amp;quot;dry&amp;quot; (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:&lt;br /&gt;
&lt;br /&gt;
[[Datei:HM-Sen-RD-O_cut.jpg|Plot des HM-Sen-RD-O]]&lt;br /&gt;
&lt;br /&gt;
Und hier die dazugehörige Plot-Datei:&lt;br /&gt;
 set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
 set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
 set xdata time&lt;br /&gt;
 set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
 set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
 set title &#039;Regnet es: Ja/Nein&#039;&lt;br /&gt;
 set ytics (&amp;quot;Trocken&amp;quot; 0, &amp;quot;Regen&amp;quot; 1)&lt;br /&gt;
 set y2tics (&amp;quot;Trocken&amp;quot; 0, &amp;quot;Regen&amp;quot; 1)&lt;br /&gt;
 set grid&lt;br /&gt;
 set ylabel &amp;quot;&amp;quot;&lt;br /&gt;
 set y2label &amp;quot;&amp;quot;&lt;br /&gt;
 set yrange [-0.1:1.1]&lt;br /&gt;
 set y2range [-0.1:1.1]&lt;br /&gt;
 &lt;br /&gt;
 #FileLog 3::0:$fld[2]=~&amp;quot;rain&amp;quot;?1:0&lt;br /&gt;
 &lt;br /&gt;
 plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Regnet es?&#039; ls l0 lw 1 with steps&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;nicht regnet&amp;quot;. An einer plausibleren Darstellung wird gearbeitet.&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
=== getConfig ===&lt;br /&gt;
Anfangs (Mitte Dezember 2013) gab es noch ein Problem mit dem &#039;&#039;getConfig&#039;&#039;. Dieser Befehl wurde quittiert mit den Meldungen:&lt;br /&gt;
&lt;br /&gt;
 protState	CMDs_done_Errors:1&lt;br /&gt;
 ...&lt;br /&gt;
 state		RESPONSE TIMEOUT:RegisterRead&lt;br /&gt;
 &lt;br /&gt;
Andere Befehle (wie oben z.B. Heizung an/aus) wurden dagegen umgehend erfolgreich abgearbeitet.&lt;br /&gt;
&lt;br /&gt;
Dieses Problem ist mittlerweile gelöst, so dass der RD-O voll genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
=== Erst Minuten nach Regenende meldet der RD-O &amp;quot;dry&amp;quot; (also kein Regen mehr) ===&lt;br /&gt;
Das liegt zum einen daran, dass der auf der Sensorfläche befindliche Niederschlag erst einmal durch die interne Sensorheizung &amp;quot;verdampft&amp;quot; werden muss. Zum anderen ist der RD-O so eingestellt, dass er erst 5 Minuten nach Abtrocknen der Sensorfläche wieder den Zustand &amp;quot;dry&amp;quot; an FHEM meldet. Zuständig dafür ist das RD-O-Register &#039;&#039;highHoldTime&#039;&#039; im Channel &#039;&#039;&#039;01&#039;&#039;&#039;, 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: &lt;br /&gt;
:&amp;lt;code&amp;gt; set Regensensor_EsRegnet regSet highHoldTime 60&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Korrosion / eindringendes Wasser ===&lt;br /&gt;
In den Käuferbewertungen und im Kundenforum von ELV gibt es Meldungen, dass möglicherweise die Sensorfläche &amp;quot;korrodiert&amp;quot; bzw. der RD-O mit Wasser &amp;quot;voll läuft&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://www.elv.de/homematic-funk-regensensor-1.html Produktinfo]&lt;br /&gt;
* Bedienungsanleitung (PDF) {{DocLink|elv|/Assets/Produkte/13/1302/130220/Downloads/130220_hm_regensensor_um.pdf}}&lt;br /&gt;
* Datenblatt (PDF) {{DocLink|elv|/Assets/Produkte/13/1302/130220/Downloads/130220_hm_regensensor_data.pdf}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;br /&gt;
[[Kategorie:Regensensor]]&lt;/div&gt;</summary>
		<author><name>Burny4600</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-Sen-RD-O_Funk-Regensensor&amp;diff=33453</id>
		<title>HM-Sen-RD-O Funk-Regensensor</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-Sen-RD-O_Funk-Regensensor&amp;diff=33453"/>
		<updated>2020-07-05T14:23:28Z</updated>

		<summary type="html">&lt;p&gt;Burny4600: /* Channel 02 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Allgemeines ==&lt;br /&gt;
Der HM-Sen-RD-O (RD-O) ist ein 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.&lt;br /&gt;
&lt;br /&gt;
Er erkennt beginnenden Regen und kann über mit ihm [[Peering (HomeMatic)|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&amp;amp;nbsp;V; nicht im Lieferumfang) betrieben.&lt;br /&gt;
&lt;br /&gt;
Die eingebaute Heizung in der Sensorfläche soll Fehlmeldungen (Betauung, z.B. durch Nebel, bzw. Vereisung) vermeiden helfen.&lt;br /&gt;
&lt;br /&gt;
== Technische Daten ==&lt;br /&gt;
* Aktuelle Firmware: 1.4 (Stand Dezember 2013)&lt;br /&gt;
* Versorgungsspannung: 7,5–30 V DC&lt;br /&gt;
* Max. Stromaufnahme: 250 mA&lt;br /&gt;
* IP-Schutzart: IP44&lt;br /&gt;
* Leistungsaufnahme Ruhebetrieb: 0,4 W (ohne Sensorheizung)&lt;br /&gt;
* Leistungsaufnahme Sensorheizung: ca. 1 W&lt;br /&gt;
* Abmessungen (B x H x T): 80 x 82 x 55 mm&lt;br /&gt;
* Gewicht: 286 gr.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Betrieb mit FHEM ==&lt;br /&gt;
Mit Stand Dezember 2013 wird der RD-O von FHEM unterstützt (Ausnahme siehe &amp;quot;Probleme&amp;quot;). 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 p&#039;&#039;&#039;ai&#039;&#039;&#039;ren. Nun kann man das Device [[rename|umbenennen]]. Die Kanäle (siehe unten) werden dabei (leider) nicht automatisch mit umbenannt, dies kann aber durch entsprechende &#039;&#039;rename&#039;&#039;-Befehle von Hand nachgeholt werden (ggf. vorher prüfen, ob das Gerät ein &#039;&#039;set ... deviceRename ...&#039;&#039; anbietet; damit würden auch die Kanäle umbenannt). Danach ein &#039;&#039;save config&#039;&#039; und &#039;&#039;rereadcfg&#039;&#039; und weiter ...&lt;br /&gt;
&lt;br /&gt;
=== Geräte-Kanäle (Device-channels) ===&lt;br /&gt;
Der RD-O hat 2 Kanäle zusätzlich zum &amp;quot;Channel 00&amp;quot;, der das eigentliche Device darstellt.&lt;br /&gt;
* Channel 01, dieser enthält alles für die eigentliche Erkennung, ob es gerade regnet oder nicht&lt;br /&gt;
* Channel 02, über diesen kann das Verhalten der internen Heizung gesteuert werden&lt;br /&gt;
&lt;br /&gt;
==== Channel 00 ====&lt;br /&gt;
Die Register:&lt;br /&gt;
 list:        register | range              | peer     | description&lt;br /&gt;
   0: localResDis      |     literal        |          | local reset disable options:on,off&lt;br /&gt;
   0: pairCentral      |   0 to 16777215    |          | pairing to central&lt;br /&gt;
   0: transmDevTryMax  |   1 to 10          |          | max message re-transmit&lt;br /&gt;
&lt;br /&gt;
==== Channel 01 ====&lt;br /&gt;
&lt;br /&gt;
Die Register:&lt;br /&gt;
list:         register | range              | peer     | description&lt;br /&gt;
   1: cndTxThrhHi      |   0 to 3000mV      |          | threshold high condition&lt;br /&gt;
   1: cndTxThrhLo      |   0 to 3000mV      |          | threshold high condition&lt;br /&gt;
   1: eventFilterTimeB |   5 to 7620s       |          | event filter time&lt;br /&gt;
   1: evntRelFltTime   |   1 to 7620s       |          | event filter release time &lt;br /&gt;
   1: highHoldTime     |  60 to 7620s       |          | hold time on high state&lt;br /&gt;
   1: sign             |     literal        |          | signature (AES) options:off,on&lt;br /&gt;
   1: transmitTryMax   |   1 to 10          |          | max message re-transmit&lt;br /&gt;
   4: expectAES        |     literal        | required | expect AES options:off,on&lt;br /&gt;
   4: peerNeedsBurst   |     literal        | required | peer expects burst options:on,off&lt;br /&gt;
&lt;br /&gt;
==== Channel 02 ====&lt;br /&gt;
Die Register:&lt;br /&gt;
list:         register | range              | peer     | description&lt;br /&gt;
   1: sign             |     literal        |          | signature (AES) options:off,o&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration ===&lt;br /&gt;
Bei eingeschaltetem [[autocreate]] werden die erforderlichen Definitionen zum erkannten Sen-RD-O überwiegend selbstständig angelernt:&lt;br /&gt;
&lt;br /&gt;
 define Regensensor CUL_HM 20CE4B&lt;br /&gt;
 attr Regensensor .devInfo 040101&lt;br /&gt;
 attr Regensensor .stc 70&lt;br /&gt;
 attr Regensensor autoReadReg 4_reqStatus&lt;br /&gt;
 attr Regensensor firmware 1.4&lt;br /&gt;
 attr Regensensor model HM-Sen-RD-O&lt;br /&gt;
 attr Regensensor room CUL_HM&lt;br /&gt;
 attr Regensensor serialNr KEQ0117756&lt;br /&gt;
 attr Regensensor subType sensRain&lt;br /&gt;
 attr Regensensor webCmd getConfig&lt;br /&gt;
 define FileLog_Regensensor FileLog /opt/fhem/log/Regensensor-%Y-%m.log Regensensor&lt;br /&gt;
 attr FileLog_Regensensor logtype text&lt;br /&gt;
 attr FileLog_Regensensor room CUL_HM&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # Channel 01 =&amp;gt; 20CE4B01 &lt;br /&gt;
 define Regensensor_EsRegnet CUL_HM 20CE4B01&lt;br /&gt;
 attr Regensensor_EsRegnet expert 1&lt;br /&gt;
 attr Regensensor_EsRegnet model HM-Sen-RD-O&lt;br /&gt;
 attr Regensensor_EsRegnet peerIDs 00000000,&lt;br /&gt;
 attr Regensensor_EsRegnet room CUL_HM&lt;br /&gt;
 define FileLog_Regensensor_EsRegnet FileLog /opt/fhem/log/Regensensor_EsRegnet-%Y-%m.log Regensensor_EsRegnet&lt;br /&gt;
 attr FileLog_Regensensor_EsRegnet logtype text&lt;br /&gt;
 attr FileLog_Regensensor_EsRegnet room CUL_HM&lt;br /&gt;
  define SVG_FileLog_Regensensor_EsRegnet SVG FileLog_Regensensor_EsRegnet:Regensensor:CURRENT&lt;br /&gt;
 attr SVG_FileLog_Regensensor_EsRegnet room CUL_HM&lt;br /&gt;
&lt;br /&gt;
 # Channel 02 =&amp;gt; 20CE4B02&lt;br /&gt;
 define Regensensor_Heizung CUL_HM 20CE4B02&lt;br /&gt;
 attr Regensensor_Heizung expert 1&lt;br /&gt;
 attr Regensensor_Heizung model HM-Sen-RD-O&lt;br /&gt;
 attr Regensensor_Heizung peerIDs 00000000,&lt;br /&gt;
 attr Regensensor_Heizung room CUL_HM&lt;br /&gt;
 define FileLog_Regensensor_Heizung FileLog /opt/fhem/log/Regensensor_Heizung-%Y-%m.log Regensensor_Heizung&lt;br /&gt;
 attr FileLog_Regensensor_Heizung logtype text&lt;br /&gt;
 attr FileLog_Regensensor_Heizung room CUL_HM&lt;br /&gt;
&lt;br /&gt;
=== Steuerung / Betrieb ===&lt;br /&gt;
Über die Veränderung der entsprechenden Register kann man das Verhalten des RD-O 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. &lt;br /&gt;
&lt;br /&gt;
Eine manuelle Heizungssteuerung erreicht man über den &#039;&#039;Channel 02&#039;&#039;:&lt;br /&gt;
Mit dem Befehl &lt;br /&gt;
:&amp;lt;code&amp;gt; set Regensensor_Heizung off&amp;lt;/code&amp;gt;&lt;br /&gt;
wird die Heizung aus- und durch&lt;br /&gt;
:&amp;lt;code&amp;gt; set Regensensor_Heizung on&amp;lt;/code&amp;gt;&lt;br /&gt;
wieder eingeschaltet. &lt;br /&gt;
&lt;br /&gt;
Eine einfache Heizungsautomatik ist ganz einfach über ein Attribut möglich:&lt;br /&gt;
:&amp;lt;code&amp;gt; attr Regensensor_Heizung param offAtPon,onAtRain&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;offAtPon&amp;lt;/code&amp;gt; schaltet die Heizung zwingend aus, wenn der (wieder) Sensor mit Spannung versorgt wird (nach einem Stromausfall). &lt;br /&gt;
&amp;lt;code&amp;gt;onAtRain&amp;lt;/code&amp;gt; schaltet die Heizung beim Status &#039;&#039;rain&#039;&#039; ein und beim Status &#039;&#039;dry&#039;&#039; wieder aus.&lt;br /&gt;
&lt;br /&gt;
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 (wenn nicht bereits durch das o.g. Attribut realisiert) ist ebenfalls sinnvoll, denn die Heizung sorgt für ein schnelleres Abtrocknen der Sensorfläche und somit eine zeitnahe Regenende-Erkennung.&lt;br /&gt;
&lt;br /&gt;
Hierzu kann beispielsweise folgendes in FHEM definiert werden:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt; define DoIf_RegenSensorHzgOnOff DOIF ([Aussen.ThermoHygro:temperature]&amp;lt;5 or [Regensensor_EsRegnet] eq &amp;quot;rain&amp;quot;) (set Regensensor_Heizung on) DOELSEIF ([Aussen.ThermoHygro:temperature]&amp;gt;6 and [Regensensor_EsRegnet] eq &amp;quot;dry&amp;quot;) (set Regensensor_Heizung  off)&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt; attr DoIf_RegenSensorHzgOnOff room Wetter&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Sensor-Heizung wird damit bei Temperaturen unter 5 °C &#039;&#039;&#039;oder&#039;&#039;&#039; bei erkanntem Regen eingeschaltet. Die Abschaltung der Heizung erfolgt, sobald die Temperatur über 6 °C beträgt &#039;&#039;&#039;und&#039;&#039;&#039; es trocken ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der RD-O reagiert bereits bei der Berührung der Sensorfläche mit einem Finger mit der Meldung &amp;quot;Es regnet&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
=== Log-Daten ===&lt;br /&gt;
Auszüge aus den Logs unmittelbar nach Anschluss der Spannungsversorgung und dem ersten Drücken der Anlerntaste am RD-O:&lt;br /&gt;
&lt;br /&gt;
==== Event monitor ====&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global UNDEFINED CUL_HM_HM_Sen_RD_O_20EC4B CUL_HM 20EC4B A1A02840020EC4B0000001400A74B45513031313730363770040101&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED CUL_HM_HM_Sen_RD_O_20EC4B&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED FileLog_CUL_HM_HM_Sen_RD_O_20EC4B&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global SAVE&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global UNDEFINED CUL_HM_HM_Sen_RD_O_20EC4B_Rain CUL_HM 20EC4B01&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED CUL_HM_HM_Sen_RD_O_20EC4B_Rain&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED FileLog_CUL_HM_HM_Sen_RD_O_20EC4B_Rain&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global SAVE&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global UNDEFINED CUL_HM_HM_Sen_RD_O_20EC4B_Heating CUL_HM 20EC4B02&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED CUL_HM_HM_Sen_RD_O_20EC4B_Heating&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED FileLog_CUL_HM_HM_Sen_RD_O_20EC4B_Heating&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global SAVE&lt;br /&gt;
 ... und kurz darauf ...&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; CUL_HM CUL_HM_HM_Sen_RD_O_20EC4B_Rain timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; CUL_HM CUL_HM_HM_Sen_RD_O_20EC4B_Rain dry&lt;br /&gt;
&lt;br /&gt;
==== FHEM-Log ====&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 3: CUL_HM Unknown device CUL_HM_HM_Sen_RD_O_20EC4B, please define it&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 2: autocreate: define CUL_HM_HM_Sen_RD_O_20EC4B CUL_HM 20EC4B A1A02840020EC4B0000001400A74B45513031313730363770040101&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 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&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 2: autocreate: define CUL_HM_HM_Sen_RD_O_20EC4B_Rain CUL_HM 20EC4B01&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 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&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 2: autocreate: define CUL_HM_HM_Sen_RD_O_20EC4B_Heating CUL_HM 20EC4B02&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 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&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 2: CUL_HM set CUL_HM_HM_Sen_RD_O_20EC4B getConfig&lt;br /&gt;
&lt;br /&gt;
==== Device-Logs ====&lt;br /&gt;
==== Channel 01 Log (Es regnet) ====&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet dry&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet rain&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet dry&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet rain&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet dry&lt;br /&gt;
&lt;br /&gt;
Am gezeigten log ist zu erkennen, dass der Sen-RD-O Zustandsänderungen genau einmal meldet und danach nicht wiederholt.&lt;br /&gt;
&lt;br /&gt;
==== Channel 02 Log (Heizung an oder aus) ====&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung on&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung set_off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung set_on&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung on&lt;br /&gt;
&lt;br /&gt;
=== Plot / Grafische Darstellung ===&lt;br /&gt;
Der RD-O meldet im Channel_01-Log die Zustände &amp;quot;rain&amp;quot; (für: es regnet) und &amp;quot;dry&amp;quot; (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:&lt;br /&gt;
&lt;br /&gt;
[[Datei:HM-Sen-RD-O_cut.jpg|Plot des HM-Sen-RD-O]]&lt;br /&gt;
&lt;br /&gt;
Und hier die dazugehörige Plot-Datei:&lt;br /&gt;
 set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
 set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
 set xdata time&lt;br /&gt;
 set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
 set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
 set title &#039;Regnet es: Ja/Nein&#039;&lt;br /&gt;
 set ytics (&amp;quot;Trocken&amp;quot; 0, &amp;quot;Regen&amp;quot; 1)&lt;br /&gt;
 set y2tics (&amp;quot;Trocken&amp;quot; 0, &amp;quot;Regen&amp;quot; 1)&lt;br /&gt;
 set grid&lt;br /&gt;
 set ylabel &amp;quot;&amp;quot;&lt;br /&gt;
 set y2label &amp;quot;&amp;quot;&lt;br /&gt;
 set yrange [-0.1:1.1]&lt;br /&gt;
 set y2range [-0.1:1.1]&lt;br /&gt;
 &lt;br /&gt;
 #FileLog 3::0:$fld[2]=~&amp;quot;rain&amp;quot;?1:0&lt;br /&gt;
 &lt;br /&gt;
 plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Regnet es?&#039; ls l0 lw 1 with steps&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;nicht regnet&amp;quot;. An einer plausibleren Darstellung wird gearbeitet.&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
=== getConfig ===&lt;br /&gt;
Anfangs (Mitte Dezember 2013) gab es noch ein Problem mit dem &#039;&#039;getConfig&#039;&#039;. Dieser Befehl wurde quittiert mit den Meldungen:&lt;br /&gt;
&lt;br /&gt;
 protState	CMDs_done_Errors:1&lt;br /&gt;
 ...&lt;br /&gt;
 state		RESPONSE TIMEOUT:RegisterRead&lt;br /&gt;
 &lt;br /&gt;
Andere Befehle (wie oben z.B. Heizung an/aus) wurden dagegen umgehend erfolgreich abgearbeitet.&lt;br /&gt;
&lt;br /&gt;
Dieses Problem ist mittlerweile gelöst, so dass der RD-O voll genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
=== Erst Minuten nach Regenende meldet der RD-O &amp;quot;dry&amp;quot; (also kein Regen mehr) ===&lt;br /&gt;
Das liegt zum einen daran, dass der auf der Sensorfläche befindliche Niederschlag erst einmal durch die interne Sensorheizung &amp;quot;verdampft&amp;quot; werden muss. Zum anderen ist der RD-O so eingestellt, dass er erst 5 Minuten nach Abtrocknen der Sensorfläche wieder den Zustand &amp;quot;dry&amp;quot; an FHEM meldet. Zuständig dafür ist das RD-O-Register &#039;&#039;highHoldTime&#039;&#039; im Channel &#039;&#039;&#039;01&#039;&#039;&#039;, 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: &lt;br /&gt;
:&amp;lt;code&amp;gt; set Regensensor_EsRegnet regSet highHoldTime 60&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Korrosion / eindringendes Wasser ===&lt;br /&gt;
In den Käuferbewertungen und im Kundenforum von ELV gibt es Meldungen, dass möglicherweise die Sensorfläche &amp;quot;korrodiert&amp;quot; bzw. der RD-O mit Wasser &amp;quot;voll läuft&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://www.elv.de/homematic-funk-regensensor-1.html Produktinfo]&lt;br /&gt;
* Bedienungsanleitung (PDF) {{DocLink|elv|/Assets/Produkte/13/1302/130220/Downloads/130220_hm_regensensor_um.pdf}}&lt;br /&gt;
* Datenblatt (PDF) {{DocLink|elv|/Assets/Produkte/13/1302/130220/Downloads/130220_hm_regensensor_data.pdf}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;br /&gt;
[[Kategorie:Regensensor]]&lt;/div&gt;</summary>
		<author><name>Burny4600</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-Sen-RD-O_Funk-Regensensor&amp;diff=33452</id>
		<title>HM-Sen-RD-O Funk-Regensensor</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-Sen-RD-O_Funk-Regensensor&amp;diff=33452"/>
		<updated>2020-07-05T14:22:22Z</updated>

		<summary type="html">&lt;p&gt;Burny4600: /* Channel 02 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Allgemeines ==&lt;br /&gt;
Der HM-Sen-RD-O (RD-O) ist ein 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.&lt;br /&gt;
&lt;br /&gt;
Er erkennt beginnenden Regen und kann über mit ihm [[Peering (HomeMatic)|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&amp;amp;nbsp;V; nicht im Lieferumfang) betrieben.&lt;br /&gt;
&lt;br /&gt;
Die eingebaute Heizung in der Sensorfläche soll Fehlmeldungen (Betauung, z.B. durch Nebel, bzw. Vereisung) vermeiden helfen.&lt;br /&gt;
&lt;br /&gt;
== Technische Daten ==&lt;br /&gt;
* Aktuelle Firmware: 1.4 (Stand Dezember 2013)&lt;br /&gt;
* Versorgungsspannung: 7,5–30 V DC&lt;br /&gt;
* Max. Stromaufnahme: 250 mA&lt;br /&gt;
* IP-Schutzart: IP44&lt;br /&gt;
* Leistungsaufnahme Ruhebetrieb: 0,4 W (ohne Sensorheizung)&lt;br /&gt;
* Leistungsaufnahme Sensorheizung: ca. 1 W&lt;br /&gt;
* Abmessungen (B x H x T): 80 x 82 x 55 mm&lt;br /&gt;
* Gewicht: 286 gr.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Betrieb mit FHEM ==&lt;br /&gt;
Mit Stand Dezember 2013 wird der RD-O von FHEM unterstützt (Ausnahme siehe &amp;quot;Probleme&amp;quot;). 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 p&#039;&#039;&#039;ai&#039;&#039;&#039;ren. Nun kann man das Device [[rename|umbenennen]]. Die Kanäle (siehe unten) werden dabei (leider) nicht automatisch mit umbenannt, dies kann aber durch entsprechende &#039;&#039;rename&#039;&#039;-Befehle von Hand nachgeholt werden (ggf. vorher prüfen, ob das Gerät ein &#039;&#039;set ... deviceRename ...&#039;&#039; anbietet; damit würden auch die Kanäle umbenannt). Danach ein &#039;&#039;save config&#039;&#039; und &#039;&#039;rereadcfg&#039;&#039; und weiter ...&lt;br /&gt;
&lt;br /&gt;
=== Geräte-Kanäle (Device-channels) ===&lt;br /&gt;
Der RD-O hat 2 Kanäle zusätzlich zum &amp;quot;Channel 00&amp;quot;, der das eigentliche Device darstellt.&lt;br /&gt;
* Channel 01, dieser enthält alles für die eigentliche Erkennung, ob es gerade regnet oder nicht&lt;br /&gt;
* Channel 02, über diesen kann das Verhalten der internen Heizung gesteuert werden&lt;br /&gt;
&lt;br /&gt;
==== Channel 00 ====&lt;br /&gt;
Die Register:&lt;br /&gt;
 list:        register | range              | peer     | description&lt;br /&gt;
   0: localResDis      |     literal        |          | local reset disable options:on,off&lt;br /&gt;
   0: pairCentral      |   0 to 16777215    |          | pairing to central&lt;br /&gt;
   0: transmDevTryMax  |   1 to 10          |          | max message re-transmit&lt;br /&gt;
&lt;br /&gt;
==== Channel 01 ====&lt;br /&gt;
&lt;br /&gt;
Die Register:&lt;br /&gt;
list:         register | range              | peer     | description&lt;br /&gt;
   1: cndTxThrhHi      |   0 to 3000mV      |          | threshold high condition&lt;br /&gt;
   1: cndTxThrhLo      |   0 to 3000mV      |          | threshold high condition&lt;br /&gt;
   1: eventFilterTimeB |   5 to 7620s       |          | event filter time&lt;br /&gt;
   1: evntRelFltTime   |   1 to 7620s       |          | event filter release time &lt;br /&gt;
   1: highHoldTime     |  60 to 7620s       |          | hold time on high state&lt;br /&gt;
   1: sign             |     literal        |          | signature (AES) options:off,on&lt;br /&gt;
   1: transmitTryMax   |   1 to 10          |          | max message re-transmit&lt;br /&gt;
   4: expectAES        |     literal        | required | expect AES options:off,on&lt;br /&gt;
   4: peerNeedsBurst   |     literal        | required | peer expects burst options:on,off&lt;br /&gt;
&lt;br /&gt;
==== Channel 02 ====&lt;br /&gt;
list:         register | range              | peer     | description&lt;br /&gt;
   1: sign             |     literal        |          | signature (AES) options:off,o&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration ===&lt;br /&gt;
Bei eingeschaltetem [[autocreate]] werden die erforderlichen Definitionen zum erkannten Sen-RD-O überwiegend selbstständig angelernt:&lt;br /&gt;
&lt;br /&gt;
 define Regensensor CUL_HM 20CE4B&lt;br /&gt;
 attr Regensensor .devInfo 040101&lt;br /&gt;
 attr Regensensor .stc 70&lt;br /&gt;
 attr Regensensor autoReadReg 4_reqStatus&lt;br /&gt;
 attr Regensensor firmware 1.4&lt;br /&gt;
 attr Regensensor model HM-Sen-RD-O&lt;br /&gt;
 attr Regensensor room CUL_HM&lt;br /&gt;
 attr Regensensor serialNr KEQ0117756&lt;br /&gt;
 attr Regensensor subType sensRain&lt;br /&gt;
 attr Regensensor webCmd getConfig&lt;br /&gt;
 define FileLog_Regensensor FileLog /opt/fhem/log/Regensensor-%Y-%m.log Regensensor&lt;br /&gt;
 attr FileLog_Regensensor logtype text&lt;br /&gt;
 attr FileLog_Regensensor room CUL_HM&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # Channel 01 =&amp;gt; 20CE4B01 &lt;br /&gt;
 define Regensensor_EsRegnet CUL_HM 20CE4B01&lt;br /&gt;
 attr Regensensor_EsRegnet expert 1&lt;br /&gt;
 attr Regensensor_EsRegnet model HM-Sen-RD-O&lt;br /&gt;
 attr Regensensor_EsRegnet peerIDs 00000000,&lt;br /&gt;
 attr Regensensor_EsRegnet room CUL_HM&lt;br /&gt;
 define FileLog_Regensensor_EsRegnet FileLog /opt/fhem/log/Regensensor_EsRegnet-%Y-%m.log Regensensor_EsRegnet&lt;br /&gt;
 attr FileLog_Regensensor_EsRegnet logtype text&lt;br /&gt;
 attr FileLog_Regensensor_EsRegnet room CUL_HM&lt;br /&gt;
  define SVG_FileLog_Regensensor_EsRegnet SVG FileLog_Regensensor_EsRegnet:Regensensor:CURRENT&lt;br /&gt;
 attr SVG_FileLog_Regensensor_EsRegnet room CUL_HM&lt;br /&gt;
&lt;br /&gt;
 # Channel 02 =&amp;gt; 20CE4B02&lt;br /&gt;
 define Regensensor_Heizung CUL_HM 20CE4B02&lt;br /&gt;
 attr Regensensor_Heizung expert 1&lt;br /&gt;
 attr Regensensor_Heizung model HM-Sen-RD-O&lt;br /&gt;
 attr Regensensor_Heizung peerIDs 00000000,&lt;br /&gt;
 attr Regensensor_Heizung room CUL_HM&lt;br /&gt;
 define FileLog_Regensensor_Heizung FileLog /opt/fhem/log/Regensensor_Heizung-%Y-%m.log Regensensor_Heizung&lt;br /&gt;
 attr FileLog_Regensensor_Heizung logtype text&lt;br /&gt;
 attr FileLog_Regensensor_Heizung room CUL_HM&lt;br /&gt;
&lt;br /&gt;
=== Steuerung / Betrieb ===&lt;br /&gt;
Über die Veränderung der entsprechenden Register kann man das Verhalten des RD-O 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. &lt;br /&gt;
&lt;br /&gt;
Eine manuelle Heizungssteuerung erreicht man über den &#039;&#039;Channel 02&#039;&#039;:&lt;br /&gt;
Mit dem Befehl &lt;br /&gt;
:&amp;lt;code&amp;gt; set Regensensor_Heizung off&amp;lt;/code&amp;gt;&lt;br /&gt;
wird die Heizung aus- und durch&lt;br /&gt;
:&amp;lt;code&amp;gt; set Regensensor_Heizung on&amp;lt;/code&amp;gt;&lt;br /&gt;
wieder eingeschaltet. &lt;br /&gt;
&lt;br /&gt;
Eine einfache Heizungsautomatik ist ganz einfach über ein Attribut möglich:&lt;br /&gt;
:&amp;lt;code&amp;gt; attr Regensensor_Heizung param offAtPon,onAtRain&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;offAtPon&amp;lt;/code&amp;gt; schaltet die Heizung zwingend aus, wenn der (wieder) Sensor mit Spannung versorgt wird (nach einem Stromausfall). &lt;br /&gt;
&amp;lt;code&amp;gt;onAtRain&amp;lt;/code&amp;gt; schaltet die Heizung beim Status &#039;&#039;rain&#039;&#039; ein und beim Status &#039;&#039;dry&#039;&#039; wieder aus.&lt;br /&gt;
&lt;br /&gt;
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 (wenn nicht bereits durch das o.g. Attribut realisiert) ist ebenfalls sinnvoll, denn die Heizung sorgt für ein schnelleres Abtrocknen der Sensorfläche und somit eine zeitnahe Regenende-Erkennung.&lt;br /&gt;
&lt;br /&gt;
Hierzu kann beispielsweise folgendes in FHEM definiert werden:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt; define DoIf_RegenSensorHzgOnOff DOIF ([Aussen.ThermoHygro:temperature]&amp;lt;5 or [Regensensor_EsRegnet] eq &amp;quot;rain&amp;quot;) (set Regensensor_Heizung on) DOELSEIF ([Aussen.ThermoHygro:temperature]&amp;gt;6 and [Regensensor_EsRegnet] eq &amp;quot;dry&amp;quot;) (set Regensensor_Heizung  off)&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt; attr DoIf_RegenSensorHzgOnOff room Wetter&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Sensor-Heizung wird damit bei Temperaturen unter 5 °C &#039;&#039;&#039;oder&#039;&#039;&#039; bei erkanntem Regen eingeschaltet. Die Abschaltung der Heizung erfolgt, sobald die Temperatur über 6 °C beträgt &#039;&#039;&#039;und&#039;&#039;&#039; es trocken ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der RD-O reagiert bereits bei der Berührung der Sensorfläche mit einem Finger mit der Meldung &amp;quot;Es regnet&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
=== Log-Daten ===&lt;br /&gt;
Auszüge aus den Logs unmittelbar nach Anschluss der Spannungsversorgung und dem ersten Drücken der Anlerntaste am RD-O:&lt;br /&gt;
&lt;br /&gt;
==== Event monitor ====&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global UNDEFINED CUL_HM_HM_Sen_RD_O_20EC4B CUL_HM 20EC4B A1A02840020EC4B0000001400A74B45513031313730363770040101&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED CUL_HM_HM_Sen_RD_O_20EC4B&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED FileLog_CUL_HM_HM_Sen_RD_O_20EC4B&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global SAVE&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global UNDEFINED CUL_HM_HM_Sen_RD_O_20EC4B_Rain CUL_HM 20EC4B01&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED CUL_HM_HM_Sen_RD_O_20EC4B_Rain&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED FileLog_CUL_HM_HM_Sen_RD_O_20EC4B_Rain&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global SAVE&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global UNDEFINED CUL_HM_HM_Sen_RD_O_20EC4B_Heating CUL_HM 20EC4B02&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED CUL_HM_HM_Sen_RD_O_20EC4B_Heating&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED FileLog_CUL_HM_HM_Sen_RD_O_20EC4B_Heating&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global SAVE&lt;br /&gt;
 ... und kurz darauf ...&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; CUL_HM CUL_HM_HM_Sen_RD_O_20EC4B_Rain timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; CUL_HM CUL_HM_HM_Sen_RD_O_20EC4B_Rain dry&lt;br /&gt;
&lt;br /&gt;
==== FHEM-Log ====&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 3: CUL_HM Unknown device CUL_HM_HM_Sen_RD_O_20EC4B, please define it&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 2: autocreate: define CUL_HM_HM_Sen_RD_O_20EC4B CUL_HM 20EC4B A1A02840020EC4B0000001400A74B45513031313730363770040101&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 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&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 2: autocreate: define CUL_HM_HM_Sen_RD_O_20EC4B_Rain CUL_HM 20EC4B01&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 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&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 2: autocreate: define CUL_HM_HM_Sen_RD_O_20EC4B_Heating CUL_HM 20EC4B02&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 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&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 2: CUL_HM set CUL_HM_HM_Sen_RD_O_20EC4B getConfig&lt;br /&gt;
&lt;br /&gt;
==== Device-Logs ====&lt;br /&gt;
==== Channel 01 Log (Es regnet) ====&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet dry&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet rain&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet dry&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet rain&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet dry&lt;br /&gt;
&lt;br /&gt;
Am gezeigten log ist zu erkennen, dass der Sen-RD-O Zustandsänderungen genau einmal meldet und danach nicht wiederholt.&lt;br /&gt;
&lt;br /&gt;
==== Channel 02 Log (Heizung an oder aus) ====&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung on&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung set_off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung set_on&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung on&lt;br /&gt;
&lt;br /&gt;
=== Plot / Grafische Darstellung ===&lt;br /&gt;
Der RD-O meldet im Channel_01-Log die Zustände &amp;quot;rain&amp;quot; (für: es regnet) und &amp;quot;dry&amp;quot; (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:&lt;br /&gt;
&lt;br /&gt;
[[Datei:HM-Sen-RD-O_cut.jpg|Plot des HM-Sen-RD-O]]&lt;br /&gt;
&lt;br /&gt;
Und hier die dazugehörige Plot-Datei:&lt;br /&gt;
 set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
 set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
 set xdata time&lt;br /&gt;
 set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
 set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
 set title &#039;Regnet es: Ja/Nein&#039;&lt;br /&gt;
 set ytics (&amp;quot;Trocken&amp;quot; 0, &amp;quot;Regen&amp;quot; 1)&lt;br /&gt;
 set y2tics (&amp;quot;Trocken&amp;quot; 0, &amp;quot;Regen&amp;quot; 1)&lt;br /&gt;
 set grid&lt;br /&gt;
 set ylabel &amp;quot;&amp;quot;&lt;br /&gt;
 set y2label &amp;quot;&amp;quot;&lt;br /&gt;
 set yrange [-0.1:1.1]&lt;br /&gt;
 set y2range [-0.1:1.1]&lt;br /&gt;
 &lt;br /&gt;
 #FileLog 3::0:$fld[2]=~&amp;quot;rain&amp;quot;?1:0&lt;br /&gt;
 &lt;br /&gt;
 plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Regnet es?&#039; ls l0 lw 1 with steps&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;nicht regnet&amp;quot;. An einer plausibleren Darstellung wird gearbeitet.&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
=== getConfig ===&lt;br /&gt;
Anfangs (Mitte Dezember 2013) gab es noch ein Problem mit dem &#039;&#039;getConfig&#039;&#039;. Dieser Befehl wurde quittiert mit den Meldungen:&lt;br /&gt;
&lt;br /&gt;
 protState	CMDs_done_Errors:1&lt;br /&gt;
 ...&lt;br /&gt;
 state		RESPONSE TIMEOUT:RegisterRead&lt;br /&gt;
 &lt;br /&gt;
Andere Befehle (wie oben z.B. Heizung an/aus) wurden dagegen umgehend erfolgreich abgearbeitet.&lt;br /&gt;
&lt;br /&gt;
Dieses Problem ist mittlerweile gelöst, so dass der RD-O voll genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
=== Erst Minuten nach Regenende meldet der RD-O &amp;quot;dry&amp;quot; (also kein Regen mehr) ===&lt;br /&gt;
Das liegt zum einen daran, dass der auf der Sensorfläche befindliche Niederschlag erst einmal durch die interne Sensorheizung &amp;quot;verdampft&amp;quot; werden muss. Zum anderen ist der RD-O so eingestellt, dass er erst 5 Minuten nach Abtrocknen der Sensorfläche wieder den Zustand &amp;quot;dry&amp;quot; an FHEM meldet. Zuständig dafür ist das RD-O-Register &#039;&#039;highHoldTime&#039;&#039; im Channel &#039;&#039;&#039;01&#039;&#039;&#039;, 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: &lt;br /&gt;
:&amp;lt;code&amp;gt; set Regensensor_EsRegnet regSet highHoldTime 60&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Korrosion / eindringendes Wasser ===&lt;br /&gt;
In den Käuferbewertungen und im Kundenforum von ELV gibt es Meldungen, dass möglicherweise die Sensorfläche &amp;quot;korrodiert&amp;quot; bzw. der RD-O mit Wasser &amp;quot;voll läuft&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://www.elv.de/homematic-funk-regensensor-1.html Produktinfo]&lt;br /&gt;
* Bedienungsanleitung (PDF) {{DocLink|elv|/Assets/Produkte/13/1302/130220/Downloads/130220_hm_regensensor_um.pdf}}&lt;br /&gt;
* Datenblatt (PDF) {{DocLink|elv|/Assets/Produkte/13/1302/130220/Downloads/130220_hm_regensensor_data.pdf}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;br /&gt;
[[Kategorie:Regensensor]]&lt;/div&gt;</summary>
		<author><name>Burny4600</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-Sen-RD-O_Funk-Regensensor&amp;diff=33451</id>
		<title>HM-Sen-RD-O Funk-Regensensor</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-Sen-RD-O_Funk-Regensensor&amp;diff=33451"/>
		<updated>2020-07-05T14:21:14Z</updated>

		<summary type="html">&lt;p&gt;Burny4600: /* Konfiguration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Allgemeines ==&lt;br /&gt;
Der HM-Sen-RD-O (RD-O) ist ein 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.&lt;br /&gt;
&lt;br /&gt;
Er erkennt beginnenden Regen und kann über mit ihm [[Peering (HomeMatic)|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&amp;amp;nbsp;V; nicht im Lieferumfang) betrieben.&lt;br /&gt;
&lt;br /&gt;
Die eingebaute Heizung in der Sensorfläche soll Fehlmeldungen (Betauung, z.B. durch Nebel, bzw. Vereisung) vermeiden helfen.&lt;br /&gt;
&lt;br /&gt;
== Technische Daten ==&lt;br /&gt;
* Aktuelle Firmware: 1.4 (Stand Dezember 2013)&lt;br /&gt;
* Versorgungsspannung: 7,5–30 V DC&lt;br /&gt;
* Max. Stromaufnahme: 250 mA&lt;br /&gt;
* IP-Schutzart: IP44&lt;br /&gt;
* Leistungsaufnahme Ruhebetrieb: 0,4 W (ohne Sensorheizung)&lt;br /&gt;
* Leistungsaufnahme Sensorheizung: ca. 1 W&lt;br /&gt;
* Abmessungen (B x H x T): 80 x 82 x 55 mm&lt;br /&gt;
* Gewicht: 286 gr.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Betrieb mit FHEM ==&lt;br /&gt;
Mit Stand Dezember 2013 wird der RD-O von FHEM unterstützt (Ausnahme siehe &amp;quot;Probleme&amp;quot;). 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 p&#039;&#039;&#039;ai&#039;&#039;&#039;ren. Nun kann man das Device [[rename|umbenennen]]. Die Kanäle (siehe unten) werden dabei (leider) nicht automatisch mit umbenannt, dies kann aber durch entsprechende &#039;&#039;rename&#039;&#039;-Befehle von Hand nachgeholt werden (ggf. vorher prüfen, ob das Gerät ein &#039;&#039;set ... deviceRename ...&#039;&#039; anbietet; damit würden auch die Kanäle umbenannt). Danach ein &#039;&#039;save config&#039;&#039; und &#039;&#039;rereadcfg&#039;&#039; und weiter ...&lt;br /&gt;
&lt;br /&gt;
=== Geräte-Kanäle (Device-channels) ===&lt;br /&gt;
Der RD-O hat 2 Kanäle zusätzlich zum &amp;quot;Channel 00&amp;quot;, der das eigentliche Device darstellt.&lt;br /&gt;
* Channel 01, dieser enthält alles für die eigentliche Erkennung, ob es gerade regnet oder nicht&lt;br /&gt;
* Channel 02, über diesen kann das Verhalten der internen Heizung gesteuert werden&lt;br /&gt;
&lt;br /&gt;
==== Channel 00 ====&lt;br /&gt;
Die Register:&lt;br /&gt;
 list:        register | range              | peer     | description&lt;br /&gt;
   0: localResDis      |     literal        |          | local reset disable options:on,off&lt;br /&gt;
   0: pairCentral      |   0 to 16777215    |          | pairing to central&lt;br /&gt;
   0: transmDevTryMax  |   1 to 10          |          | max message re-transmit&lt;br /&gt;
&lt;br /&gt;
==== Channel 01 ====&lt;br /&gt;
&lt;br /&gt;
Die Register:&lt;br /&gt;
list:         register | range              | peer     | description&lt;br /&gt;
   1: cndTxThrhHi      |   0 to 3000mV      |          | threshold high condition&lt;br /&gt;
   1: cndTxThrhLo      |   0 to 3000mV      |          | threshold high condition&lt;br /&gt;
   1: eventFilterTimeB |   5 to 7620s       |          | event filter time&lt;br /&gt;
   1: evntRelFltTime   |   1 to 7620s       |          | event filter release time &lt;br /&gt;
   1: highHoldTime     |  60 to 7620s       |          | hold time on high state&lt;br /&gt;
   1: sign             |     literal        |          | signature (AES) options:off,on&lt;br /&gt;
   1: transmitTryMax   |   1 to 10          |          | max message re-transmit&lt;br /&gt;
   4: expectAES        |     literal        | required | expect AES options:off,on&lt;br /&gt;
   4: peerNeedsBurst   |     literal        | required | peer expects burst options:on,off&lt;br /&gt;
&lt;br /&gt;
==== Channel 02 ====&lt;br /&gt;
Z. Zt. sind keine Register verfügbar.&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration ===&lt;br /&gt;
Bei eingeschaltetem [[autocreate]] werden die erforderlichen Definitionen zum erkannten Sen-RD-O überwiegend selbstständig angelernt:&lt;br /&gt;
&lt;br /&gt;
 define Regensensor CUL_HM 20CE4B&lt;br /&gt;
 attr Regensensor .devInfo 040101&lt;br /&gt;
 attr Regensensor .stc 70&lt;br /&gt;
 attr Regensensor autoReadReg 4_reqStatus&lt;br /&gt;
 attr Regensensor firmware 1.4&lt;br /&gt;
 attr Regensensor model HM-Sen-RD-O&lt;br /&gt;
 attr Regensensor room CUL_HM&lt;br /&gt;
 attr Regensensor serialNr KEQ0117756&lt;br /&gt;
 attr Regensensor subType sensRain&lt;br /&gt;
 attr Regensensor webCmd getConfig&lt;br /&gt;
 define FileLog_Regensensor FileLog /opt/fhem/log/Regensensor-%Y-%m.log Regensensor&lt;br /&gt;
 attr FileLog_Regensensor logtype text&lt;br /&gt;
 attr FileLog_Regensensor room CUL_HM&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # Channel 01 =&amp;gt; 20CE4B01 &lt;br /&gt;
 define Regensensor_EsRegnet CUL_HM 20CE4B01&lt;br /&gt;
 attr Regensensor_EsRegnet expert 1&lt;br /&gt;
 attr Regensensor_EsRegnet model HM-Sen-RD-O&lt;br /&gt;
 attr Regensensor_EsRegnet peerIDs 00000000,&lt;br /&gt;
 attr Regensensor_EsRegnet room CUL_HM&lt;br /&gt;
 define FileLog_Regensensor_EsRegnet FileLog /opt/fhem/log/Regensensor_EsRegnet-%Y-%m.log Regensensor_EsRegnet&lt;br /&gt;
 attr FileLog_Regensensor_EsRegnet logtype text&lt;br /&gt;
 attr FileLog_Regensensor_EsRegnet room CUL_HM&lt;br /&gt;
  define SVG_FileLog_Regensensor_EsRegnet SVG FileLog_Regensensor_EsRegnet:Regensensor:CURRENT&lt;br /&gt;
 attr SVG_FileLog_Regensensor_EsRegnet room CUL_HM&lt;br /&gt;
&lt;br /&gt;
 # Channel 02 =&amp;gt; 20CE4B02&lt;br /&gt;
 define Regensensor_Heizung CUL_HM 20CE4B02&lt;br /&gt;
 attr Regensensor_Heizung expert 1&lt;br /&gt;
 attr Regensensor_Heizung model HM-Sen-RD-O&lt;br /&gt;
 attr Regensensor_Heizung peerIDs 00000000,&lt;br /&gt;
 attr Regensensor_Heizung room CUL_HM&lt;br /&gt;
 define FileLog_Regensensor_Heizung FileLog /opt/fhem/log/Regensensor_Heizung-%Y-%m.log Regensensor_Heizung&lt;br /&gt;
 attr FileLog_Regensensor_Heizung logtype text&lt;br /&gt;
 attr FileLog_Regensensor_Heizung room CUL_HM&lt;br /&gt;
&lt;br /&gt;
=== Steuerung / Betrieb ===&lt;br /&gt;
Über die Veränderung der entsprechenden Register kann man das Verhalten des RD-O 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. &lt;br /&gt;
&lt;br /&gt;
Eine manuelle Heizungssteuerung erreicht man über den &#039;&#039;Channel 02&#039;&#039;:&lt;br /&gt;
Mit dem Befehl &lt;br /&gt;
:&amp;lt;code&amp;gt; set Regensensor_Heizung off&amp;lt;/code&amp;gt;&lt;br /&gt;
wird die Heizung aus- und durch&lt;br /&gt;
:&amp;lt;code&amp;gt; set Regensensor_Heizung on&amp;lt;/code&amp;gt;&lt;br /&gt;
wieder eingeschaltet. &lt;br /&gt;
&lt;br /&gt;
Eine einfache Heizungsautomatik ist ganz einfach über ein Attribut möglich:&lt;br /&gt;
:&amp;lt;code&amp;gt; attr Regensensor_Heizung param offAtPon,onAtRain&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;offAtPon&amp;lt;/code&amp;gt; schaltet die Heizung zwingend aus, wenn der (wieder) Sensor mit Spannung versorgt wird (nach einem Stromausfall). &lt;br /&gt;
&amp;lt;code&amp;gt;onAtRain&amp;lt;/code&amp;gt; schaltet die Heizung beim Status &#039;&#039;rain&#039;&#039; ein und beim Status &#039;&#039;dry&#039;&#039; wieder aus.&lt;br /&gt;
&lt;br /&gt;
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 (wenn nicht bereits durch das o.g. Attribut realisiert) ist ebenfalls sinnvoll, denn die Heizung sorgt für ein schnelleres Abtrocknen der Sensorfläche und somit eine zeitnahe Regenende-Erkennung.&lt;br /&gt;
&lt;br /&gt;
Hierzu kann beispielsweise folgendes in FHEM definiert werden:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt; define DoIf_RegenSensorHzgOnOff DOIF ([Aussen.ThermoHygro:temperature]&amp;lt;5 or [Regensensor_EsRegnet] eq &amp;quot;rain&amp;quot;) (set Regensensor_Heizung on) DOELSEIF ([Aussen.ThermoHygro:temperature]&amp;gt;6 and [Regensensor_EsRegnet] eq &amp;quot;dry&amp;quot;) (set Regensensor_Heizung  off)&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt; attr DoIf_RegenSensorHzgOnOff room Wetter&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Sensor-Heizung wird damit bei Temperaturen unter 5 °C &#039;&#039;&#039;oder&#039;&#039;&#039; bei erkanntem Regen eingeschaltet. Die Abschaltung der Heizung erfolgt, sobald die Temperatur über 6 °C beträgt &#039;&#039;&#039;und&#039;&#039;&#039; es trocken ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der RD-O reagiert bereits bei der Berührung der Sensorfläche mit einem Finger mit der Meldung &amp;quot;Es regnet&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
=== Log-Daten ===&lt;br /&gt;
Auszüge aus den Logs unmittelbar nach Anschluss der Spannungsversorgung und dem ersten Drücken der Anlerntaste am RD-O:&lt;br /&gt;
&lt;br /&gt;
==== Event monitor ====&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global UNDEFINED CUL_HM_HM_Sen_RD_O_20EC4B CUL_HM 20EC4B A1A02840020EC4B0000001400A74B45513031313730363770040101&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED CUL_HM_HM_Sen_RD_O_20EC4B&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED FileLog_CUL_HM_HM_Sen_RD_O_20EC4B&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global SAVE&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global UNDEFINED CUL_HM_HM_Sen_RD_O_20EC4B_Rain CUL_HM 20EC4B01&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED CUL_HM_HM_Sen_RD_O_20EC4B_Rain&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED FileLog_CUL_HM_HM_Sen_RD_O_20EC4B_Rain&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global SAVE&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global UNDEFINED CUL_HM_HM_Sen_RD_O_20EC4B_Heating CUL_HM 20EC4B02&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED CUL_HM_HM_Sen_RD_O_20EC4B_Heating&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED FileLog_CUL_HM_HM_Sen_RD_O_20EC4B_Heating&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global SAVE&lt;br /&gt;
 ... und kurz darauf ...&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; CUL_HM CUL_HM_HM_Sen_RD_O_20EC4B_Rain timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; CUL_HM CUL_HM_HM_Sen_RD_O_20EC4B_Rain dry&lt;br /&gt;
&lt;br /&gt;
==== FHEM-Log ====&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 3: CUL_HM Unknown device CUL_HM_HM_Sen_RD_O_20EC4B, please define it&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 2: autocreate: define CUL_HM_HM_Sen_RD_O_20EC4B CUL_HM 20EC4B A1A02840020EC4B0000001400A74B45513031313730363770040101&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 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&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 2: autocreate: define CUL_HM_HM_Sen_RD_O_20EC4B_Rain CUL_HM 20EC4B01&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 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&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 2: autocreate: define CUL_HM_HM_Sen_RD_O_20EC4B_Heating CUL_HM 20EC4B02&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 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&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 2: CUL_HM set CUL_HM_HM_Sen_RD_O_20EC4B getConfig&lt;br /&gt;
&lt;br /&gt;
==== Device-Logs ====&lt;br /&gt;
==== Channel 01 Log (Es regnet) ====&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet dry&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet rain&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet dry&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet rain&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet dry&lt;br /&gt;
&lt;br /&gt;
Am gezeigten log ist zu erkennen, dass der Sen-RD-O Zustandsänderungen genau einmal meldet und danach nicht wiederholt.&lt;br /&gt;
&lt;br /&gt;
==== Channel 02 Log (Heizung an oder aus) ====&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung on&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung set_off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung set_on&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung on&lt;br /&gt;
&lt;br /&gt;
=== Plot / Grafische Darstellung ===&lt;br /&gt;
Der RD-O meldet im Channel_01-Log die Zustände &amp;quot;rain&amp;quot; (für: es regnet) und &amp;quot;dry&amp;quot; (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:&lt;br /&gt;
&lt;br /&gt;
[[Datei:HM-Sen-RD-O_cut.jpg|Plot des HM-Sen-RD-O]]&lt;br /&gt;
&lt;br /&gt;
Und hier die dazugehörige Plot-Datei:&lt;br /&gt;
 set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
 set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
 set xdata time&lt;br /&gt;
 set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
 set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
 set title &#039;Regnet es: Ja/Nein&#039;&lt;br /&gt;
 set ytics (&amp;quot;Trocken&amp;quot; 0, &amp;quot;Regen&amp;quot; 1)&lt;br /&gt;
 set y2tics (&amp;quot;Trocken&amp;quot; 0, &amp;quot;Regen&amp;quot; 1)&lt;br /&gt;
 set grid&lt;br /&gt;
 set ylabel &amp;quot;&amp;quot;&lt;br /&gt;
 set y2label &amp;quot;&amp;quot;&lt;br /&gt;
 set yrange [-0.1:1.1]&lt;br /&gt;
 set y2range [-0.1:1.1]&lt;br /&gt;
 &lt;br /&gt;
 #FileLog 3::0:$fld[2]=~&amp;quot;rain&amp;quot;?1:0&lt;br /&gt;
 &lt;br /&gt;
 plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Regnet es?&#039; ls l0 lw 1 with steps&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;nicht regnet&amp;quot;. An einer plausibleren Darstellung wird gearbeitet.&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
=== getConfig ===&lt;br /&gt;
Anfangs (Mitte Dezember 2013) gab es noch ein Problem mit dem &#039;&#039;getConfig&#039;&#039;. Dieser Befehl wurde quittiert mit den Meldungen:&lt;br /&gt;
&lt;br /&gt;
 protState	CMDs_done_Errors:1&lt;br /&gt;
 ...&lt;br /&gt;
 state		RESPONSE TIMEOUT:RegisterRead&lt;br /&gt;
 &lt;br /&gt;
Andere Befehle (wie oben z.B. Heizung an/aus) wurden dagegen umgehend erfolgreich abgearbeitet.&lt;br /&gt;
&lt;br /&gt;
Dieses Problem ist mittlerweile gelöst, so dass der RD-O voll genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
=== Erst Minuten nach Regenende meldet der RD-O &amp;quot;dry&amp;quot; (also kein Regen mehr) ===&lt;br /&gt;
Das liegt zum einen daran, dass der auf der Sensorfläche befindliche Niederschlag erst einmal durch die interne Sensorheizung &amp;quot;verdampft&amp;quot; werden muss. Zum anderen ist der RD-O so eingestellt, dass er erst 5 Minuten nach Abtrocknen der Sensorfläche wieder den Zustand &amp;quot;dry&amp;quot; an FHEM meldet. Zuständig dafür ist das RD-O-Register &#039;&#039;highHoldTime&#039;&#039; im Channel &#039;&#039;&#039;01&#039;&#039;&#039;, 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: &lt;br /&gt;
:&amp;lt;code&amp;gt; set Regensensor_EsRegnet regSet highHoldTime 60&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Korrosion / eindringendes Wasser ===&lt;br /&gt;
In den Käuferbewertungen und im Kundenforum von ELV gibt es Meldungen, dass möglicherweise die Sensorfläche &amp;quot;korrodiert&amp;quot; bzw. der RD-O mit Wasser &amp;quot;voll läuft&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://www.elv.de/homematic-funk-regensensor-1.html Produktinfo]&lt;br /&gt;
* Bedienungsanleitung (PDF) {{DocLink|elv|/Assets/Produkte/13/1302/130220/Downloads/130220_hm_regensensor_um.pdf}}&lt;br /&gt;
* Datenblatt (PDF) {{DocLink|elv|/Assets/Produkte/13/1302/130220/Downloads/130220_hm_regensensor_data.pdf}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;br /&gt;
[[Kategorie:Regensensor]]&lt;/div&gt;</summary>
		<author><name>Burny4600</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-Sen-RD-O_Funk-Regensensor&amp;diff=33450</id>
		<title>HM-Sen-RD-O Funk-Regensensor</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-Sen-RD-O_Funk-Regensensor&amp;diff=33450"/>
		<updated>2020-07-05T14:20:21Z</updated>

		<summary type="html">&lt;p&gt;Burny4600: /* Konfiguration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Allgemeines ==&lt;br /&gt;
Der HM-Sen-RD-O (RD-O) ist ein 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.&lt;br /&gt;
&lt;br /&gt;
Er erkennt beginnenden Regen und kann über mit ihm [[Peering (HomeMatic)|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&amp;amp;nbsp;V; nicht im Lieferumfang) betrieben.&lt;br /&gt;
&lt;br /&gt;
Die eingebaute Heizung in der Sensorfläche soll Fehlmeldungen (Betauung, z.B. durch Nebel, bzw. Vereisung) vermeiden helfen.&lt;br /&gt;
&lt;br /&gt;
== Technische Daten ==&lt;br /&gt;
* Aktuelle Firmware: 1.4 (Stand Dezember 2013)&lt;br /&gt;
* Versorgungsspannung: 7,5–30 V DC&lt;br /&gt;
* Max. Stromaufnahme: 250 mA&lt;br /&gt;
* IP-Schutzart: IP44&lt;br /&gt;
* Leistungsaufnahme Ruhebetrieb: 0,4 W (ohne Sensorheizung)&lt;br /&gt;
* Leistungsaufnahme Sensorheizung: ca. 1 W&lt;br /&gt;
* Abmessungen (B x H x T): 80 x 82 x 55 mm&lt;br /&gt;
* Gewicht: 286 gr.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Betrieb mit FHEM ==&lt;br /&gt;
Mit Stand Dezember 2013 wird der RD-O von FHEM unterstützt (Ausnahme siehe &amp;quot;Probleme&amp;quot;). 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 p&#039;&#039;&#039;ai&#039;&#039;&#039;ren. Nun kann man das Device [[rename|umbenennen]]. Die Kanäle (siehe unten) werden dabei (leider) nicht automatisch mit umbenannt, dies kann aber durch entsprechende &#039;&#039;rename&#039;&#039;-Befehle von Hand nachgeholt werden (ggf. vorher prüfen, ob das Gerät ein &#039;&#039;set ... deviceRename ...&#039;&#039; anbietet; damit würden auch die Kanäle umbenannt). Danach ein &#039;&#039;save config&#039;&#039; und &#039;&#039;rereadcfg&#039;&#039; und weiter ...&lt;br /&gt;
&lt;br /&gt;
=== Geräte-Kanäle (Device-channels) ===&lt;br /&gt;
Der RD-O hat 2 Kanäle zusätzlich zum &amp;quot;Channel 00&amp;quot;, der das eigentliche Device darstellt.&lt;br /&gt;
* Channel 01, dieser enthält alles für die eigentliche Erkennung, ob es gerade regnet oder nicht&lt;br /&gt;
* Channel 02, über diesen kann das Verhalten der internen Heizung gesteuert werden&lt;br /&gt;
&lt;br /&gt;
==== Channel 00 ====&lt;br /&gt;
Die Register:&lt;br /&gt;
 list:        register | range              | peer     | description&lt;br /&gt;
   0: localResDis      |     literal        |          | local reset disable options:on,off&lt;br /&gt;
   0: pairCentral      |   0 to 16777215    |          | pairing to central&lt;br /&gt;
   0: transmDevTryMax  |   1 to 10          |          | max message re-transmit&lt;br /&gt;
&lt;br /&gt;
==== Channel 01 ====&lt;br /&gt;
&lt;br /&gt;
Die Register:&lt;br /&gt;
list:         register | range              | peer     | description&lt;br /&gt;
   1: cndTxThrhHi      |   0 to 3000mV      |          | threshold high condition&lt;br /&gt;
   1: cndTxThrhLo      |   0 to 3000mV      |          | threshold high condition&lt;br /&gt;
   1: eventFilterTimeB |   5 to 7620s       |          | event filter time&lt;br /&gt;
   1: evntRelFltTime   |   1 to 7620s       |          | event filter release time &lt;br /&gt;
   1: highHoldTime     |  60 to 7620s       |          | hold time on high state&lt;br /&gt;
   1: sign             |     literal        |          | signature (AES) options:off,on&lt;br /&gt;
   1: transmitTryMax   |   1 to 10          |          | max message re-transmit&lt;br /&gt;
   4: expectAES        |     literal        | required | expect AES options:off,on&lt;br /&gt;
   4: peerNeedsBurst   |     literal        | required | peer expects burst options:on,off&lt;br /&gt;
&lt;br /&gt;
==== Channel 02 ====&lt;br /&gt;
Z. Zt. sind keine Register verfügbar.&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration ===&lt;br /&gt;
Bei eingeschaltetem [[autocreate]] werden die erforderlichen Definitionen zum erkannten Sen-RD-O überwiegend selbstständig angelernt:&lt;br /&gt;
&lt;br /&gt;
 define Regensensor CUL_HM 20CE4B&lt;br /&gt;
 attr Regensensor .devInfo 040101&lt;br /&gt;
 attr Regensensor .stc 70&lt;br /&gt;
 attr Regensensor autoReadReg 4_reqStatus&lt;br /&gt;
 attr Regensensor firmware 1.4&lt;br /&gt;
 attr Regensensor model HM-Sen-RD-O&lt;br /&gt;
 attr Regensensor room CUL_HM&lt;br /&gt;
 attr Regensensor serialNr KEQ0117756&lt;br /&gt;
 attr Regensensor subType sensRain&lt;br /&gt;
 attr Regensensor webCmd getConfig&lt;br /&gt;
&lt;br /&gt;
 define FileLog_Regensensor FileLog /opt/fhem/log/Regensensor-%Y-%m.log Regensensor&lt;br /&gt;
 attr FileLog_Regensensor logtype text&lt;br /&gt;
 attr FileLog_Regensensor room CUL_HM&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # Channel 01 =&amp;gt; 20CE4B01 &lt;br /&gt;
 define Regensensor_EsRegnet CUL_HM 20CE4B01&lt;br /&gt;
 attr Regensensor_EsRegnet expert 1&lt;br /&gt;
 attr Regensensor_EsRegnet model HM-Sen-RD-O&lt;br /&gt;
 attr Regensensor_EsRegnet peerIDs 00000000,&lt;br /&gt;
 attr Regensensor_EsRegnet room CUL_HM&lt;br /&gt;
 &lt;br /&gt;
 define FileLog_Regensensor_EsRegnet FileLog /opt/fhem/log/Regensensor_EsRegnet-%Y-%m.log Regensensor_EsRegnet&lt;br /&gt;
 attr FileLog_Regensensor_EsRegnet logtype text&lt;br /&gt;
 attr FileLog_Regensensor_EsRegnet room CUL_HM&lt;br /&gt;
 &lt;br /&gt;
 define SVG_FileLog_Regensensor_EsRegnet SVG FileLog_Regensensor_EsRegnet:Regensensor:CURRENT&lt;br /&gt;
 attr SVG_FileLog_Regensensor_EsRegnet room CUL_HM&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # Channel 02 =&amp;gt; 20CE4B02&lt;br /&gt;
 define Regensensor_Heizung CUL_HM 20CE4B02&lt;br /&gt;
 attr Regensensor_Heizung expert 1&lt;br /&gt;
 attr Regensensor_Heizung model HM-Sen-RD-O&lt;br /&gt;
 attr Regensensor_Heizung peerIDs 00000000,&lt;br /&gt;
 attr Regensensor_Heizung room CUL_HM&lt;br /&gt;
&lt;br /&gt;
 define FileLog_Regensensor_Heizung FileLog /opt/fhem/log/Regensensor_Heizung-%Y-%m.log Regensensor_Heizung&lt;br /&gt;
 attr FileLog_Regensensor_Heizung logtype text&lt;br /&gt;
 attr FileLog_Regensensor_Heizung room CUL_HM&lt;br /&gt;
&lt;br /&gt;
=== Steuerung / Betrieb ===&lt;br /&gt;
Über die Veränderung der entsprechenden Register kann man das Verhalten des RD-O 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. &lt;br /&gt;
&lt;br /&gt;
Eine manuelle Heizungssteuerung erreicht man über den &#039;&#039;Channel 02&#039;&#039;:&lt;br /&gt;
Mit dem Befehl &lt;br /&gt;
:&amp;lt;code&amp;gt; set Regensensor_Heizung off&amp;lt;/code&amp;gt;&lt;br /&gt;
wird die Heizung aus- und durch&lt;br /&gt;
:&amp;lt;code&amp;gt; set Regensensor_Heizung on&amp;lt;/code&amp;gt;&lt;br /&gt;
wieder eingeschaltet. &lt;br /&gt;
&lt;br /&gt;
Eine einfache Heizungsautomatik ist ganz einfach über ein Attribut möglich:&lt;br /&gt;
:&amp;lt;code&amp;gt; attr Regensensor_Heizung param offAtPon,onAtRain&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;offAtPon&amp;lt;/code&amp;gt; schaltet die Heizung zwingend aus, wenn der (wieder) Sensor mit Spannung versorgt wird (nach einem Stromausfall). &lt;br /&gt;
&amp;lt;code&amp;gt;onAtRain&amp;lt;/code&amp;gt; schaltet die Heizung beim Status &#039;&#039;rain&#039;&#039; ein und beim Status &#039;&#039;dry&#039;&#039; wieder aus.&lt;br /&gt;
&lt;br /&gt;
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 (wenn nicht bereits durch das o.g. Attribut realisiert) ist ebenfalls sinnvoll, denn die Heizung sorgt für ein schnelleres Abtrocknen der Sensorfläche und somit eine zeitnahe Regenende-Erkennung.&lt;br /&gt;
&lt;br /&gt;
Hierzu kann beispielsweise folgendes in FHEM definiert werden:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt; define DoIf_RegenSensorHzgOnOff DOIF ([Aussen.ThermoHygro:temperature]&amp;lt;5 or [Regensensor_EsRegnet] eq &amp;quot;rain&amp;quot;) (set Regensensor_Heizung on) DOELSEIF ([Aussen.ThermoHygro:temperature]&amp;gt;6 and [Regensensor_EsRegnet] eq &amp;quot;dry&amp;quot;) (set Regensensor_Heizung  off)&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt; attr DoIf_RegenSensorHzgOnOff room Wetter&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Sensor-Heizung wird damit bei Temperaturen unter 5 °C &#039;&#039;&#039;oder&#039;&#039;&#039; bei erkanntem Regen eingeschaltet. Die Abschaltung der Heizung erfolgt, sobald die Temperatur über 6 °C beträgt &#039;&#039;&#039;und&#039;&#039;&#039; es trocken ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der RD-O reagiert bereits bei der Berührung der Sensorfläche mit einem Finger mit der Meldung &amp;quot;Es regnet&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
=== Log-Daten ===&lt;br /&gt;
Auszüge aus den Logs unmittelbar nach Anschluss der Spannungsversorgung und dem ersten Drücken der Anlerntaste am RD-O:&lt;br /&gt;
&lt;br /&gt;
==== Event monitor ====&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global UNDEFINED CUL_HM_HM_Sen_RD_O_20EC4B CUL_HM 20EC4B A1A02840020EC4B0000001400A74B45513031313730363770040101&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED CUL_HM_HM_Sen_RD_O_20EC4B&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED FileLog_CUL_HM_HM_Sen_RD_O_20EC4B&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global SAVE&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global UNDEFINED CUL_HM_HM_Sen_RD_O_20EC4B_Rain CUL_HM 20EC4B01&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED CUL_HM_HM_Sen_RD_O_20EC4B_Rain&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED FileLog_CUL_HM_HM_Sen_RD_O_20EC4B_Rain&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global SAVE&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global UNDEFINED CUL_HM_HM_Sen_RD_O_20EC4B_Heating CUL_HM 20EC4B02&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED CUL_HM_HM_Sen_RD_O_20EC4B_Heating&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED FileLog_CUL_HM_HM_Sen_RD_O_20EC4B_Heating&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global SAVE&lt;br /&gt;
 ... und kurz darauf ...&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; CUL_HM CUL_HM_HM_Sen_RD_O_20EC4B_Rain timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; CUL_HM CUL_HM_HM_Sen_RD_O_20EC4B_Rain dry&lt;br /&gt;
&lt;br /&gt;
==== FHEM-Log ====&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 3: CUL_HM Unknown device CUL_HM_HM_Sen_RD_O_20EC4B, please define it&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 2: autocreate: define CUL_HM_HM_Sen_RD_O_20EC4B CUL_HM 20EC4B A1A02840020EC4B0000001400A74B45513031313730363770040101&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 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&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 2: autocreate: define CUL_HM_HM_Sen_RD_O_20EC4B_Rain CUL_HM 20EC4B01&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 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&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 2: autocreate: define CUL_HM_HM_Sen_RD_O_20EC4B_Heating CUL_HM 20EC4B02&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 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&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 2: CUL_HM set CUL_HM_HM_Sen_RD_O_20EC4B getConfig&lt;br /&gt;
&lt;br /&gt;
==== Device-Logs ====&lt;br /&gt;
==== Channel 01 Log (Es regnet) ====&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet dry&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet rain&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet dry&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet rain&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet dry&lt;br /&gt;
&lt;br /&gt;
Am gezeigten log ist zu erkennen, dass der Sen-RD-O Zustandsänderungen genau einmal meldet und danach nicht wiederholt.&lt;br /&gt;
&lt;br /&gt;
==== Channel 02 Log (Heizung an oder aus) ====&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung on&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung set_off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung set_on&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung on&lt;br /&gt;
&lt;br /&gt;
=== Plot / Grafische Darstellung ===&lt;br /&gt;
Der RD-O meldet im Channel_01-Log die Zustände &amp;quot;rain&amp;quot; (für: es regnet) und &amp;quot;dry&amp;quot; (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:&lt;br /&gt;
&lt;br /&gt;
[[Datei:HM-Sen-RD-O_cut.jpg|Plot des HM-Sen-RD-O]]&lt;br /&gt;
&lt;br /&gt;
Und hier die dazugehörige Plot-Datei:&lt;br /&gt;
 set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
 set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
 set xdata time&lt;br /&gt;
 set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
 set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
 set title &#039;Regnet es: Ja/Nein&#039;&lt;br /&gt;
 set ytics (&amp;quot;Trocken&amp;quot; 0, &amp;quot;Regen&amp;quot; 1)&lt;br /&gt;
 set y2tics (&amp;quot;Trocken&amp;quot; 0, &amp;quot;Regen&amp;quot; 1)&lt;br /&gt;
 set grid&lt;br /&gt;
 set ylabel &amp;quot;&amp;quot;&lt;br /&gt;
 set y2label &amp;quot;&amp;quot;&lt;br /&gt;
 set yrange [-0.1:1.1]&lt;br /&gt;
 set y2range [-0.1:1.1]&lt;br /&gt;
 &lt;br /&gt;
 #FileLog 3::0:$fld[2]=~&amp;quot;rain&amp;quot;?1:0&lt;br /&gt;
 &lt;br /&gt;
 plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Regnet es?&#039; ls l0 lw 1 with steps&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;nicht regnet&amp;quot;. An einer plausibleren Darstellung wird gearbeitet.&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
=== getConfig ===&lt;br /&gt;
Anfangs (Mitte Dezember 2013) gab es noch ein Problem mit dem &#039;&#039;getConfig&#039;&#039;. Dieser Befehl wurde quittiert mit den Meldungen:&lt;br /&gt;
&lt;br /&gt;
 protState	CMDs_done_Errors:1&lt;br /&gt;
 ...&lt;br /&gt;
 state		RESPONSE TIMEOUT:RegisterRead&lt;br /&gt;
 &lt;br /&gt;
Andere Befehle (wie oben z.B. Heizung an/aus) wurden dagegen umgehend erfolgreich abgearbeitet.&lt;br /&gt;
&lt;br /&gt;
Dieses Problem ist mittlerweile gelöst, so dass der RD-O voll genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
=== Erst Minuten nach Regenende meldet der RD-O &amp;quot;dry&amp;quot; (also kein Regen mehr) ===&lt;br /&gt;
Das liegt zum einen daran, dass der auf der Sensorfläche befindliche Niederschlag erst einmal durch die interne Sensorheizung &amp;quot;verdampft&amp;quot; werden muss. Zum anderen ist der RD-O so eingestellt, dass er erst 5 Minuten nach Abtrocknen der Sensorfläche wieder den Zustand &amp;quot;dry&amp;quot; an FHEM meldet. Zuständig dafür ist das RD-O-Register &#039;&#039;highHoldTime&#039;&#039; im Channel &#039;&#039;&#039;01&#039;&#039;&#039;, 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: &lt;br /&gt;
:&amp;lt;code&amp;gt; set Regensensor_EsRegnet regSet highHoldTime 60&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Korrosion / eindringendes Wasser ===&lt;br /&gt;
In den Käuferbewertungen und im Kundenforum von ELV gibt es Meldungen, dass möglicherweise die Sensorfläche &amp;quot;korrodiert&amp;quot; bzw. der RD-O mit Wasser &amp;quot;voll läuft&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://www.elv.de/homematic-funk-regensensor-1.html Produktinfo]&lt;br /&gt;
* Bedienungsanleitung (PDF) {{DocLink|elv|/Assets/Produkte/13/1302/130220/Downloads/130220_hm_regensensor_um.pdf}}&lt;br /&gt;
* Datenblatt (PDF) {{DocLink|elv|/Assets/Produkte/13/1302/130220/Downloads/130220_hm_regensensor_data.pdf}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;br /&gt;
[[Kategorie:Regensensor]]&lt;/div&gt;</summary>
		<author><name>Burny4600</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-Sen-RD-O_Funk-Regensensor&amp;diff=33449</id>
		<title>HM-Sen-RD-O Funk-Regensensor</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-Sen-RD-O_Funk-Regensensor&amp;diff=33449"/>
		<updated>2020-07-05T14:19:07Z</updated>

		<summary type="html">&lt;p&gt;Burny4600: /* Konfiguration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Allgemeines ==&lt;br /&gt;
Der HM-Sen-RD-O (RD-O) ist ein 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.&lt;br /&gt;
&lt;br /&gt;
Er erkennt beginnenden Regen und kann über mit ihm [[Peering (HomeMatic)|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&amp;amp;nbsp;V; nicht im Lieferumfang) betrieben.&lt;br /&gt;
&lt;br /&gt;
Die eingebaute Heizung in der Sensorfläche soll Fehlmeldungen (Betauung, z.B. durch Nebel, bzw. Vereisung) vermeiden helfen.&lt;br /&gt;
&lt;br /&gt;
== Technische Daten ==&lt;br /&gt;
* Aktuelle Firmware: 1.4 (Stand Dezember 2013)&lt;br /&gt;
* Versorgungsspannung: 7,5–30 V DC&lt;br /&gt;
* Max. Stromaufnahme: 250 mA&lt;br /&gt;
* IP-Schutzart: IP44&lt;br /&gt;
* Leistungsaufnahme Ruhebetrieb: 0,4 W (ohne Sensorheizung)&lt;br /&gt;
* Leistungsaufnahme Sensorheizung: ca. 1 W&lt;br /&gt;
* Abmessungen (B x H x T): 80 x 82 x 55 mm&lt;br /&gt;
* Gewicht: 286 gr.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Betrieb mit FHEM ==&lt;br /&gt;
Mit Stand Dezember 2013 wird der RD-O von FHEM unterstützt (Ausnahme siehe &amp;quot;Probleme&amp;quot;). 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 p&#039;&#039;&#039;ai&#039;&#039;&#039;ren. Nun kann man das Device [[rename|umbenennen]]. Die Kanäle (siehe unten) werden dabei (leider) nicht automatisch mit umbenannt, dies kann aber durch entsprechende &#039;&#039;rename&#039;&#039;-Befehle von Hand nachgeholt werden (ggf. vorher prüfen, ob das Gerät ein &#039;&#039;set ... deviceRename ...&#039;&#039; anbietet; damit würden auch die Kanäle umbenannt). Danach ein &#039;&#039;save config&#039;&#039; und &#039;&#039;rereadcfg&#039;&#039; und weiter ...&lt;br /&gt;
&lt;br /&gt;
=== Geräte-Kanäle (Device-channels) ===&lt;br /&gt;
Der RD-O hat 2 Kanäle zusätzlich zum &amp;quot;Channel 00&amp;quot;, der das eigentliche Device darstellt.&lt;br /&gt;
* Channel 01, dieser enthält alles für die eigentliche Erkennung, ob es gerade regnet oder nicht&lt;br /&gt;
* Channel 02, über diesen kann das Verhalten der internen Heizung gesteuert werden&lt;br /&gt;
&lt;br /&gt;
==== Channel 00 ====&lt;br /&gt;
Die Register:&lt;br /&gt;
 list:        register | range              | peer     | description&lt;br /&gt;
   0: localResDis      |     literal        |          | local reset disable options:on,off&lt;br /&gt;
   0: pairCentral      |   0 to 16777215    |          | pairing to central&lt;br /&gt;
   0: transmDevTryMax  |   1 to 10          |          | max message re-transmit&lt;br /&gt;
&lt;br /&gt;
==== Channel 01 ====&lt;br /&gt;
&lt;br /&gt;
Die Register:&lt;br /&gt;
list:         register | range              | peer     | description&lt;br /&gt;
   1: cndTxThrhHi      |   0 to 3000mV      |          | threshold high condition&lt;br /&gt;
   1: cndTxThrhLo      |   0 to 3000mV      |          | threshold high condition&lt;br /&gt;
   1: eventFilterTimeB |   5 to 7620s       |          | event filter time&lt;br /&gt;
   1: evntRelFltTime   |   1 to 7620s       |          | event filter release time &lt;br /&gt;
   1: highHoldTime     |  60 to 7620s       |          | hold time on high state&lt;br /&gt;
   1: sign             |     literal        |          | signature (AES) options:off,on&lt;br /&gt;
   1: transmitTryMax   |   1 to 10          |          | max message re-transmit&lt;br /&gt;
   4: expectAES        |     literal        | required | expect AES options:off,on&lt;br /&gt;
   4: peerNeedsBurst   |     literal        | required | peer expects burst options:on,off&lt;br /&gt;
&lt;br /&gt;
==== Channel 02 ====&lt;br /&gt;
Z. Zt. sind keine Register verfügbar.&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration ===&lt;br /&gt;
Bei eingeschaltetem [[autocreate]] werden die erforderlichen Definitionen zum erkannten Sen-RD-O überwiegend selbstständig angelernt:&lt;br /&gt;
&lt;br /&gt;
 define Regensensor CUL_HM 20CE4B&lt;br /&gt;
 attr Regensensor .devInfo 040101&lt;br /&gt;
 attr Regensensor .stc 70&lt;br /&gt;
 attr Regensensor autoReadReg 4_reqStatus&lt;br /&gt;
 attr Regensensor firmware 1.4&lt;br /&gt;
 attr Regensensor model HM-Sen-RD-O&lt;br /&gt;
 attr Regensensor room CUL_HM&lt;br /&gt;
 attr Regensensor serialNr KEQ0117756&lt;br /&gt;
 attr Regensensor subType sensRain&lt;br /&gt;
 attr Regensensor webCmd getConfig&lt;br /&gt;
&lt;br /&gt;
 define FileLog_Regensensor FileLog /opt/fhem/log/Regensensor-%Y-%m.log Regensensor&lt;br /&gt;
 attr FileLog_Regensensor logtype text&lt;br /&gt;
 attr FileLog_Regensensor room CUL_HM&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # Channel 01 =&amp;gt; 20CE4B01 &lt;br /&gt;
 define Regensensor_EsRegnet CUL_HM 20CE4B01&lt;br /&gt;
 attr Regensensor_EsRegnet expert 1&lt;br /&gt;
 attr Regensensor_EsRegnet model HM-Sen-RD-O&lt;br /&gt;
 attr Regensensor_EsRegnet peerIDs 00000000,&lt;br /&gt;
 attr Regensensor_EsRegnet room CUL_HM&lt;br /&gt;
 define FileLog_Regensensor_EsRegnet FileLog /opt/fhem/log/Regensensor_EsRegnet-%Y-%m.log Regensensor_EsRegnet&lt;br /&gt;
 attr FileLog_Regensensor_EsRegnet logtype text&lt;br /&gt;
 attr FileLog_Regensensor_EsRegnet room CUL_HM&lt;br /&gt;
 &lt;br /&gt;
define SVG_FileLog_Regensensor_EsRegnet SVG FileLog_Regensensor_EsRegnet:Regensensor:CURRENT&lt;br /&gt;
attr SVG_FileLog_Regensensor_EsRegnet room CUL_HM&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # Channel 02 =&amp;gt; 20CE4B02&lt;br /&gt;
 define Regensensor_Heizung CUL_HM 20CE4B02&lt;br /&gt;
 attr Regensensor_Heizung expert 1&lt;br /&gt;
 attr Regensensor_Heizung model HM-Sen-RD-O&lt;br /&gt;
 attr Regensensor_Heizung peerIDs 00000000,&lt;br /&gt;
 attr Regensensor_Heizung room CUL_HM&lt;br /&gt;
&lt;br /&gt;
 define FileLog_Regensensor_Heizung FileLog /opt/fhem/log/Regensensor_Heizung-%Y-%m.log Regensensor_Heizung&lt;br /&gt;
 attr FileLog_Regensensor_Heizung logtype text&lt;br /&gt;
 attr FileLog_Regensensor_Heizung room CUL_HM&lt;br /&gt;
&lt;br /&gt;
=== Steuerung / Betrieb ===&lt;br /&gt;
Über die Veränderung der entsprechenden Register kann man das Verhalten des RD-O 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. &lt;br /&gt;
&lt;br /&gt;
Eine manuelle Heizungssteuerung erreicht man über den &#039;&#039;Channel 02&#039;&#039;:&lt;br /&gt;
Mit dem Befehl &lt;br /&gt;
:&amp;lt;code&amp;gt; set Regensensor_Heizung off&amp;lt;/code&amp;gt;&lt;br /&gt;
wird die Heizung aus- und durch&lt;br /&gt;
:&amp;lt;code&amp;gt; set Regensensor_Heizung on&amp;lt;/code&amp;gt;&lt;br /&gt;
wieder eingeschaltet. &lt;br /&gt;
&lt;br /&gt;
Eine einfache Heizungsautomatik ist ganz einfach über ein Attribut möglich:&lt;br /&gt;
:&amp;lt;code&amp;gt; attr Regensensor_Heizung param offAtPon,onAtRain&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;offAtPon&amp;lt;/code&amp;gt; schaltet die Heizung zwingend aus, wenn der (wieder) Sensor mit Spannung versorgt wird (nach einem Stromausfall). &lt;br /&gt;
&amp;lt;code&amp;gt;onAtRain&amp;lt;/code&amp;gt; schaltet die Heizung beim Status &#039;&#039;rain&#039;&#039; ein und beim Status &#039;&#039;dry&#039;&#039; wieder aus.&lt;br /&gt;
&lt;br /&gt;
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 (wenn nicht bereits durch das o.g. Attribut realisiert) ist ebenfalls sinnvoll, denn die Heizung sorgt für ein schnelleres Abtrocknen der Sensorfläche und somit eine zeitnahe Regenende-Erkennung.&lt;br /&gt;
&lt;br /&gt;
Hierzu kann beispielsweise folgendes in FHEM definiert werden:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt; define DoIf_RegenSensorHzgOnOff DOIF ([Aussen.ThermoHygro:temperature]&amp;lt;5 or [Regensensor_EsRegnet] eq &amp;quot;rain&amp;quot;) (set Regensensor_Heizung on) DOELSEIF ([Aussen.ThermoHygro:temperature]&amp;gt;6 and [Regensensor_EsRegnet] eq &amp;quot;dry&amp;quot;) (set Regensensor_Heizung  off)&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt; attr DoIf_RegenSensorHzgOnOff room Wetter&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Sensor-Heizung wird damit bei Temperaturen unter 5 °C &#039;&#039;&#039;oder&#039;&#039;&#039; bei erkanntem Regen eingeschaltet. Die Abschaltung der Heizung erfolgt, sobald die Temperatur über 6 °C beträgt &#039;&#039;&#039;und&#039;&#039;&#039; es trocken ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der RD-O reagiert bereits bei der Berührung der Sensorfläche mit einem Finger mit der Meldung &amp;quot;Es regnet&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
=== Log-Daten ===&lt;br /&gt;
Auszüge aus den Logs unmittelbar nach Anschluss der Spannungsversorgung und dem ersten Drücken der Anlerntaste am RD-O:&lt;br /&gt;
&lt;br /&gt;
==== Event monitor ====&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global UNDEFINED CUL_HM_HM_Sen_RD_O_20EC4B CUL_HM 20EC4B A1A02840020EC4B0000001400A74B45513031313730363770040101&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED CUL_HM_HM_Sen_RD_O_20EC4B&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED FileLog_CUL_HM_HM_Sen_RD_O_20EC4B&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global SAVE&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global UNDEFINED CUL_HM_HM_Sen_RD_O_20EC4B_Rain CUL_HM 20EC4B01&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED CUL_HM_HM_Sen_RD_O_20EC4B_Rain&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED FileLog_CUL_HM_HM_Sen_RD_O_20EC4B_Rain&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global SAVE&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global UNDEFINED CUL_HM_HM_Sen_RD_O_20EC4B_Heating CUL_HM 20EC4B02&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED CUL_HM_HM_Sen_RD_O_20EC4B_Heating&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED FileLog_CUL_HM_HM_Sen_RD_O_20EC4B_Heating&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global SAVE&lt;br /&gt;
 ... und kurz darauf ...&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; CUL_HM CUL_HM_HM_Sen_RD_O_20EC4B_Rain timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; CUL_HM CUL_HM_HM_Sen_RD_O_20EC4B_Rain dry&lt;br /&gt;
&lt;br /&gt;
==== FHEM-Log ====&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 3: CUL_HM Unknown device CUL_HM_HM_Sen_RD_O_20EC4B, please define it&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 2: autocreate: define CUL_HM_HM_Sen_RD_O_20EC4B CUL_HM 20EC4B A1A02840020EC4B0000001400A74B45513031313730363770040101&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 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&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 2: autocreate: define CUL_HM_HM_Sen_RD_O_20EC4B_Rain CUL_HM 20EC4B01&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 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&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 2: autocreate: define CUL_HM_HM_Sen_RD_O_20EC4B_Heating CUL_HM 20EC4B02&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 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&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 2: CUL_HM set CUL_HM_HM_Sen_RD_O_20EC4B getConfig&lt;br /&gt;
&lt;br /&gt;
==== Device-Logs ====&lt;br /&gt;
==== Channel 01 Log (Es regnet) ====&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet dry&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet rain&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet dry&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet rain&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet dry&lt;br /&gt;
&lt;br /&gt;
Am gezeigten log ist zu erkennen, dass der Sen-RD-O Zustandsänderungen genau einmal meldet und danach nicht wiederholt.&lt;br /&gt;
&lt;br /&gt;
==== Channel 02 Log (Heizung an oder aus) ====&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung on&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung set_off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung set_on&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung on&lt;br /&gt;
&lt;br /&gt;
=== Plot / Grafische Darstellung ===&lt;br /&gt;
Der RD-O meldet im Channel_01-Log die Zustände &amp;quot;rain&amp;quot; (für: es regnet) und &amp;quot;dry&amp;quot; (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:&lt;br /&gt;
&lt;br /&gt;
[[Datei:HM-Sen-RD-O_cut.jpg|Plot des HM-Sen-RD-O]]&lt;br /&gt;
&lt;br /&gt;
Und hier die dazugehörige Plot-Datei:&lt;br /&gt;
 set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
 set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
 set xdata time&lt;br /&gt;
 set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
 set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
 set title &#039;Regnet es: Ja/Nein&#039;&lt;br /&gt;
 set ytics (&amp;quot;Trocken&amp;quot; 0, &amp;quot;Regen&amp;quot; 1)&lt;br /&gt;
 set y2tics (&amp;quot;Trocken&amp;quot; 0, &amp;quot;Regen&amp;quot; 1)&lt;br /&gt;
 set grid&lt;br /&gt;
 set ylabel &amp;quot;&amp;quot;&lt;br /&gt;
 set y2label &amp;quot;&amp;quot;&lt;br /&gt;
 set yrange [-0.1:1.1]&lt;br /&gt;
 set y2range [-0.1:1.1]&lt;br /&gt;
 &lt;br /&gt;
 #FileLog 3::0:$fld[2]=~&amp;quot;rain&amp;quot;?1:0&lt;br /&gt;
 &lt;br /&gt;
 plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Regnet es?&#039; ls l0 lw 1 with steps&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;nicht regnet&amp;quot;. An einer plausibleren Darstellung wird gearbeitet.&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
=== getConfig ===&lt;br /&gt;
Anfangs (Mitte Dezember 2013) gab es noch ein Problem mit dem &#039;&#039;getConfig&#039;&#039;. Dieser Befehl wurde quittiert mit den Meldungen:&lt;br /&gt;
&lt;br /&gt;
 protState	CMDs_done_Errors:1&lt;br /&gt;
 ...&lt;br /&gt;
 state		RESPONSE TIMEOUT:RegisterRead&lt;br /&gt;
 &lt;br /&gt;
Andere Befehle (wie oben z.B. Heizung an/aus) wurden dagegen umgehend erfolgreich abgearbeitet.&lt;br /&gt;
&lt;br /&gt;
Dieses Problem ist mittlerweile gelöst, so dass der RD-O voll genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
=== Erst Minuten nach Regenende meldet der RD-O &amp;quot;dry&amp;quot; (also kein Regen mehr) ===&lt;br /&gt;
Das liegt zum einen daran, dass der auf der Sensorfläche befindliche Niederschlag erst einmal durch die interne Sensorheizung &amp;quot;verdampft&amp;quot; werden muss. Zum anderen ist der RD-O so eingestellt, dass er erst 5 Minuten nach Abtrocknen der Sensorfläche wieder den Zustand &amp;quot;dry&amp;quot; an FHEM meldet. Zuständig dafür ist das RD-O-Register &#039;&#039;highHoldTime&#039;&#039; im Channel &#039;&#039;&#039;01&#039;&#039;&#039;, 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: &lt;br /&gt;
:&amp;lt;code&amp;gt; set Regensensor_EsRegnet regSet highHoldTime 60&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Korrosion / eindringendes Wasser ===&lt;br /&gt;
In den Käuferbewertungen und im Kundenforum von ELV gibt es Meldungen, dass möglicherweise die Sensorfläche &amp;quot;korrodiert&amp;quot; bzw. der RD-O mit Wasser &amp;quot;voll läuft&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://www.elv.de/homematic-funk-regensensor-1.html Produktinfo]&lt;br /&gt;
* Bedienungsanleitung (PDF) {{DocLink|elv|/Assets/Produkte/13/1302/130220/Downloads/130220_hm_regensensor_um.pdf}}&lt;br /&gt;
* Datenblatt (PDF) {{DocLink|elv|/Assets/Produkte/13/1302/130220/Downloads/130220_hm_regensensor_data.pdf}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;br /&gt;
[[Kategorie:Regensensor]]&lt;/div&gt;</summary>
		<author><name>Burny4600</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-Sen-RD-O_Funk-Regensensor&amp;diff=33448</id>
		<title>HM-Sen-RD-O Funk-Regensensor</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-Sen-RD-O_Funk-Regensensor&amp;diff=33448"/>
		<updated>2020-07-05T14:18:07Z</updated>

		<summary type="html">&lt;p&gt;Burny4600: /* Channel 01 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Allgemeines ==&lt;br /&gt;
Der HM-Sen-RD-O (RD-O) ist ein 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.&lt;br /&gt;
&lt;br /&gt;
Er erkennt beginnenden Regen und kann über mit ihm [[Peering (HomeMatic)|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&amp;amp;nbsp;V; nicht im Lieferumfang) betrieben.&lt;br /&gt;
&lt;br /&gt;
Die eingebaute Heizung in der Sensorfläche soll Fehlmeldungen (Betauung, z.B. durch Nebel, bzw. Vereisung) vermeiden helfen.&lt;br /&gt;
&lt;br /&gt;
== Technische Daten ==&lt;br /&gt;
* Aktuelle Firmware: 1.4 (Stand Dezember 2013)&lt;br /&gt;
* Versorgungsspannung: 7,5–30 V DC&lt;br /&gt;
* Max. Stromaufnahme: 250 mA&lt;br /&gt;
* IP-Schutzart: IP44&lt;br /&gt;
* Leistungsaufnahme Ruhebetrieb: 0,4 W (ohne Sensorheizung)&lt;br /&gt;
* Leistungsaufnahme Sensorheizung: ca. 1 W&lt;br /&gt;
* Abmessungen (B x H x T): 80 x 82 x 55 mm&lt;br /&gt;
* Gewicht: 286 gr.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Betrieb mit FHEM ==&lt;br /&gt;
Mit Stand Dezember 2013 wird der RD-O von FHEM unterstützt (Ausnahme siehe &amp;quot;Probleme&amp;quot;). 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 p&#039;&#039;&#039;ai&#039;&#039;&#039;ren. Nun kann man das Device [[rename|umbenennen]]. Die Kanäle (siehe unten) werden dabei (leider) nicht automatisch mit umbenannt, dies kann aber durch entsprechende &#039;&#039;rename&#039;&#039;-Befehle von Hand nachgeholt werden (ggf. vorher prüfen, ob das Gerät ein &#039;&#039;set ... deviceRename ...&#039;&#039; anbietet; damit würden auch die Kanäle umbenannt). Danach ein &#039;&#039;save config&#039;&#039; und &#039;&#039;rereadcfg&#039;&#039; und weiter ...&lt;br /&gt;
&lt;br /&gt;
=== Geräte-Kanäle (Device-channels) ===&lt;br /&gt;
Der RD-O hat 2 Kanäle zusätzlich zum &amp;quot;Channel 00&amp;quot;, der das eigentliche Device darstellt.&lt;br /&gt;
* Channel 01, dieser enthält alles für die eigentliche Erkennung, ob es gerade regnet oder nicht&lt;br /&gt;
* Channel 02, über diesen kann das Verhalten der internen Heizung gesteuert werden&lt;br /&gt;
&lt;br /&gt;
==== Channel 00 ====&lt;br /&gt;
Die Register:&lt;br /&gt;
 list:        register | range              | peer     | description&lt;br /&gt;
   0: localResDis      |     literal        |          | local reset disable options:on,off&lt;br /&gt;
   0: pairCentral      |   0 to 16777215    |          | pairing to central&lt;br /&gt;
   0: transmDevTryMax  |   1 to 10          |          | max message re-transmit&lt;br /&gt;
&lt;br /&gt;
==== Channel 01 ====&lt;br /&gt;
&lt;br /&gt;
Die Register:&lt;br /&gt;
list:         register | range              | peer     | description&lt;br /&gt;
   1: cndTxThrhHi      |   0 to 3000mV      |          | threshold high condition&lt;br /&gt;
   1: cndTxThrhLo      |   0 to 3000mV      |          | threshold high condition&lt;br /&gt;
   1: eventFilterTimeB |   5 to 7620s       |          | event filter time&lt;br /&gt;
   1: evntRelFltTime   |   1 to 7620s       |          | event filter release time &lt;br /&gt;
   1: highHoldTime     |  60 to 7620s       |          | hold time on high state&lt;br /&gt;
   1: sign             |     literal        |          | signature (AES) options:off,on&lt;br /&gt;
   1: transmitTryMax   |   1 to 10          |          | max message re-transmit&lt;br /&gt;
   4: expectAES        |     literal        | required | expect AES options:off,on&lt;br /&gt;
   4: peerNeedsBurst   |     literal        | required | peer expects burst options:on,off&lt;br /&gt;
&lt;br /&gt;
==== Channel 02 ====&lt;br /&gt;
Z. Zt. sind keine Register verfügbar.&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration ===&lt;br /&gt;
Bei eingeschaltetem [[autocreate]] werden die erforderlichen Definitionen zum erkannten Sen-RD-O überwiegend selbstständig angelernt:&lt;br /&gt;
&lt;br /&gt;
 define Regensensor CUL_HM 20CE4B&lt;br /&gt;
 attr Regensensor .devInfo 040101&lt;br /&gt;
 attr Regensensor .stc 70&lt;br /&gt;
 attr Regensensor autoReadReg 4_reqStatus&lt;br /&gt;
 attr Regensensor firmware 1.4&lt;br /&gt;
 attr Regensensor model HM-Sen-RD-O&lt;br /&gt;
 attr Regensensor room CUL_HM&lt;br /&gt;
 attr Regensensor serialNr KEQ0117756&lt;br /&gt;
 attr Regensensor subType sensRain&lt;br /&gt;
 attr Regensensor webCmd getConfig&lt;br /&gt;
 define FileLog_Regensensor FileLog /opt/fhem/log/Regensensor-%Y-%m.log Regensensor&lt;br /&gt;
 attr FileLog_Regensensor logtype text&lt;br /&gt;
 attr FileLog_Regensensor room CUL_HM&lt;br /&gt;
&lt;br /&gt;
 # Channel 01 =&amp;gt; 20CE4B01 &lt;br /&gt;
 define Regensensor_EsRegnet CUL_HM 20CE4B01&lt;br /&gt;
 attr Regensensor_EsRegnet expert 1&lt;br /&gt;
 attr Regensensor_EsRegnet model HM-Sen-RD-O&lt;br /&gt;
 attr Regensensor_EsRegnet peerIDs 00000000,&lt;br /&gt;
 attr Regensensor_EsRegnet room CUL_HM&lt;br /&gt;
 define FileLog_Regensensor_EsRegnet FileLog /opt/fhem/log/Regensensor_EsRegnet-%Y-%m.log Regensensor_EsRegnet&lt;br /&gt;
 attr FileLog_Regensensor_EsRegnet logtype text&lt;br /&gt;
 attr FileLog_Regensensor_EsRegnet room CUL_HM&lt;br /&gt;
 define SVG_FileLog_Regensensor_EsRegnet SVG FileLog_Regensensor_EsRegnet:Regensensor:CURRENT&lt;br /&gt;
 attr SVG_FileLog_Regensensor_EsRegnet room CUL_HM&lt;br /&gt;
&lt;br /&gt;
 # Channel 02 =&amp;gt; 20CE4B02&lt;br /&gt;
 define Regensensor_Heizung CUL_HM 20CE4B02&lt;br /&gt;
 attr Regensensor_Heizung expert 1&lt;br /&gt;
 attr Regensensor_Heizung model HM-Sen-RD-O&lt;br /&gt;
 attr Regensensor_Heizung peerIDs 00000000,&lt;br /&gt;
 attr Regensensor_Heizung room CUL_HM&lt;br /&gt;
 define FileLog_Regensensor_Heizung FileLog /opt/fhem/log/Regensensor_Heizung-%Y-%m.log Regensensor_Heizung&lt;br /&gt;
 attr FileLog_Regensensor_Heizung logtype text&lt;br /&gt;
 attr FileLog_Regensensor_Heizung room CUL_HM&lt;br /&gt;
&lt;br /&gt;
=== Steuerung / Betrieb ===&lt;br /&gt;
Über die Veränderung der entsprechenden Register kann man das Verhalten des RD-O 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. &lt;br /&gt;
&lt;br /&gt;
Eine manuelle Heizungssteuerung erreicht man über den &#039;&#039;Channel 02&#039;&#039;:&lt;br /&gt;
Mit dem Befehl &lt;br /&gt;
:&amp;lt;code&amp;gt; set Regensensor_Heizung off&amp;lt;/code&amp;gt;&lt;br /&gt;
wird die Heizung aus- und durch&lt;br /&gt;
:&amp;lt;code&amp;gt; set Regensensor_Heizung on&amp;lt;/code&amp;gt;&lt;br /&gt;
wieder eingeschaltet. &lt;br /&gt;
&lt;br /&gt;
Eine einfache Heizungsautomatik ist ganz einfach über ein Attribut möglich:&lt;br /&gt;
:&amp;lt;code&amp;gt; attr Regensensor_Heizung param offAtPon,onAtRain&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;offAtPon&amp;lt;/code&amp;gt; schaltet die Heizung zwingend aus, wenn der (wieder) Sensor mit Spannung versorgt wird (nach einem Stromausfall). &lt;br /&gt;
&amp;lt;code&amp;gt;onAtRain&amp;lt;/code&amp;gt; schaltet die Heizung beim Status &#039;&#039;rain&#039;&#039; ein und beim Status &#039;&#039;dry&#039;&#039; wieder aus.&lt;br /&gt;
&lt;br /&gt;
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 (wenn nicht bereits durch das o.g. Attribut realisiert) ist ebenfalls sinnvoll, denn die Heizung sorgt für ein schnelleres Abtrocknen der Sensorfläche und somit eine zeitnahe Regenende-Erkennung.&lt;br /&gt;
&lt;br /&gt;
Hierzu kann beispielsweise folgendes in FHEM definiert werden:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt; define DoIf_RegenSensorHzgOnOff DOIF ([Aussen.ThermoHygro:temperature]&amp;lt;5 or [Regensensor_EsRegnet] eq &amp;quot;rain&amp;quot;) (set Regensensor_Heizung on) DOELSEIF ([Aussen.ThermoHygro:temperature]&amp;gt;6 and [Regensensor_EsRegnet] eq &amp;quot;dry&amp;quot;) (set Regensensor_Heizung  off)&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt; attr DoIf_RegenSensorHzgOnOff room Wetter&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Sensor-Heizung wird damit bei Temperaturen unter 5 °C &#039;&#039;&#039;oder&#039;&#039;&#039; bei erkanntem Regen eingeschaltet. Die Abschaltung der Heizung erfolgt, sobald die Temperatur über 6 °C beträgt &#039;&#039;&#039;und&#039;&#039;&#039; es trocken ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der RD-O reagiert bereits bei der Berührung der Sensorfläche mit einem Finger mit der Meldung &amp;quot;Es regnet&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
=== Log-Daten ===&lt;br /&gt;
Auszüge aus den Logs unmittelbar nach Anschluss der Spannungsversorgung und dem ersten Drücken der Anlerntaste am RD-O:&lt;br /&gt;
&lt;br /&gt;
==== Event monitor ====&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global UNDEFINED CUL_HM_HM_Sen_RD_O_20EC4B CUL_HM 20EC4B A1A02840020EC4B0000001400A74B45513031313730363770040101&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED CUL_HM_HM_Sen_RD_O_20EC4B&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED FileLog_CUL_HM_HM_Sen_RD_O_20EC4B&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global SAVE&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global UNDEFINED CUL_HM_HM_Sen_RD_O_20EC4B_Rain CUL_HM 20EC4B01&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED CUL_HM_HM_Sen_RD_O_20EC4B_Rain&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED FileLog_CUL_HM_HM_Sen_RD_O_20EC4B_Rain&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global SAVE&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global UNDEFINED CUL_HM_HM_Sen_RD_O_20EC4B_Heating CUL_HM 20EC4B02&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED CUL_HM_HM_Sen_RD_O_20EC4B_Heating&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED FileLog_CUL_HM_HM_Sen_RD_O_20EC4B_Heating&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global SAVE&lt;br /&gt;
 ... und kurz darauf ...&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; CUL_HM CUL_HM_HM_Sen_RD_O_20EC4B_Rain timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; CUL_HM CUL_HM_HM_Sen_RD_O_20EC4B_Rain dry&lt;br /&gt;
&lt;br /&gt;
==== FHEM-Log ====&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 3: CUL_HM Unknown device CUL_HM_HM_Sen_RD_O_20EC4B, please define it&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 2: autocreate: define CUL_HM_HM_Sen_RD_O_20EC4B CUL_HM 20EC4B A1A02840020EC4B0000001400A74B45513031313730363770040101&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 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&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 2: autocreate: define CUL_HM_HM_Sen_RD_O_20EC4B_Rain CUL_HM 20EC4B01&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 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&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 2: autocreate: define CUL_HM_HM_Sen_RD_O_20EC4B_Heating CUL_HM 20EC4B02&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 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&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 2: CUL_HM set CUL_HM_HM_Sen_RD_O_20EC4B getConfig&lt;br /&gt;
&lt;br /&gt;
==== Device-Logs ====&lt;br /&gt;
==== Channel 01 Log (Es regnet) ====&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet dry&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet rain&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet dry&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet rain&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet dry&lt;br /&gt;
&lt;br /&gt;
Am gezeigten log ist zu erkennen, dass der Sen-RD-O Zustandsänderungen genau einmal meldet und danach nicht wiederholt.&lt;br /&gt;
&lt;br /&gt;
==== Channel 02 Log (Heizung an oder aus) ====&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung on&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung set_off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung set_on&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung on&lt;br /&gt;
&lt;br /&gt;
=== Plot / Grafische Darstellung ===&lt;br /&gt;
Der RD-O meldet im Channel_01-Log die Zustände &amp;quot;rain&amp;quot; (für: es regnet) und &amp;quot;dry&amp;quot; (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:&lt;br /&gt;
&lt;br /&gt;
[[Datei:HM-Sen-RD-O_cut.jpg|Plot des HM-Sen-RD-O]]&lt;br /&gt;
&lt;br /&gt;
Und hier die dazugehörige Plot-Datei:&lt;br /&gt;
 set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
 set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
 set xdata time&lt;br /&gt;
 set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
 set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
 set title &#039;Regnet es: Ja/Nein&#039;&lt;br /&gt;
 set ytics (&amp;quot;Trocken&amp;quot; 0, &amp;quot;Regen&amp;quot; 1)&lt;br /&gt;
 set y2tics (&amp;quot;Trocken&amp;quot; 0, &amp;quot;Regen&amp;quot; 1)&lt;br /&gt;
 set grid&lt;br /&gt;
 set ylabel &amp;quot;&amp;quot;&lt;br /&gt;
 set y2label &amp;quot;&amp;quot;&lt;br /&gt;
 set yrange [-0.1:1.1]&lt;br /&gt;
 set y2range [-0.1:1.1]&lt;br /&gt;
 &lt;br /&gt;
 #FileLog 3::0:$fld[2]=~&amp;quot;rain&amp;quot;?1:0&lt;br /&gt;
 &lt;br /&gt;
 plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Regnet es?&#039; ls l0 lw 1 with steps&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;nicht regnet&amp;quot;. An einer plausibleren Darstellung wird gearbeitet.&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
=== getConfig ===&lt;br /&gt;
Anfangs (Mitte Dezember 2013) gab es noch ein Problem mit dem &#039;&#039;getConfig&#039;&#039;. Dieser Befehl wurde quittiert mit den Meldungen:&lt;br /&gt;
&lt;br /&gt;
 protState	CMDs_done_Errors:1&lt;br /&gt;
 ...&lt;br /&gt;
 state		RESPONSE TIMEOUT:RegisterRead&lt;br /&gt;
 &lt;br /&gt;
Andere Befehle (wie oben z.B. Heizung an/aus) wurden dagegen umgehend erfolgreich abgearbeitet.&lt;br /&gt;
&lt;br /&gt;
Dieses Problem ist mittlerweile gelöst, so dass der RD-O voll genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
=== Erst Minuten nach Regenende meldet der RD-O &amp;quot;dry&amp;quot; (also kein Regen mehr) ===&lt;br /&gt;
Das liegt zum einen daran, dass der auf der Sensorfläche befindliche Niederschlag erst einmal durch die interne Sensorheizung &amp;quot;verdampft&amp;quot; werden muss. Zum anderen ist der RD-O so eingestellt, dass er erst 5 Minuten nach Abtrocknen der Sensorfläche wieder den Zustand &amp;quot;dry&amp;quot; an FHEM meldet. Zuständig dafür ist das RD-O-Register &#039;&#039;highHoldTime&#039;&#039; im Channel &#039;&#039;&#039;01&#039;&#039;&#039;, 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: &lt;br /&gt;
:&amp;lt;code&amp;gt; set Regensensor_EsRegnet regSet highHoldTime 60&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Korrosion / eindringendes Wasser ===&lt;br /&gt;
In den Käuferbewertungen und im Kundenforum von ELV gibt es Meldungen, dass möglicherweise die Sensorfläche &amp;quot;korrodiert&amp;quot; bzw. der RD-O mit Wasser &amp;quot;voll läuft&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://www.elv.de/homematic-funk-regensensor-1.html Produktinfo]&lt;br /&gt;
* Bedienungsanleitung (PDF) {{DocLink|elv|/Assets/Produkte/13/1302/130220/Downloads/130220_hm_regensensor_um.pdf}}&lt;br /&gt;
* Datenblatt (PDF) {{DocLink|elv|/Assets/Produkte/13/1302/130220/Downloads/130220_hm_regensensor_data.pdf}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;br /&gt;
[[Kategorie:Regensensor]]&lt;/div&gt;</summary>
		<author><name>Burny4600</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-Sen-RD-O_Funk-Regensensor&amp;diff=33447</id>
		<title>HM-Sen-RD-O Funk-Regensensor</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-Sen-RD-O_Funk-Regensensor&amp;diff=33447"/>
		<updated>2020-07-05T14:09:49Z</updated>

		<summary type="html">&lt;p&gt;Burny4600: /* Konfiguration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Allgemeines ==&lt;br /&gt;
Der HM-Sen-RD-O (RD-O) ist ein 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.&lt;br /&gt;
&lt;br /&gt;
Er erkennt beginnenden Regen und kann über mit ihm [[Peering (HomeMatic)|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&amp;amp;nbsp;V; nicht im Lieferumfang) betrieben.&lt;br /&gt;
&lt;br /&gt;
Die eingebaute Heizung in der Sensorfläche soll Fehlmeldungen (Betauung, z.B. durch Nebel, bzw. Vereisung) vermeiden helfen.&lt;br /&gt;
&lt;br /&gt;
== Technische Daten ==&lt;br /&gt;
* Aktuelle Firmware: 1.4 (Stand Dezember 2013)&lt;br /&gt;
* Versorgungsspannung: 7,5–30 V DC&lt;br /&gt;
* Max. Stromaufnahme: 250 mA&lt;br /&gt;
* IP-Schutzart: IP44&lt;br /&gt;
* Leistungsaufnahme Ruhebetrieb: 0,4 W (ohne Sensorheizung)&lt;br /&gt;
* Leistungsaufnahme Sensorheizung: ca. 1 W&lt;br /&gt;
* Abmessungen (B x H x T): 80 x 82 x 55 mm&lt;br /&gt;
* Gewicht: 286 gr.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Betrieb mit FHEM ==&lt;br /&gt;
Mit Stand Dezember 2013 wird der RD-O von FHEM unterstützt (Ausnahme siehe &amp;quot;Probleme&amp;quot;). 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 p&#039;&#039;&#039;ai&#039;&#039;&#039;ren. Nun kann man das Device [[rename|umbenennen]]. Die Kanäle (siehe unten) werden dabei (leider) nicht automatisch mit umbenannt, dies kann aber durch entsprechende &#039;&#039;rename&#039;&#039;-Befehle von Hand nachgeholt werden (ggf. vorher prüfen, ob das Gerät ein &#039;&#039;set ... deviceRename ...&#039;&#039; anbietet; damit würden auch die Kanäle umbenannt). Danach ein &#039;&#039;save config&#039;&#039; und &#039;&#039;rereadcfg&#039;&#039; und weiter ...&lt;br /&gt;
&lt;br /&gt;
=== Geräte-Kanäle (Device-channels) ===&lt;br /&gt;
Der RD-O hat 2 Kanäle zusätzlich zum &amp;quot;Channel 00&amp;quot;, der das eigentliche Device darstellt.&lt;br /&gt;
* Channel 01, dieser enthält alles für die eigentliche Erkennung, ob es gerade regnet oder nicht&lt;br /&gt;
* Channel 02, über diesen kann das Verhalten der internen Heizung gesteuert werden&lt;br /&gt;
&lt;br /&gt;
==== Channel 00 ====&lt;br /&gt;
Die Register:&lt;br /&gt;
 list:        register | range              | peer     | description&lt;br /&gt;
   0: localResDis      |     literal        |          | local reset disable options:on,off&lt;br /&gt;
   0: pairCentral      |   0 to 16777215    |          | pairing to central&lt;br /&gt;
   0: transmDevTryMax  |   1 to 10          |          | max message re-transmit&lt;br /&gt;
&lt;br /&gt;
==== Channel 01 ====&lt;br /&gt;
&lt;br /&gt;
Die Register:&lt;br /&gt;
 list:        register | range              | peer     | description&lt;br /&gt;
   1: condTxThrhHi     |   0 to 3000mV      |          | threshold high condition&lt;br /&gt;
   1: eventFilterTimeB |   5 to 7620s       |          | event filter time&lt;br /&gt;
   1: evntRelFltTime   |   1 to 7620s       |          | event filter release time &lt;br /&gt;
   1: highHoldTime     |  60 to 7620s       |          | hold time on high state&lt;br /&gt;
   1: transmitTryMax   |   1 to 10          |          | max message re-transmit&lt;br /&gt;
   4: expectAES        |     literal        | required | expect AES options:on,off&lt;br /&gt;
   4: peerNeedsBurst   |     literal        | required | peer expects burst options:on,off&lt;br /&gt;
&lt;br /&gt;
==== Channel 02 ====&lt;br /&gt;
Z. Zt. sind keine Register verfügbar.&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration ===&lt;br /&gt;
Bei eingeschaltetem [[autocreate]] werden die erforderlichen Definitionen zum erkannten Sen-RD-O überwiegend selbstständig angelernt:&lt;br /&gt;
&lt;br /&gt;
 define Regensensor CUL_HM 20CE4B&lt;br /&gt;
 attr Regensensor .devInfo 040101&lt;br /&gt;
 attr Regensensor .stc 70&lt;br /&gt;
 attr Regensensor autoReadReg 4_reqStatus&lt;br /&gt;
 attr Regensensor firmware 1.4&lt;br /&gt;
 attr Regensensor model HM-Sen-RD-O&lt;br /&gt;
 attr Regensensor room CUL_HM&lt;br /&gt;
 attr Regensensor serialNr KEQ0117756&lt;br /&gt;
 attr Regensensor subType sensRain&lt;br /&gt;
 attr Regensensor webCmd getConfig&lt;br /&gt;
 define FileLog_Regensensor FileLog /opt/fhem/log/Regensensor-%Y-%m.log Regensensor&lt;br /&gt;
 attr FileLog_Regensensor logtype text&lt;br /&gt;
 attr FileLog_Regensensor room CUL_HM&lt;br /&gt;
&lt;br /&gt;
 # Channel 01 =&amp;gt; 20CE4B01 &lt;br /&gt;
 define Regensensor_EsRegnet CUL_HM 20CE4B01&lt;br /&gt;
 attr Regensensor_EsRegnet expert 1&lt;br /&gt;
 attr Regensensor_EsRegnet model HM-Sen-RD-O&lt;br /&gt;
 attr Regensensor_EsRegnet peerIDs 00000000,&lt;br /&gt;
 attr Regensensor_EsRegnet room CUL_HM&lt;br /&gt;
 define FileLog_Regensensor_EsRegnet FileLog /opt/fhem/log/Regensensor_EsRegnet-%Y-%m.log Regensensor_EsRegnet&lt;br /&gt;
 attr FileLog_Regensensor_EsRegnet logtype text&lt;br /&gt;
 attr FileLog_Regensensor_EsRegnet room CUL_HM&lt;br /&gt;
 define SVG_FileLog_Regensensor_EsRegnet SVG FileLog_Regensensor_EsRegnet:Regensensor:CURRENT&lt;br /&gt;
 attr SVG_FileLog_Regensensor_EsRegnet room CUL_HM&lt;br /&gt;
&lt;br /&gt;
 # Channel 02 =&amp;gt; 20CE4B02&lt;br /&gt;
 define Regensensor_Heizung CUL_HM 20CE4B02&lt;br /&gt;
 attr Regensensor_Heizung expert 1&lt;br /&gt;
 attr Regensensor_Heizung model HM-Sen-RD-O&lt;br /&gt;
 attr Regensensor_Heizung peerIDs 00000000,&lt;br /&gt;
 attr Regensensor_Heizung room CUL_HM&lt;br /&gt;
 define FileLog_Regensensor_Heizung FileLog /opt/fhem/log/Regensensor_Heizung-%Y-%m.log Regensensor_Heizung&lt;br /&gt;
 attr FileLog_Regensensor_Heizung logtype text&lt;br /&gt;
 attr FileLog_Regensensor_Heizung room CUL_HM&lt;br /&gt;
&lt;br /&gt;
=== Steuerung / Betrieb ===&lt;br /&gt;
Über die Veränderung der entsprechenden Register kann man das Verhalten des RD-O 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. &lt;br /&gt;
&lt;br /&gt;
Eine manuelle Heizungssteuerung erreicht man über den &#039;&#039;Channel 02&#039;&#039;:&lt;br /&gt;
Mit dem Befehl &lt;br /&gt;
:&amp;lt;code&amp;gt; set Regensensor_Heizung off&amp;lt;/code&amp;gt;&lt;br /&gt;
wird die Heizung aus- und durch&lt;br /&gt;
:&amp;lt;code&amp;gt; set Regensensor_Heizung on&amp;lt;/code&amp;gt;&lt;br /&gt;
wieder eingeschaltet. &lt;br /&gt;
&lt;br /&gt;
Eine einfache Heizungsautomatik ist ganz einfach über ein Attribut möglich:&lt;br /&gt;
:&amp;lt;code&amp;gt; attr Regensensor_Heizung param offAtPon,onAtRain&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;offAtPon&amp;lt;/code&amp;gt; schaltet die Heizung zwingend aus, wenn der (wieder) Sensor mit Spannung versorgt wird (nach einem Stromausfall). &lt;br /&gt;
&amp;lt;code&amp;gt;onAtRain&amp;lt;/code&amp;gt; schaltet die Heizung beim Status &#039;&#039;rain&#039;&#039; ein und beim Status &#039;&#039;dry&#039;&#039; wieder aus.&lt;br /&gt;
&lt;br /&gt;
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 (wenn nicht bereits durch das o.g. Attribut realisiert) ist ebenfalls sinnvoll, denn die Heizung sorgt für ein schnelleres Abtrocknen der Sensorfläche und somit eine zeitnahe Regenende-Erkennung.&lt;br /&gt;
&lt;br /&gt;
Hierzu kann beispielsweise folgendes in FHEM definiert werden:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt; define DoIf_RegenSensorHzgOnOff DOIF ([Aussen.ThermoHygro:temperature]&amp;lt;5 or [Regensensor_EsRegnet] eq &amp;quot;rain&amp;quot;) (set Regensensor_Heizung on) DOELSEIF ([Aussen.ThermoHygro:temperature]&amp;gt;6 and [Regensensor_EsRegnet] eq &amp;quot;dry&amp;quot;) (set Regensensor_Heizung  off)&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt; attr DoIf_RegenSensorHzgOnOff room Wetter&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Sensor-Heizung wird damit bei Temperaturen unter 5 °C &#039;&#039;&#039;oder&#039;&#039;&#039; bei erkanntem Regen eingeschaltet. Die Abschaltung der Heizung erfolgt, sobald die Temperatur über 6 °C beträgt &#039;&#039;&#039;und&#039;&#039;&#039; es trocken ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der RD-O reagiert bereits bei der Berührung der Sensorfläche mit einem Finger mit der Meldung &amp;quot;Es regnet&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
=== Log-Daten ===&lt;br /&gt;
Auszüge aus den Logs unmittelbar nach Anschluss der Spannungsversorgung und dem ersten Drücken der Anlerntaste am RD-O:&lt;br /&gt;
&lt;br /&gt;
==== Event monitor ====&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global UNDEFINED CUL_HM_HM_Sen_RD_O_20EC4B CUL_HM 20EC4B A1A02840020EC4B0000001400A74B45513031313730363770040101&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED CUL_HM_HM_Sen_RD_O_20EC4B&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED FileLog_CUL_HM_HM_Sen_RD_O_20EC4B&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global SAVE&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global UNDEFINED CUL_HM_HM_Sen_RD_O_20EC4B_Rain CUL_HM 20EC4B01&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED CUL_HM_HM_Sen_RD_O_20EC4B_Rain&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED FileLog_CUL_HM_HM_Sen_RD_O_20EC4B_Rain&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global SAVE&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global UNDEFINED CUL_HM_HM_Sen_RD_O_20EC4B_Heating CUL_HM 20EC4B02&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED CUL_HM_HM_Sen_RD_O_20EC4B_Heating&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global DEFINED FileLog_CUL_HM_HM_Sen_RD_O_20EC4B_Heating&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Global global SAVE&lt;br /&gt;
 ... und kurz darauf ...&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; CUL_HM CUL_HM_HM_Sen_RD_O_20EC4B_Rain timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; CUL_HM CUL_HM_HM_Sen_RD_O_20EC4B_Rain dry&lt;br /&gt;
&lt;br /&gt;
==== FHEM-Log ====&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 3: CUL_HM Unknown device CUL_HM_HM_Sen_RD_O_20EC4B, please define it&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 2: autocreate: define CUL_HM_HM_Sen_RD_O_20EC4B CUL_HM 20EC4B A1A02840020EC4B0000001400A74B45513031313730363770040101&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 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&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 2: autocreate: define CUL_HM_HM_Sen_RD_O_20EC4B_Rain CUL_HM 20EC4B01&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 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&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 2: autocreate: define CUL_HM_HM_Sen_RD_O_20EC4B_Heating CUL_HM 20EC4B02&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 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&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; 2: CUL_HM set CUL_HM_HM_Sen_RD_O_20EC4B getConfig&lt;br /&gt;
&lt;br /&gt;
==== Device-Logs ====&lt;br /&gt;
==== Channel 01 Log (Es regnet) ====&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet dry&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet rain&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet dry&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet rain&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_EsRegnet dry&lt;br /&gt;
&lt;br /&gt;
Am gezeigten log ist zu erkennen, dass der Sen-RD-O Zustandsänderungen genau einmal meldet und danach nicht wiederholt.&lt;br /&gt;
&lt;br /&gt;
==== Channel 02 Log (Heizung an oder aus) ====&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung on&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung set_off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung set_on&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung timedOn: off&lt;br /&gt;
 &amp;lt;Datum&amp;gt; &amp;lt;Zeit&amp;gt; Regensensor_Heizung on&lt;br /&gt;
&lt;br /&gt;
=== Plot / Grafische Darstellung ===&lt;br /&gt;
Der RD-O meldet im Channel_01-Log die Zustände &amp;quot;rain&amp;quot; (für: es regnet) und &amp;quot;dry&amp;quot; (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:&lt;br /&gt;
&lt;br /&gt;
[[Datei:HM-Sen-RD-O_cut.jpg|Plot des HM-Sen-RD-O]]&lt;br /&gt;
&lt;br /&gt;
Und hier die dazugehörige Plot-Datei:&lt;br /&gt;
 set terminal png transparent size &amp;lt;SIZE&amp;gt; crop&lt;br /&gt;
 set output &#039;&amp;lt;OUT&amp;gt;.png&#039;&lt;br /&gt;
 set xdata time&lt;br /&gt;
 set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
 set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
 set title &#039;Regnet es: Ja/Nein&#039;&lt;br /&gt;
 set ytics (&amp;quot;Trocken&amp;quot; 0, &amp;quot;Regen&amp;quot; 1)&lt;br /&gt;
 set y2tics (&amp;quot;Trocken&amp;quot; 0, &amp;quot;Regen&amp;quot; 1)&lt;br /&gt;
 set grid&lt;br /&gt;
 set ylabel &amp;quot;&amp;quot;&lt;br /&gt;
 set y2label &amp;quot;&amp;quot;&lt;br /&gt;
 set yrange [-0.1:1.1]&lt;br /&gt;
 set y2range [-0.1:1.1]&lt;br /&gt;
 &lt;br /&gt;
 #FileLog 3::0:$fld[2]=~&amp;quot;rain&amp;quot;?1:0&lt;br /&gt;
 &lt;br /&gt;
 plot &amp;quot;&amp;lt;IN&amp;gt;&amp;quot; using 1:2 axes x1y2 title &#039;Regnet es?&#039; ls l0 lw 1 with steps&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;nicht regnet&amp;quot;. An einer plausibleren Darstellung wird gearbeitet.&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
=== getConfig ===&lt;br /&gt;
Anfangs (Mitte Dezember 2013) gab es noch ein Problem mit dem &#039;&#039;getConfig&#039;&#039;. Dieser Befehl wurde quittiert mit den Meldungen:&lt;br /&gt;
&lt;br /&gt;
 protState	CMDs_done_Errors:1&lt;br /&gt;
 ...&lt;br /&gt;
 state		RESPONSE TIMEOUT:RegisterRead&lt;br /&gt;
 &lt;br /&gt;
Andere Befehle (wie oben z.B. Heizung an/aus) wurden dagegen umgehend erfolgreich abgearbeitet.&lt;br /&gt;
&lt;br /&gt;
Dieses Problem ist mittlerweile gelöst, so dass der RD-O voll genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
=== Erst Minuten nach Regenende meldet der RD-O &amp;quot;dry&amp;quot; (also kein Regen mehr) ===&lt;br /&gt;
Das liegt zum einen daran, dass der auf der Sensorfläche befindliche Niederschlag erst einmal durch die interne Sensorheizung &amp;quot;verdampft&amp;quot; werden muss. Zum anderen ist der RD-O so eingestellt, dass er erst 5 Minuten nach Abtrocknen der Sensorfläche wieder den Zustand &amp;quot;dry&amp;quot; an FHEM meldet. Zuständig dafür ist das RD-O-Register &#039;&#039;highHoldTime&#039;&#039; im Channel &#039;&#039;&#039;01&#039;&#039;&#039;, 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: &lt;br /&gt;
:&amp;lt;code&amp;gt; set Regensensor_EsRegnet regSet highHoldTime 60&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Korrosion / eindringendes Wasser ===&lt;br /&gt;
In den Käuferbewertungen und im Kundenforum von ELV gibt es Meldungen, dass möglicherweise die Sensorfläche &amp;quot;korrodiert&amp;quot; bzw. der RD-O mit Wasser &amp;quot;voll läuft&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://www.elv.de/homematic-funk-regensensor-1.html Produktinfo]&lt;br /&gt;
* Bedienungsanleitung (PDF) {{DocLink|elv|/Assets/Produkte/13/1302/130220/Downloads/130220_hm_regensensor_um.pdf}}&lt;br /&gt;
* Datenblatt (PDF) {{DocLink|elv|/Assets/Produkte/13/1302/130220/Downloads/130220_hm_regensensor_data.pdf}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;br /&gt;
[[Kategorie:Regensensor]]&lt;/div&gt;</summary>
		<author><name>Burny4600</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HomeMatic_Firmware_Update&amp;diff=32624</id>
		<title>HomeMatic Firmware Update</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HomeMatic_Firmware_Update&amp;diff=32624"/>
		<updated>2020-02-07T11:50:17Z</updated>

		<summary type="html">&lt;p&gt;Burny4600: Anpassung eq3 Links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Seit 2014 ist es möglich, bei einigen [[HomeMatic]] Komponenten selbst Firmware Updates durchzuführen. Vorher ging das nur per CCU oder durch Einsenden des Gerätes an ELV.&lt;br /&gt;
Dabei gibt es verschiedene Möglichkeiten das Firmware Update durchzuführen. Um in FHEM die aktuelle Firmware nach dem Update angezeigt zu bekommen, ist ein erneutes Pairen mit FHEM notwendig. Es muss aber nicht gelöscht oder zurückgesetzt werden.&lt;br /&gt;
&lt;br /&gt;
== Varianten für Firmwareupdates ==&lt;br /&gt;
=== Firmware Update mit CUL/HM-CFG-USB/HMUARTLGW unter FHEM ===&lt;br /&gt;
FW Updates sind in FHEM möglich. Benötigt wird dafür ein [[CUL]] oder ein [[HM-CFG-USB USB Konfigurations-Adapter|HM-CFG-USB]] oder ein [[HMUARTLGW]]. Mit einem [[HMLAN]] ist ein Update nicht möglich.&lt;br /&gt;
&lt;br /&gt;
Vor dem Update ist sicherzustellen, dass das korrekte IO für das Device genutzt wird (falls mehrere IOs im System zu Verfügung stehen). Siehe Attribut IODev und IOgrp bei der Verwendung einer [[Virtueller Controller VCCU|VCCU]]. Ein HMLAN kann mit dem Befehl: &amp;lt;code&amp;gt;set &amp;lt;HMLAN Name&amp;gt; close&amp;lt;/code&amp;gt; temporär ausgeschlossen werden.&lt;br /&gt;
&lt;br /&gt;
Um das Update durchführen zu können, wird die in dem entsprechenden Zip/tgz-File vorhandene .eq3-Datei benötigt. Bitte genau darauf achten, dass nicht versehentlich eine falsches Firmware-Datei verwendet wird. Der Vorgang selbst erfolgt mittels folgendem Befehl:&lt;br /&gt;
:&amp;lt;code&amp;gt;set &amp;lt;device&amp;gt; fwUpdate &amp;lt;filename&amp;gt; &amp;lt;nowiki&amp;gt;[&amp;lt;time&amp;gt;]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;filename&amp;gt; ist der Name der .eq3 Datei inklusive absolutem oder relativem Pfad zu fhem-Root.&lt;br /&gt;
Die Angabe von [&amp;lt;time&amp;gt;] ist optional. Es ist die Zeit in Sekunden, die FHEM wartet, bis das Device in den Bootloader-Modus versetzt wird. Bei den meisten Devices ist die Zeit nicht notwendig, da FHEM das Gerät selbst in den Bootloader-Mode versetzen kann.&lt;br /&gt;
&lt;br /&gt;
Bei einigen älteren FW-Versionen wie z.B. bei den [[HM-CC-RT-DN]] v1.0 geht das allerdings nicht automatisch. Um den Flashvorgang zu starten, müssen hier noch die Batterien entfernt werden und beim wiedereinlegen die beiden äußeren Knöpfe gedrückt werden. Jene Zeit, die man für eben diese Aktion benötigt, wird hier eingegeben. &lt;br /&gt;
&lt;br /&gt;
Wichtig: während des Updates können keine weiteren Nachrichten in FHEM von Homematic verarbeitet werden.&lt;br /&gt;
&lt;br /&gt;
Da nach dem Update immer noch die alte FW-Version in FHEM steht, kann man entweder bei einigen Geräten die Version mit &lt;br /&gt;
:&amp;lt;code&amp;gt; set &amp;lt;device&amp;gt; getVersion &amp;lt;/code&amp;gt;&lt;br /&gt;
auslesen oder wenn das Kommando wie z.B. bei den oben genannten Heizkörperventilen nicht zur Verfügung steht, genügt es, am Gerät selbst die Anlerntaste zu drücken (was am Beispiel der RTs bedeutet, dass die Boost-Taste für mindestens drei Sekunden gedrückt werden  muss). Nach der Aktualisierung der Firmware-Information in FHEM, muss die [[Konfiguration]] noch gespeichert werden.&lt;br /&gt;
&lt;br /&gt;
==== Fehlersuche / Probleme beim Update via FHEM ====&lt;br /&gt;
* Der Firmware-Update nimmt mehrere Minuten in Anspruch (bei einem HM-LC-Bl1PBU-FM bis zu 10 Minuten). Über &amp;lt;code&amp;gt;attr &amp;lt;device&amp;gt; verbose 5&amp;lt;/code&amp;gt; kann man für das HM-Device im Log den Fortschritt detaillierter beobachten. &lt;br /&gt;
* Sollte es zu einem Abbruch kommen, kann es dazu kommen, dass weitere FW-Update-Versuche abgebrochen werden mit der Fehlermeldung &amp;quot;fail:notInBootLoader&amp;quot; und einem grünen Dauerblinken an der Anlerntaste ({{Link2Forum|Topic=84200|Message=764555}}). In diesem Fall kann die explizite Angabe des Parameters &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[&amp;lt;time&amp;gt;]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; helfen.&lt;br /&gt;
&lt;br /&gt;
=== Firmware Update mit CUL/HM-CFG-USB unter Linux ===&lt;br /&gt;
Für Linux hat mgernoth ein Updatetool erstellt.&lt;br /&gt;
&lt;br /&gt;
Zunächst muss sichergestellt werden, dass alle benötigten Pakete installiert sind. Um das Tool zu installieren und auszuführen, müssen die folgenden Pakete mit den gezeigten Befehlen installiert werden. Unter Debian:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install libusb-1.0-0-dev git build-essential&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Unter OpenSuse 13.2 64 Bit:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo zypper install libusb-1.0-0-dev git &lt;br /&gt;
sudo zypper install --type pattern devel_basis&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als nächstes wird der Sourcecode für das Tool heruntergeladen (vorher z.B. in den Pfad &amp;lt;code&amp;gt;/usr/src&amp;lt;/code&amp;gt; wechseln):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git clone git://git.zerfleddert.de/hmcfgusb&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Und mit den Anweisungen&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd hmcfgusb&lt;br /&gt;
make&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
wird daraus eine ausführbare Datei erstellt.&lt;br /&gt;
&lt;br /&gt;
Weiterhin muss die nötige Firmware heruntergeladen und entpackt werden. Die offiziellen Updates gibt es unter [http://www.eq-3.de/downloads.html eq-3 Downloads]. Die Befehle, um beispielsweise die benötigte Datei für die Firmware Version 1.4 des HM-CC-RT-DN zu erhalten lauten:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
wget http://www.eq-3.de/Downloads/Software/Firmware/hm_cc_rt_dn_update_V1_4_001_141020.tgz&lt;br /&gt;
tar xvzf hm_cc_rt_dn_update_V1_4_001_141020.tgz&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Zu guter Letzt muss noch das Tool mit einigen Parametern und der Seriennummer des HomeMatic Devices aufgerufen werden. Für ein Update mit einem CUL (&amp;lt;code&amp;gt;/dev/ttyACM0&amp;lt;/code&amp;gt; ist in diesem Beispiel die Adresse des CULs) muss folgendes eingegeben werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo ./flash-ota -c /dev/ttyACM0 -f &amp;lt;FirmwareImageName&amp;gt;.eq3 -s &amp;lt;DeviceSerialNo&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Für ein Update mit einem COC muss folgendes eingegeben werden (/dev/ttyAMA0):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo ./flash-ota -c /dev/ttyAMA0 -f &amp;lt;FirmwareImageName&amp;gt;.eq3 -s &amp;lt;DeviceSerialNo&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Für ein Update mit HM-CFG-USB&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo ./flash-ota -f &amp;lt;FirmwareImageName&amp;gt;.eq3 -s &amp;lt;DeviceSerialNo&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Nun muss nur noch das HomeMatic Gerät in den Update-Modus versetzt werden. Wie das geht, steht in der jeweils mit der Firmwaredatei gelieferten &amp;quot;readme&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Firmware Update mit HM-CFG-USB unter Windows ===&lt;br /&gt;
Für ein Firmwareupdate unter Windows wird das &amp;quot;HomeMatic Firmware Update Tool&amp;quot; von eq-3 benötigt: [https://www.eq-3.de/service/downloads.html?id=274 eQ-3 Downloads]. Zur Zeit ist das Update damit nur mit dem HM-CFG-USB-2 möglich, nicht aber mit dem HM-CFG-LAN oder dem HM-CFG-USB der ersten Generation.&lt;br /&gt;
&lt;br /&gt;
Nach dem Start muss die Seriennummer des HomeMatic-Device eingegeben und die Firmware-Datei ausgewählt werden. Dann wird das Update-Tool durch einen Klick auf den entsprechenden Button in &amp;quot;Bereitschaft&amp;quot; gesetzt und anschließend muss das HomeMatic-Gerät in den Update-Modus versetzt werden. Bei Unterputz-Geräten ist das eventuell gar nicht so einfach, man kann in diesem Fall aber von FHEM aus dem Gerät ein Kommando schicken um es in den Bootloader Modus zu bringen. Dies geht mit dem Befehl&lt;br /&gt;
:&amp;lt;code&amp;gt;set &amp;lt;device&amp;gt; fwUpdate onlyEnterBootLoader&amp;lt;/code&amp;gt;&lt;br /&gt;
Direkt danach sollte das Update Tool mit seiner Arbeit beginnen.&lt;br /&gt;
&lt;br /&gt;
Falls das Update-Tool beim Auswählen der Firmware-Datei abstürzt (&amp;quot;Home Matic Firmware Update Tool funktioniert nicht mehr&amp;quot;), dann stimmt wahrscheinlich etwas mit der Firmware-Datei nicht. Die Datei darf nicht ausgepackt, sondern muss als &amp;quot;.tar.gz&amp;quot;-Datei, so wie sie heruntergeladen wurde, benutzt werden. Es kann Probleme geben, wenn die Datei mit dem Internet Explorer heruntergeladen wurde. Am einfachsten ist es, die Datei mit einem anderen Browser herunterzuladen.&lt;br /&gt;
&lt;br /&gt;
== Mögliche Probleme ==&lt;br /&gt;
Lässt sich die Firmware nicht OTA auf das HomeMatic-Device flashen, kann dies folgende Ursachen haben:&lt;br /&gt;
* Die FHEM-Software ist nicht auf dem neuesten Stand. Bitte vorher ein &#039;&#039;update&#039;&#039; durchführen.&lt;br /&gt;
* &#039;&#039;&#039;Entfernung&#039;&#039;&#039; zwischen Sender und Empfänger &#039;&#039;&#039;zu klein&#039;&#039;&#039;. 1,5 bis 2 m Abstand sollten beide Geräte zueinander mindestens haben.&lt;br /&gt;
* &#039;&#039;&#039;Entfernung&#039;&#039;&#039; zwischen Sender und Empfänger &#039;&#039;&#039;zu groß&#039;&#039;&#039;. Überprüfen Sie die RSSI-Werte des zu flashenden Device. Schlechter als - 70 sollten sie nicht sein (also keine - 75 oder noch kleiner). Ansonsten muss der Abstand für die Dauer des Flashens verringert werden.&lt;br /&gt;
* Durch wiederholte Firmware-Updates oder Update-Versuche hat die [[1% Regel]] zugeschlagen. Der dort genannte Notbehelf (Funkschnittstelle kurz stromlos machen) schafft Abhilfe.&lt;br /&gt;
&lt;br /&gt;
== Tool zur Firmware Versionsprüfung ==&lt;br /&gt;
[[Datei:HM-FWUpdate-eQ3.png|mini|400px|left|Beispiel einer Liste der relevanten Firmware Updates&amp;lt;br /&amp;gt;&#039;&#039;&#039;Legende:&#039;&#039;&#039;&amp;lt;br /&amp;gt;1 - Link auf die eQ-3 Download-Seite &amp;lt;br /&amp;gt;2 - Link auf die Details des HTTPMOD Device &amp;lt;br /&amp;gt;3 - Link auf die Details des HomeMatic Device &amp;lt;br /&amp;gt;4 - (Download) Link auf die Firmware Datei &amp;lt;br /&amp;gt;5 - &amp;quot;reread&amp;quot;: Aktualisierung dieser Liste auslösen]]&lt;br /&gt;
Im FHEM-Forum wurden unter dem Titel {{Link2Forum|Topic=47729|LinkText=...Firmware Versionsprüfung}} die erforderlichen Definitionen für ein [[HTTPMOD]]-Device vorgestellt, das &lt;br /&gt;
* für alle HomeMatic Devices der aktuellen FHEM-Umgebung&lt;br /&gt;
* die derzeit benutzte Firmware Version mit&lt;br /&gt;
* einem evtl. auf der eQ-3 Seite verfügbaren Update vergleicht und&lt;br /&gt;
* alle für die aktuelle Installation relevanten Updates in einer Übersicht (siehe Screenshot) darstellt und&lt;br /&gt;
* einmal täglich (alle 86400 Sekunden) automatisch ausgeführt wird; dieses Intervall sollte nicht verkürzt, sondern eher verlängert werden. Im Bedarfsfall kann durch anklicken von &#039;&#039;&#039;&#039;&#039;reread&#039;&#039;&#039;&#039;&#039; eine sofortige Aktualisierung ausgelöst werden.&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
{{Randnotiz|RNTyp=y|RNText=Sollte eine alte (vor dem 15.3.2016) Version dieser Definitionen bereits in Benutzung sein (zu erkennen am Vorhandensein von &#039;&#039;&amp;lt;nowiki&amp;gt;reading0[2|3|4|5]*&amp;lt;/nowiki&amp;gt;&#039;&#039;-Attributen), dann wird empfohlen, das Device mit &amp;lt;code&amp;gt;delete eq3&amp;lt;/code&amp;gt; zunächst komplett zu löschen und anschließend neu anzulegen.}}&lt;br /&gt;
Die unten aufgeführten erforderlichen Anweisungen zur Erstellung dieser Übersicht sind&lt;br /&gt;
* im wesentlichen über das Webinterface eingebbar (können aber auch &amp;quot;en bloc&amp;quot; in die fhem.cfg eingetragen werden - auch wenn das eigentlich nicht empfohlen ist)&lt;br /&gt;
* der umfangreiche Perl-Code für das Attribut &#039;&#039;userReadings&#039;&#039; ist dargestellt für die Eingabe über das [[FHEMWEB|Webinterface]]&lt;br /&gt;
* für das Attribut &#039;&#039;stateFormat&#039;&#039; ist die mehrzeilige Eingabe (zumindest derzeit, März 2016) nicht unterstützt, daher wurde der Code in eine Subroutine ausgelagert&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;{{Randnotiz|RNTyp=r|RNText=&#039;&#039;&#039;Wichtige Änderungen:&#039;&#039;&#039;&lt;br /&gt;
22.05.2016 - &#039;&#039;reading01Regex&#039;&#039; und &#039;&#039;reading01Format&#039;&#039; angepasst (eQ-3)&lt;br /&gt;
&lt;br /&gt;
02.09.2019 {{Link2Forum|Topic=78501|LinkText=...Firmware check funktioniert nicht}}&lt;br /&gt;
}}&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Definitionen in FHEM ===&lt;br /&gt;
Durch seine Historie zeigt dieser Artikel fast schon unfreiwillig die Vielfalt der Lösungswege in FHEM.&lt;br /&gt;
Die Beschreibung ist Modular:&lt;br /&gt;
* Basis&lt;br /&gt;
* schnell fertig mit attrTemplate&lt;br /&gt;
* Attribute mit der Raw Definition anlegen&lt;br /&gt;
* Weitere Attribute mit Perl Code in der 99_myUtils oder direkt in der DEF&lt;br /&gt;
Zunächst einfach nur eine Zeile für die grundlegende Definition.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
define eq3 HTTPMOD https://www.eq-3.de/ajax/downloads/downloads_eq3.php 604800&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Definitionen der Attribute mit attrTemplate ===&lt;br /&gt;
Ab September 2019 geht es ganz einfach weiter mit attrTemplate. &lt;br /&gt;
[[Datei:SetAttrTemplateEq3.png|tumb|400px|left|Menüauswahl set Befehl]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Hinter dem set Button findet man das Auswahlmenü mit attrTemplate an prominenter erster Stelle. &lt;br /&gt;
* In der weiteren Klappliste weit nach unten gehen, dort findet man &#039;&#039;CUL_HM_firmware_update_downloader&#039;&#039;. &lt;br /&gt;
* Dieses Template auswählen, set drücken, etwas warten und fertig. Das Device wird selbständig gefüllt.&lt;br /&gt;
* Das Device wird dem Raum CUL_HM zugewiesen&lt;br /&gt;
&lt;br /&gt;
Man kann den set Befehl auch in der Kommandozeile oder gemeinsam mit der obigen Definition in der Raw Definition importieren.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
set eq3 attrTemplate X_01a_CUL_HM_firmware_update_downloader&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Vorteil:&#039;&#039;&#039; Sollten sich in Zukunft Änderungen am Device ergeben (weil z.B. eq3 ihre Seite ändert) kann diese Änderung über update verteilt werden. Ein erneute Zuweisung bringt dann ein aktuelles Device. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Damit ist die Definition fertig!&#039;&#039;&#039; Alle weiteren Schritte hier stehen nur zur vollständigen Dokumentation.&lt;br /&gt;
&lt;br /&gt;
=== Basis Definitionen manuell ===&lt;br /&gt;
Die folgende Attribute Basis Definition ist einfach über die Raw Def einzufügen.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
attr eq3 userattr enableControlSet event-on-change-reading event-on-update-reading reading01AutoNumLen reading01Format reading01Name reading01RegOpt reading01RegOpt:s,i,g reading01Regex readingMaxAge readingMaxAgeReplacementMode readingMaxAgeReplacementMode:text,expression,delete readingMaxAgeReplacementMode:text,reading,internal,expression,delete requestData.* showError showMatched stateFormat userReadings webCmd&lt;br /&gt;
attr eq3 alignTime 00:45&lt;br /&gt;
attr eq3 enableControlSet 1&lt;br /&gt;
attr eq3 event-on-change-reading .*&lt;br /&gt;
attr eq3 event-on-update-reading LAST_ERROR,MATCHED_READINGS&lt;br /&gt;
attr eq3 reading01AutoNumLen 2&lt;br /&gt;
attr eq3 reading01Format https://www.eq-3.de%s&lt;br /&gt;
attr eq3 reading01Name fw_link&lt;br /&gt;
attr eq3 reading01RegOpt gi&lt;br /&gt;
attr eq3 reading01Regex &amp;lt;a.href=&amp;quot;(\/downloads\/software\/firmware\/hm[^&amp;quot;]+)&lt;br /&gt;
attr eq3 readingMaxAge 10&lt;br /&gt;
attr eq3 readingMaxAgeReplacementMode delete&lt;br /&gt;
attr eq3 requestData.* suchbegriff=&amp;amp;quelle=29&amp;amp;suchkategorie=3&amp;amp;themenbereich=1&lt;br /&gt;
attr eq3 room eq3&lt;br /&gt;
attr eq3 showError 1&lt;br /&gt;
attr eq3 showMatched 1&lt;br /&gt;
attr eq3 webCmd reread&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Es werden noch zwei Attribute benötigt, es gibt dabei die Varianten den Code direkt im Attribute einzugeben oder beide Attribute über eine Sub in die 99_myUtils.pm auszulagern. Wählt man die Variante mit der 99_myUtils muss man zuerst beide Subs dort einfügen und kann anschließend einfach diese beiden Zeil noch über die Raw Def einfügen&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
attr eq3 stateFormat {eq3StateFormat($name)}&lt;br /&gt;
attr eq3 userReadings newFwForDevices:MATCHED_READINGS:.* {eq3Attr}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Definition/Code für 99_myUtils.pm ===&lt;br /&gt;
Da der Code für &#039;&#039;userReadings&#039;&#039; und &#039;&#039;stateFormat&#039;&#039; recht umfangreich ist, ist es besser beides in (Sub-)Routinen in die [[99_myUtils anlegen|99_myUtils]] auszulagern:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub eq3Attr{&lt;br /&gt;
#####################&lt;br /&gt;
# hier den Code für UserReadings einfügen&lt;br /&gt;
#####################&lt;br /&gt;
}&lt;br /&gt;
sub eq3StateFormat($) {&lt;br /&gt;
    my $name = shift @_;&lt;br /&gt;
##################### &lt;br /&gt;
#  hier den Code für eq3StateFormat($name) einfügen&lt;br /&gt;
#####################&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Definition/Code für Attribut userReadings ===&lt;br /&gt;
Die Definition für das Attribut &#039;&#039;userReadings&#039;&#039; :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
attr eq3 userReadings newFwForDevices:MATCHED_READINGS:.* {\&lt;br /&gt;
#  hier den Perl Code UserReadings einfügen\&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Perlcode UserReadings&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
	my $ret = &amp;quot;&amp;quot;;&lt;br /&gt;
	my @data;&lt;br /&gt;
	my @eq3FwList = map{@data = ReadingsVal(&amp;quot;eq3&amp;quot;,&amp;quot;fw_link-&amp;quot;.$_,&amp;quot;?&amp;quot;) =~ m/Firmware\/(.*?)_update_V([\d_]+)_(\d\d)(\d\d)(\d\d)/i; &lt;br /&gt;
			$data[0] =~ s/_/-/g;&lt;br /&gt;
			sprintf(&amp;quot;%s:%s:%s.%s.%s:%s&amp;quot;,$data[0],$data[1],$data[4],$data[3],&amp;quot;20&amp;quot;.$data[2],$_);&lt;br /&gt;
			} ReadingsVal(&amp;quot;eq3&amp;quot;,&amp;quot;MATCHED_READINGS&amp;quot;,&amp;quot;?&amp;quot;) =~ m/fw_link-(\d\d)/g;&lt;br /&gt;
&lt;br /&gt;
	foreach my $dev (devspec2array(&amp;quot;TYPE=CUL_HM:FILTER=DEF=......:FILTER=subType!=(virtual|)&amp;quot;)) {&lt;br /&gt;
		my $md = AttrVal($dev,&amp;quot;model&amp;quot;,&amp;quot;?&amp;quot;);&lt;br /&gt;
		my $v = AttrVal($dev,&amp;quot;firmware&amp;quot;,&amp;quot;0.0&amp;quot;);&lt;br /&gt;
		my ($h,$l) = split(&#039;\.&#039;,$v);&lt;br /&gt;
		foreach my $newFw (grep m/^${md}:/i,@eq3FwList) {&lt;br /&gt;
		  my ($nh,$nl,$no,$date,$idx) = $newFw =~ m/^[^:]+:(\d+)_(\d+)_?(\d*):([^:]+):(\d\d)$/;&lt;br /&gt;
		  if(($nh &amp;gt; $h) || (($nh == $h) &amp;amp;&amp;amp; ($nl &amp;gt; $l))) {&lt;br /&gt;
			$ret .= &amp;quot;,&amp;quot; if($ret ne &amp;quot;&amp;quot;);&lt;br /&gt;
			$ret .= $dev.&amp;quot; (&amp;quot;.$md.&amp;quot; | fw_&amp;quot;.$v.&amp;quot; =&amp;gt; fw&amp;quot;.$idx.&amp;quot;_&amp;quot;.$nh.&amp;quot;.&amp;quot;.$nl.($no?sprintf(&amp;quot;.%d&amp;quot;,$no):&amp;quot;&amp;quot;).&amp;quot; | &amp;quot;.$date.&amp;quot;)&amp;quot;;&lt;br /&gt;
		  }&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return ($ret eq &amp;quot;&amp;quot;)?&amp;quot;no fw-updates needed!&amp;quot;:$ret;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Definition/Code für Attribut stateFormat ===&lt;br /&gt;
Die Definition für das Attribut &#039;&#039;stateFormat&#039;&#039; :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
attr eq3 stateFormat {\&lt;br /&gt;
# hier den Code für eq3StateFormat($name) einfügen\&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Perlcode eq3StateFormat($name)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
	my $ret =&amp;quot;&amp;quot;; 	&lt;br /&gt;
	my $lastCheck = ReadingsTimestamp($name,&amp;quot;MATCHED_READINGS&amp;quot;,&amp;quot;???&amp;quot;); 	&lt;br /&gt;
	$ret .= &#039;&amp;lt;div style=&amp;quot;text-align:left&amp;quot;&amp;gt;&#039;; 	&lt;br /&gt;
	$ret .= &#039;last &amp;lt;a title=&amp;quot;eq3-downloads&amp;quot; href=&amp;quot;http://www.eq-3.de/service/downloads.html&amp;quot;&amp;gt;homematic&amp;lt;/a&amp;gt;-fw-check =&amp;gt; &#039;.$lastCheck; 	&lt;br /&gt;
	$ret .= &#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;; 	&lt;br /&gt;
	$ret .= &#039;&amp;lt;pre&amp;gt;&#039;; 	&lt;br /&gt;
	$ret .= &amp;quot;| device                  | model                   | cur_fw | new_fw | release    |&amp;lt;br&amp;gt;&amp;quot;; 	&lt;br /&gt;
	$ret .= &amp;quot;------------------------------------------------------------------------------------&amp;lt;br&amp;gt;&amp;quot;; 	&lt;br /&gt;
	my $check = ReadingsVal($name,&amp;quot;newFwForDevices&amp;quot;,&amp;quot;error =&amp;gt; no or wrong data from eq3-server!&amp;quot;); 	&lt;br /&gt;
	if($check eq &amp;quot;no fw-updates needed!&amp;quot;) {&lt;br /&gt;
		$ret .= &#039;| &#039;;&lt;br /&gt;
		$ret .= &#039;&amp;lt;b style=&amp;quot;color:green&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
		$ret .= sprintf(&amp;quot;%-80s&amp;quot;,$check);&lt;br /&gt;
		$ret .= &#039;&amp;lt;/b&amp;gt;&#039;;&lt;br /&gt;
		$ret .= &#039; |&#039;;&lt;br /&gt;
	} elsif($check eq &amp;quot;error =&amp;gt; no or wrong data from eq3-server!&amp;quot;) {&lt;br /&gt;
		$ret .= &#039;| &#039;;&lt;br /&gt;
		$ret .= &#039;&amp;lt;b style=&amp;quot;color:red&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
		$ret .= sprintf(&amp;quot;%-80s&amp;quot;,$check);&lt;br /&gt;
		$ret .= &#039;&amp;lt;/b&amp;gt;&#039;;&lt;br /&gt;
		$ret .= &#039; |&#039;;&lt;br /&gt;
	} else { 		&lt;br /&gt;
		my @devices = split(&#039;,&#039;,$check); 		&lt;br /&gt;
		foreach my $devStr (@devices) { 			&lt;br /&gt;
			my ($dev,$md,$ofw,$idx,$nfw,$date) = $devStr =~ m/^([^\s]+)\s\(([^\s]+)\s\|\sfw_(\d+\.\d+)\s=&amp;gt;\sfw(\d\d)_([\d\.]+)\s\|\s([^\)]+)\)$/; 			&lt;br /&gt;
			my $link = ReadingsVal($name,&amp;quot;fw_link-&amp;quot;.$idx,&amp;quot;???&amp;quot;); 			&lt;br /&gt;
			$ret .= &#039;| &#039;; 			&lt;br /&gt;
			$ret .= &#039;&amp;lt;a href=&amp;quot;/fhem?detail=&#039;.$dev.&#039;&amp;quot;&amp;gt;&#039;;  			&lt;br /&gt;
			$ret .= sprintf(&amp;quot;%-23s&amp;quot;,$dev); 			&lt;br /&gt;
			$ret .= &#039;&amp;lt;/a&amp;gt;&#039;;  			&lt;br /&gt;
			$ret .= &amp;quot; | &amp;quot;;  			&lt;br /&gt;
			$ret .= &#039;&amp;lt;b&#039;.(($md eq &amp;quot;?&amp;quot;)?&#039; title=&amp;quot;missing attribute model =&amp;gt; set device in teach mode to receive missing data&amp;quot; style=&amp;quot;color:yellow&amp;quot;&#039;:&#039; style=&amp;quot;color:lightgray&amp;quot;&#039;).&#039;&amp;gt;&#039;;  			&lt;br /&gt;
			$ret .= sprintf(&amp;quot;%-23s&amp;quot;,$md); 			&lt;br /&gt;
			$ret .= &#039;&amp;lt;/b&amp;gt;&#039;;  			&lt;br /&gt;
			$ret .= &amp;quot; | &amp;quot;;  			&lt;br /&gt;
			$ret .= &#039;&amp;lt;b&#039;.(($ofw eq &amp;quot;0.0&amp;quot;)?&#039; title=&amp;quot;missing attribute firmware =&amp;gt; set device in teach mode to receive missing data&amp;quot; style=&amp;quot;color:yellow&amp;quot;&#039;:&#039; style=&amp;quot;color:lightgray&amp;quot;&#039;).&#039;&amp;gt;&#039;;  			&lt;br /&gt;
			$ret .= sprintf(&amp;quot;%6s&amp;quot;,$ofw); 			&lt;br /&gt;
			$ret .= &#039;&amp;lt;/b&amp;gt;&#039;;  			&lt;br /&gt;
			$ret .= &amp;quot; | &amp;quot;;  			&lt;br /&gt;
			$ret .= &#039;&amp;lt;a title=&amp;quot;eq3-firmware.tgz&amp;quot; href=&amp;quot;&#039;.$link.&#039;&amp;quot;&amp;gt;&#039;;  			&lt;br /&gt;
			$ret .= &#039;&amp;lt;b style=&amp;quot;color:red&amp;quot;&amp;gt;&#039;;  			&lt;br /&gt;
			$ret .= sprintf(&amp;quot;%6s&amp;quot;,$nfw); 			&lt;br /&gt;
			$ret .= &#039;&amp;lt;/b&amp;gt;&#039;;  			&lt;br /&gt;
			$ret .= &#039;&amp;lt;/a&amp;gt;&#039;;  			&lt;br /&gt;
			$ret .= &amp;quot; | &amp;quot;;  			&lt;br /&gt;
			$ret .= sprintf(&amp;quot;%-10s&amp;quot;,$date); 			&lt;br /&gt;
			$ret .= &amp;quot; |&amp;lt;br&amp;gt;&amp;quot;;  		&lt;br /&gt;
		} 	&lt;br /&gt;
	} 	&lt;br /&gt;
	$ret .= &#039;&amp;lt;/pre&amp;gt;&#039;; 	&lt;br /&gt;
	$ret .= &#039;&amp;lt;/div&amp;gt;&#039;; 	&lt;br /&gt;
	return $ret; &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sondersituationen ===&lt;br /&gt;
[[Datei:HM-FWUpdate-eQ3-check.png|mini|455px|right|Fehlerbedingung: Attribut &#039;&#039;firmware&#039;&#039; nicht gesetzt]]&lt;br /&gt;
Das Tool überprüft gleichzeitig auch bestimmte Rahmenbedingungen, so z.B., ob bei allen HomeMatic Devices die Attribute &#039;&#039;model&#039;&#039; und &#039;&#039;firmware&#039;&#039; gesetzt sind. Sollte das nicht der Fall sein, wird das Device in der Liste &lt;br /&gt;
* mit einem gelben &amp;quot;old_fw&amp;quot; Wert von 0.0 geführt; befindet sich der Mauszeiger über dem &amp;quot;0.0&amp;quot;, wird der Hinweistext &#039;&#039;missing attribute firmware =&amp;gt; set device in teach mode to receive missing data&#039;&#039; angezeigt (siehe Beispiel im Screenshot)&lt;br /&gt;
* mit einem gelben {{Taste|?}} in der Spalte &amp;quot;model&amp;quot; angezeigt; befindet sich der Mauszeiger über dem &amp;quot;?&amp;quot;, wird der Hinweistext &#039;&#039;missing attribute model =&amp;gt; set device in teach mode to receive missing data&#039;&#039; angezeigt&lt;br /&gt;
In diesem Fall sollte bei dem betreffenden Gerät versucht werden, mit &#039;&#039;getConfig&#039;&#039; die Daten zu aktualisieren bzw. vervollständigen.&lt;br /&gt;
&lt;br /&gt;
Darüber hinaus ist zu beachten, dass die Firmware-Version in den HomeMatic Geräten zwei&amp;quot;teilig&amp;quot; (Version.Release) abgelegt ist, die Firmware Update-Dateien jedoch drei&amp;quot;teilige&amp;quot; Versionskennungen (Version_Release_???) haben. Für den Vergleich, ob neue Firmware verfügbar ist, kann natürlich nur die zweiteilige Kennung verwendet werden, eine Änderung im dritten Teil der Versionskennung kann daher nicht automatisch erkannt werden.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [https://www.eq-3.de/service/downloads.html Firmware Download] Seite von eq-3&lt;br /&gt;
* Forenthread zur {{Link2Forum|Topic=47729|LinkText=&amp;quot;Firmware Versionsprüfung&amp;quot;}}&lt;br /&gt;
* [http://git.zerfleddert.de/hmcfgusb/ Firmware Update Tool] von mgernoth&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components|1toolsAndWork]]&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Burny4600</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Weckautomation&amp;diff=22665</id>
		<title>Weckautomation</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Weckautomation&amp;diff=22665"/>
		<updated>2017-09-22T13:08:01Z</updated>

		<summary type="html">&lt;p&gt;Burny4600: Fehlerkorrektur Wake-up Timer 2 attr rr_Julian_wakeuptimer2 wakeupEnforce 1 korrigiert auf attr rr_Julian_wakeuptimer2 wakeupEnforced 1  Wake-up Timer 3 attr rr_Julian_wakeuptimer3 wakeupEnforce 3 korrigiert auf attr rr_Julian_wakeuptimer3 wakeupEnforced&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die Module ROOMMATE und GUEST können dazu genutzt werden, Bewohner und Gäste in FHEM als ein Device zu repräsentieren und durch Events deren Status zu erfassen bzw. zu ändern (beispielsweise durch das GEOFANCY Modul für [[Anwesenheitserkennung]]). Das zur Modulfamilie dazugehörige Modul RESIDENTS fasst die Status mehrerer Bewohner logisch zusammen.&lt;br /&gt;
&lt;br /&gt;
Inzwischen unterstützen die Module auch bei der Erstellung einer Weckautomation, indem sie die Logik kapseln und häufig verwendete Standardfunktionen bereitstellen. Die Verwendung soll in diesem Artikel anhand eines Beispiels näher erläutert werden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Weckprogramm_Ergebnisdarstellung.png|500px|thumb|right|Darstellung der Beispiel-Konfiguration]]&lt;br /&gt;
&lt;br /&gt;
== Was soll erreicht werden? ==&lt;br /&gt;
&lt;br /&gt;
Hier ein kurzer Überblick über die Funktionen, die wir am Ende realisiert haben werden:&lt;br /&gt;
&lt;br /&gt;
; 3 unterschiedliche Wecker&lt;br /&gt;
: 1 für Werktage Mo-Fr&lt;br /&gt;
: 1 für werktägliche Samstage&lt;br /&gt;
: 1 für Sonn- und Feiertage&lt;br /&gt;
; Automatischer Reset der Weckzeiten&lt;br /&gt;
: werktäglicher Wecker soll auf einen Standardwert zurückstellen, falls er mal verstellt wurde&lt;br /&gt;
: automatischer Reset des werktäglicher Weckers soll zeitweise abschaltbar sein&lt;br /&gt;
: nach einem Sonn- oder Feiertagen soll der automatische Reset des werktäglichen Weckers immer wieder eingeschaltet werden&lt;br /&gt;
: die Samstags- und Sonntags-Wecker sollen immer nach ihrer Ausführung resettet werden&lt;br /&gt;
; jeder Wecker startet ein Weckprogramm 30 Minuten vor der programmierten Zeit&lt;br /&gt;
: langsames hochfahren der Rollläden&lt;br /&gt;
: Wakeup Light über eine HUE Birne von Warmweiß/2000K zu Kaltweiß/5600K&lt;br /&gt;
: an Werktagen: Chillout Weckmusik wird langsam lauter gestellt&lt;br /&gt;
: Snooze Funktion über die SONOS Taste am Gerät an Werktagen (erneutes Play nach 5 Minuten)&lt;br /&gt;
: forciertes Aufstehen an Werktagen durch automatischen Wechsel des Bewohner Devices zu &amp;quot;awake&amp;quot; und dadurch starten der &amp;quot;aufgestanden sein&amp;quot; Prozesse (siehe unten)&lt;br /&gt;
; Starten des Weckprogramms nur bei tatsächlicher Anwesenheit des betroffenen Bewohners&lt;br /&gt;
; Ansage der Uhrzeit zur gewählten Weckzeit&lt;br /&gt;
; Prozess / Automation für:&lt;br /&gt;
: &amp;lt;u&amp;gt;bettfertig machen&amp;lt;/u&amp;gt;: Lichtszene setzen, Chillout Musik in Schlafzimmer und Badezimmer abspielen&lt;br /&gt;
: &amp;lt;u&amp;gt;schlafen legen&amp;lt;/u&amp;gt;: Ansage der eingestellten Weckzeit &amp;amp; Ausschalten aller Verbraucher&lt;br /&gt;
: &amp;lt;u&amp;gt;aufgestanden sein&amp;lt;/u&amp;gt;: Ansage Raumluftqualität, Wettervorhersage; Lokalradio einschalten und in Räume verteilen; Küchenlicht an, HUE in Schlafzimmer mit Aufwach-Farbtemperatur&lt;br /&gt;
; Berücksichtigung / Steuerung des Haus Modus&lt;br /&gt;
: Wechsel zwischen Morgen-, Tag-, Abend- und Nacht-Modus entsprechend der Schlafgewohnheiten (zusätzlich zur Tageszeit abhängigen Steuerung/Umschaltung, die hier aber nicht Thema sein soll)&lt;br /&gt;
; Statuswerte, Events, Readings und Funktionen:&lt;br /&gt;
: Wurde ein Wecker ausgelöst?&lt;br /&gt;
: Ist gerade ein Weckprogramm aktiv?&lt;br /&gt;
: Abbrechen/sofortiges beenden des Weckprogramms&lt;br /&gt;
: Verhindern von durch Fehlkonfiguration parallel ausgeführten Weckern für die selbe Person&lt;br /&gt;
: Welcher ist der nächste Wecker, der bis Mitternacht des nächsten Tages ausgeführt wird und wann ist das?&lt;br /&gt;
: Wann wurde ein Wecker zuletzt ausgeführt und welcher Wecker wurde überhaupt zuletzt ausgeführt?&lt;br /&gt;
: Wie viele Bewohner werden gerade geweckt?&lt;br /&gt;
: Wie viele Bewohner sind gerade aufgestanden?&lt;br /&gt;
: Schaltung bei erstem Bewohner, der geweckt wird&lt;br /&gt;
: Schaltung bei erstem Bewohner, der aufgestanden ist&lt;br /&gt;
; Statistik&lt;br /&gt;
: Wie lange dauerte der Schlaf des Bewohners?&lt;br /&gt;
: Wie lange war in dem Haus niemand wach?&lt;br /&gt;
&lt;br /&gt;
Wichtig dabei zu erwähnen ist, dass die Prozesse so umgesetzt worden sind, dass Bewohner sowohl zeitgleich, als auch zeitversetzt oder komplett getrennt ins Bett gehen und aufwachen können.&lt;br /&gt;
Dafür werden einige Schaltungen pro Bewohner und dessen Schlafzimmer vorgenommen und andere erst dann, wenn die RESIDENTS Bewohnergruppe einen bestimmten Status erreicht hat.&lt;br /&gt;
&lt;br /&gt;
== Notwendige Devices anlegen ==&lt;br /&gt;
&lt;br /&gt;
=== RESIDENTS und ROOMMATE Devices ===&lt;br /&gt;
Wir starten mit einem RESIDENTS Device, um die Bewohner Status später logisch zusammenfassen zu können:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define rgr_Bewohner RESIDENTS&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend legen wir pro Bewohner ein ROOMMATE Device an. Dafür verwenden wir eine Funktion, die in RESIDENTS eingebaut ist und die Devices korrekt untereinander verbindet (die Reihenfolge, in der RESIDENTS und ROOMMATE/GUEST Geräte definiert werden, sind hier entscheidend). Der Einfachheit halber definieren wir in diesem Beispiel nur einen Bewohner.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set rgr_Bewohner addRoommate Julian&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es wurde nun automatisch ein Device namens &amp;quot;rr_Julian&amp;quot; angelegt (abgeleitet aus dem angegebenen Vornamen aus dem addRoommate Befehl).&lt;br /&gt;
Anschließend setzen wir einmalig den initialen Status für die Bewohner mittels set Befehl:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set rr_Julian home&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der automatische Wechsel des Status bei Anwesenheit/Abwesenheit wird hier nicht weiter thematisiert, hier sei auf den Artikel [[Anwesenheitserkennung]] verwiesen, insbesondere den GEOFANCY Teil.&lt;br /&gt;
&lt;br /&gt;
=== Wecker Devices anlegen ===&lt;br /&gt;
&lt;br /&gt;
Die Devices, über die die Weckzeit und das Auslöseverhalten eingestellt werden, sind eigentlich normale Dummy Devices. Das zugewiesene ROOMMATE/GUEST/RESIDENTS Device &amp;quot;versklavt&amp;quot; diese Geräte jedoch und führt bestimmte Befehle zur Wecksteuerung und -Verwaltung aus, sobald das Dummy-Device geändert wird. Der Vorteil dabei ist, dass man sich eine Menge eigenen Code und viele unterschiedliche Notify und Dummy Devices spart, was wiederum der Übersichtlichkeit zu Gute kommt.&lt;br /&gt;
&lt;br /&gt;
Wir legen nun unsere drei Wecker für unseren Beispiel Bewohner an. Dafür führen wir einfach 3 mal den selben Befehl hintereinander aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set rr_Julian create wakeuptimer&lt;br /&gt;
set rr_Julian create wakeuptimer&lt;br /&gt;
set rr_Julian create wakeuptimer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der Logdatei erscheinen verschiedene Meldungen über alle automatisch angelegte Devices inkl. Name und Typ:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2015.03.28 12:19:49 3: RESIDENTStk rr_Julian_wakeuptimer1: new notify macro device Macro_rr_Julian_wakeuptimer1 created&lt;br /&gt;
2015.03.28 12:19:50 3: RESIDENTStk rr_Julian_wakeuptimer1: new at-device at_rr_Julian_wakeuptimer1 created&lt;br /&gt;
2015.03.28 12:19:50 3: RESIDENTStk rr_Julian_wakeuptimer1: new macro device Macro_rr_Julian_gotosleep created&lt;br /&gt;
2015.03.28 12:19:50 3: RESIDENTStk rr_Julian_wakeuptimer1: new watchdog device wd_rr_Julian_gotosleep created&lt;br /&gt;
2015.03.28 12:19:50 3: RESIDENTStk rr_Julian_wakeuptimer1: new macro device Macro_rr_Julian_asleep created&lt;br /&gt;
2015.03.28 12:19:50 3: RESIDENTStk rr_Julian_wakeuptimer1: new watchdog device wd_rr_Julian_asleep created&lt;br /&gt;
2015.03.28 12:19:50 3: RESIDENTStk rr_Julian_wakeuptimer1: new macro device Macro_rr_Julian_awoken created&lt;br /&gt;
2015.03.28 12:19:50 3: RESIDENTStk rr_Julian_wakeuptimer1: new watchdog device wd_rr_Julian_awoken created&lt;br /&gt;
2015.03.28 12:19:50 3: RESIDENTStk rr_Julian_wakeuptimer1: new macro device Macro_rgr_Bewohner_gotosleep created&lt;br /&gt;
2015.03.28 12:19:50 3: RESIDENTStk rr_Julian_wakeuptimer1: new watchdog device wd_rgr_Bewohner_gotosleep created&lt;br /&gt;
2015.03.28 12:19:50 3: RESIDENTStk rr_Julian_wakeuptimer1: new macro device Macro_rgr_Bewohner_asleep created&lt;br /&gt;
2015.03.28 12:19:50 3: RESIDENTStk rr_Julian_wakeuptimer1: new watchdog device wd_rr_Julian_asleep created&lt;br /&gt;
2015.03.28 12:19:50 3: RESIDENTStk rr_Julian_wakeuptimer1: new macro device Macro_rgr_Bewohner_awoken created&lt;br /&gt;
2015.03.28 12:19:51 3: RESIDENTStk rr_Julian_wakeuptimer1: new watchdog device wd_rr_Julian_awoken created&lt;br /&gt;
2015.03.28 12:21:49 3: RESIDENTStk rr_Julian_wakeuptimer2: new notify macro device Macro_rr_Julian_wakeuptimer2 created&lt;br /&gt;
2015.03.28 12:21:49 3: RESIDENTStk rr_Julian_wakeuptimer2: new at-device at_rr_Julian_wakeuptimer2 created&lt;br /&gt;
2015.03.28 12:21:56 3: RESIDENTStk rr_Julian_wakeuptimer3: new notify macro device Macro_rr_Julian_wakeuptimer3 created&lt;br /&gt;
2015.03.28 12:21:56 3: RESIDENTStk rr_Julian_wakeuptimer3: new at-device at_rr_Julian_wakeuptimer3 created&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als Rückgabe in FHEMWEB erhält man eine Meldung wie diese hier:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Dummy rr_Julian_wakeuptimer1 and other pending devices created and pre-configured. &lt;br /&gt;
You may edit Macro_rr_Julian_wakeuptimer1 to define your wake-up actions &lt;br /&gt;
and at_rr_Julian_wakeuptimer1 for optional at-device adjustments.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wie man sieht wurden anfänglich eine ganze Menge von Notify-Macros und Watchdogs sowie ein at-Device pro Wecker angelegt.&lt;br /&gt;
Dabei sind vor allem die Macro-Devices und die Wecker Dummy Devices interessant. Hier werden Weck- und Auslöseverhalten konfiguriert. die at- und Watchdog-Devices können aber für fortgeschrittene Nutzer beliebig angepasst werden. Auch die Dummy Devices können bis auf wenige Ausnahmen (Attribut &amp;quot;userattr&amp;quot;) vollständig umkonfiguriert werden. Wer Devices umbenennt, sollte unbedingt darauf achten, dass auch das entsprechende Attribut im Wecker-Dummy-Device angepasst wird.&lt;br /&gt;
&lt;br /&gt;
Allen Devices ist ein entsprechender Kommentar hinzugefügt, der dessen Funktion kurz erklärt.&lt;br /&gt;
Alle Macros enthalten bereits ein Gerüst für den Weckprozess mit einigen Beispielen. Die Beispielschaltungen sind dabei noch auskommentiert. Nicht auskommentierter Code sollte als notwendiger Teil für die Weckautomation betrachtet werden und wird dort auch durch einen entsprechenden Kommentar erklärt.&lt;br /&gt;
&lt;br /&gt;
Im Folgenden werden wir jetzt Schritt für Schritt das oben beschriebene Szenario konfigurieren.&lt;br /&gt;
&lt;br /&gt;
== Konfiguration des Auslöseverhaltens ==&lt;br /&gt;
&lt;br /&gt;
In der Grundkonfiguration löst jeder Wecker sein eigenes Weckprogramm täglich zur voreingestellten Zeit aus. Dabei wird allerdings kein längeres Programm gestartet, sondern lediglich einmalig das im Attribut wakeupMacro hinterlegte Notify-Macro getriggert. Das ist in der Beispiel-Grundkonfiguration kein Problem und lässt lediglich einen Logfile Eintrag erstellen.&lt;br /&gt;
&lt;br /&gt;
Als erstes möchten wir, dass alle 3 Timer das selbe Macro zum Wecken verwenden, damit wir den Code nur einmal pflegen müssen. Die anderen beiden Macros löschen wir anschließend:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr rr_Julian_wakeuptimer2 wakeupMacro Macro_rr_Julian_wakeuptimer1&lt;br /&gt;
attr rr_Julian_wakeuptimer3 wakeupMacro Macro_rr_Julian_wakeuptimer1&lt;br /&gt;
delete Macro_rr_Julian_wakeuptimer2&lt;br /&gt;
delete Macro_rr_Julian_wakeuptimer3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun konfigurieren wir die Auslöseverhalten so, wie wir es oben vorgegeben haben:&lt;br /&gt;
&lt;br /&gt;
=== Wake-up Timer 1 ===&lt;br /&gt;
&lt;br /&gt;
Wecker nur Mo-Fr auslösen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr rr_Julian_wakeuptimer1 wakeupDays 1,2,3,4,5&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wecker zusätzlich auf Tage beschränken, die keine Feiertage sind:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr rr_Julian_wakeuptimer1 wakeupHolidays andNoHoliday&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;i&amp;gt;&amp;lt;u&amp;gt;Hinweis:&amp;lt;/u&amp;gt; Hierfür muss ein [http://fhem.de/commandref.html#holiday holiday-Device] erstellt sein und in der global Config im Attribut &#039;holidays2we‘ verlinkt sein. Ansonsten erhält man beim setzen einer Weckzeit später entsprechende Fehlermeldungen, die darauf hinweisen.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Länge des Weckprogramms auf 30 Minuten festlegen (sprich 30 Minuten vor der eingestellten Weckzeit beginnen):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr rr_Julian_wakeuptimer1 wakeupOffset 30&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aufstehen forcieren:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr rr_Julian_wakeuptimer1 wakeupEnforced 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Standard Weckzeit hinterlegen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr rr_Julian_wakeuptimer1 wakeupDefaultTime 07:30&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weckzeit nur an diesen Tagen automatisch zurückstellen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr rr_Julian_wakeuptimer1 wakeupResetdays 1,2,3,4,5&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;i&amp;gt;&amp;lt;u&amp;gt;Hinweis:&amp;lt;/u&amp;gt; Ein Reset findet normalerweise nach jeder Auslösung statt, sprich wenn das Weckprogramm tatsächlich gestartet wurde. Dies kann man auf bestimmte Tage einschränken.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum einfacheren Aktivieren/Deaktivieren des Resets wollen wir ein weiteres Dummy nutzen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr rr_Julian_wakeuptimer1 wakeupResetSwitcher rr_Julian_wakeuptimer1_resetswitcher&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;i&amp;gt;&amp;lt;u&amp;gt;Hinweis:&amp;lt;/u&amp;gt; Der Dummy-Gerätename kann frei gewählt werden. Sofern es nicht existiert wird es automatisch angelegt und vorkonfiguriert.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Wake-up Timer 2 ===&lt;br /&gt;
&lt;br /&gt;
Wecker nur Samstags auslösen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr rr_Julian_wakeuptimer2 wakeupDays 6&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wecker zusätzlich auf Tage beschränken, die keine Feiertage sind:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr rr_Julian_wakeuptimer2 wakeupHolidays andNoHoliday&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Länge des Weckprogramms auf 30 Minuten festlegen (sprich 30 Minuten vor der eingestellten Weckzeit beginnen):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr rr_Julian_wakeuptimer2 wakeupOffset 30&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aufstehen forcieren:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr rr_Julian_wakeuptimer2 wakeupEnforced 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Standard Weckzeit hinterlegen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr rr_Julian_wakeuptimer2 wakeupDefaultTime 09:30&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weckzeit nur an diesen Tagen automatisch zurückstellen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr rr_Julian_wakeuptimer2 wakeupResetdays 6&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Wake-up Timer 3 ===&lt;br /&gt;
&lt;br /&gt;
Wecker nur Sonntags auslösen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr rr_Julian_wakeuptimer3 wakeupDays 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wecker zusätzlich auch an Feiertagen ausführen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr rr_Julian_wakeuptimer3 wakeupHolidays orHoliday&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aufstehen nur forcieren, wenn eine frühere Weckzeit als die Standard Weckzeit eingestellt wurde:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr rr_Julian_wakeuptimer3 wakeupEnforced 3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Länge des Weckprogramms auf 30 Minuten festlegen (sprich 30 Minuten vor der eingestellten Weckzeit beginnen):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr rr_Julian_wakeuptimer3 wakeupOffset 30&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Standard Weckzeit hinterlegen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr rr_Julian_wakeuptimer3 wakeupDefaultTime 10:30&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Definition des Weckprogramms ==&lt;br /&gt;
&lt;br /&gt;
Die Aktionen, welche innerhalb der 30 Minuten Weckzeitraum abgearbeitet werden sollen, sind im Device Macro_rr_Julian_wakeuptimer1 hinterlegt.&lt;br /&gt;
Dieses Macro wird 2 Mal aufgerufen: Das erste Mal beim Beginn des Weckprogramms und ein zweites Mal beim Ende des Weckprogramms. Der Hintergrund ist, dass das Macro beim Beenden dann entsprechend dafür sorgen kann bisher nicht ausgeführte Befehle des Programmablaufes zu stornieren. Hierfür ist der delete-Befehl am Anfang des Macros gedacht.&lt;br /&gt;
&lt;br /&gt;
Das Macro Template hat bereits alle oben beschriebenen Funktionen als auskommentierte FHEM Befehle enthalten. Diese sollen natürlich nur dem Beispiel und der eigenen Inspiration dienen. Wir müssten diese an dieser Stelle lediglich einkommentieren...&lt;br /&gt;
Insgesamt fällt bei genauerem hinsehen folgendes auf:&lt;br /&gt;
&lt;br /&gt;
* es stehen bestimmte Umgebungsvariablen bereit, die während des Programmablaufes genutzt werden können&lt;br /&gt;
* das Macro ist in 3 Bereiche unterteilt und nutzt dafür die Umgebungsvariable $EVTPART0 bzw. ob deren Wert auf &amp;quot;start&amp;quot; oder &amp;quot;stop&amp;quot; steht&lt;br /&gt;
* der erste Bereich mit dem delete-Befehl wird immer ausgeführt. Er räumt durch das Macro erzeugte temporäre at-Devices auf (entweder weil das Programm früher beendet werden soll oder von vorne beginnen soll)&lt;br /&gt;
* der zweite Bereich &amp;quot;start&amp;quot; führt erste FHEM Befehle direkt nach dem Beginn des Weckprogramms aus. Außerdem werden weitere Befehle in bestimmten Etappen zur zeitversetzten Ausführung vorgemerkt. Dafür werden temporär erzeugte at-Devices verwendet.&lt;br /&gt;
* der Name der at-Devices folgt einem bestimmten Schema, nämlich atTmp_&amp;lt;LAUFENDE-NUMMER&amp;gt;_$NAME. Die laufende Nummer muss man manuell hochzählen, der Rest kann einfach kopiert werden. Wenn man davon abweicht, muss man den delete-Befehl am Anfang auch anpassen.&lt;br /&gt;
* bei der Definition der at-Devices müssen mehrere FHEM Befehle hintereinander mit 2 Semikolon statt einem getrennt werden (siehe auch [http://fhem.de/commandref_DE.html#command Kommando-Referenz]).&lt;br /&gt;
* bei bedingten Schaltungen empfehlt es sich für übersichtlicheren Code die :FILTER Funktion zu nutzen (siehe auch [http://fhem.de/commandref_DE.html#devspec Kommando-Referenz]).&lt;br /&gt;
* es ist unbedingt darauf zu achten, dass das letzte at-Device nicht nach der wakeupOffset Zeit definiert wird, da es ansonsten automatisch gelöscht und somit nicht mehr ausgeführt wird&lt;br /&gt;
* nach einem ordentlichen Ende des Weckprogramms wird ein at-Device erzeugt, welches das Benutzer-Device automatisch nach &amp;quot;awoken&amp;quot; oder &amp;quot;home&amp;quot; schaltet, abhängig davon ob das Wecken forciert werden soll oder nicht. Dieser Teil wird tatsächlich nur geplant, wenn das Weckprogramm ordentlich beendet wurde. Wurde das Weckprogramm durch ein &amp;quot;set rr_Julian_wakeuptimer1 stop&amp;quot; bzw. durch Klick auf das blaue Device-Icon beendet, so werden die Post-Wakeup Befehle nicht mehr ausgeführt, weil man davon ausgehen kann, dass ein Abbruch des Programms und somit aller seiner weiteren Schaltungen gewünscht ist.&lt;br /&gt;
&lt;br /&gt;
Man kann sein Weckprogramm auf zwei Arten testen:&lt;br /&gt;
&lt;br /&gt;
* durch senden des set-Befehls &amp;quot;trigger&amp;quot;: hier werden die aktuellen Auslösedefinitionen berücksichtigt; sprich, wenn heute nicht der richtige Tag ist, wird das Programm nicht gestartet&lt;br /&gt;
* durch senden des set-Befehls &amp;quot;start&amp;quot; kann man alle Auslösedefinitionen umgehen und das Weckprogramm direkt auslösen&lt;br /&gt;
&lt;br /&gt;
Zu Debug-Zwecken kann man auf das Wecker Dummy-Device das Attribut &amp;quot;verbose&amp;quot; auf 4 setzen. Im Logfile wird dann sehr ausführlich geloggt, warum wie geschaltet oder nicht geschaltet wird und wie die Entscheidungen getroffen worden sind, Readings zu aktualisieren etc. Damit lässt sich prüfen, ob das gewünschte Auslöseverhalten tatsächlich richtig funktioniert.&lt;br /&gt;
&lt;br /&gt;
== Definition der Aktionen für den Prozess &amp;quot;bettfertig machen&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
Möchte der Bewohner nun ins Bett gehen und sich dabei noch etwas darauf einstimmen, kann er sein &amp;quot;bettfertig machen&amp;quot;-Programm dadurch starten, dass er den Status seines ROOMMATE-Devices in FHEM auf &amp;quot;gotosleep&amp;quot; setzt.&lt;br /&gt;
In unserem Beispiel werden dann die Aktionen aus Macro_rr_Julian_gotosleep ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Zeitgleich wird im RESIDENTS-Device rgr_Bewohner das Reading &amp;quot;residentsGotosleep&amp;quot; um 1 erhöht und ein Event erzeugt. Befinden sich gar alle anwesenden Bewohner im Status &amp;quot;gotosleep&amp;quot; wechselt der Gesamtstatus von rgr_Bewohner auch auf &amp;quot;gotosleep&amp;quot;. Dies löst dann Macro_rgr_Bewohner_gotosleep aus. Dort werden dann Schaltungen vorgenommen, die von größerer Tragweite sind, als wenn nur ein einzelner Bewohner ins Bett geht. Beispielsweise könnte man in bestimmten Räumen das Licht oder Geräte ausschalten, die man ansonsten unberührt gelassen hätte, wenn andere noch wach blieben.&lt;br /&gt;
&lt;br /&gt;
== Definition der Aktionen für den Prozess &amp;quot;schlafen legen&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
Legt sich der Bewohner ins Bett und möchte schlafen, wechselt er den Status seines ROOMMATE-Devices auf &amp;quot;asleep&amp;quot;. Ich mache das bei mir durch einen extra Wandschalter.&lt;br /&gt;
&lt;br /&gt;
In unserem Beispiel werden jetzt die Aktionen aus Macro_rr_Julian_asleep ausgeführt. In dem Macro wird besonders Wert darauf gelegt, dass ausschließlich Aktionen ausgeführt werden, die mit dem Schlafzimmer des Bewohners zu tun haben, damit andere Bewohner in anderen Räumen nicht beeinträchtigt werden.&lt;br /&gt;
&lt;br /&gt;
Zeitgleich werden im RESIDENTS-Device rgr_Bewohner das Reading &amp;quot;residentsGotosleep&amp;quot; um 1 erniedrigt, das Reading &amp;quot;residentsAsleep&amp;quot; um 1 erhöht und ein Event erzeugt. Befinden sich gar alle anwesenden Bewohner im Status &amp;quot;asleep&amp;quot; wechselt der Gesamtstatus von rgr_Bewohner auch auf &amp;quot;asleep&amp;quot;. Dies löst dann Macro_rgr_Bewohner_asleep aus. Dort werden dann auch wieder Schaltungen vorgenommen, die von größerer Tragweite sind. Beispielsweise werden alle noch übrigen Lichter im Haus ausgeschaltet und die Musikwiedergabe in Gemeinschaftsräumen (wie hier dem Badezimmer) gestoppt.&lt;br /&gt;
&lt;br /&gt;
== Definition der Aktionen für den Prozess &amp;quot;aufgestanden sein&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
Wir gehen nun davon aus, dass irgendwann morgens das Weckprogramm wie oben zuvor definiert abgespielt wird. Dabei wechselt im Device rgr_Bewohner das Reading residentsTotalWakeup auf 1 (oder höher bei mehreren gleichzeitig aktiven Weckprogrammen unterschiedlicher Bewohner).&lt;br /&gt;
&lt;br /&gt;
Während des Weckprogramms (oder natürlich auch davor) kann der Bewohner jederzeit in den Status &amp;quot;awoken&amp;quot; wechseln. Ich nutze bei mir auch hier wieder den Wandschalter.&lt;br /&gt;
Dadurch wird ein evtl. noch laufendes Weckprogramm unterbrochen (die at-Devices in FHEM werden automatisch aufgräumt) und die Aktionen in Macro_rr_Julian_awoken werden ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Neben dem expliziten Wechsel zum Status &amp;quot;awoken&amp;quot; kann aber, wie oben beschrieben, auch das Weckprogramm selbst den Bewohner auf diesen Status setzen. Dies wird dann als forciertes Wecken bezeichnet; sozusagen um seinen Hintern aus dem Bett zu bewegen :-)&lt;br /&gt;
Sinnvollerweise wechselt der Status des Bewohners nach kurzer Zeit dann automatisch von &amp;quot;awoken&amp;quot; auf &amp;quot;home&amp;quot;, also den Standard-Status wenn man zuhause ist.&lt;br /&gt;
&lt;br /&gt;
Zeitgleich zum Wechsel des ROOMMATE-Devices auf &amp;quot;awoken&amp;quot; wird auch wieder das RESIDENTS-Device automatisch angepasst: Das Reading &amp;quot;residentsAsleep&amp;quot; wird um 1 erniedrigt, das Reading &amp;quot;residentsAwoken&amp;quot; um 1 erhöht und ein Event erzeugt. &lt;br /&gt;
Außerdem wird der Gesamtstatus auf &amp;quot;awoken&amp;quot; gesetzt. Dies löst Macro_rgr_Bewohner_awoken aus. Hier werden auch wieder Schaltungen vorgenommen, die das Haus dann für den ersten, der aufsteht, entsprechend einzustellen, also beispielsweise das Licht in der Küche einschalten.&lt;br /&gt;
Zusätzlich wird dann ein temporäres at-Devices angelegt, welches dafür sorgt, dass der Haus Modus nach 1,5h von &amp;quot;Morgen&amp;quot; auf &amp;quot;Tag&amp;quot; wechselt. Allerdings ist der Haus Modus wie schon erwähnt hier nicht das Hauptthema und wird aktuell auch noch nicht direkt vom RESIDENTS Toolkit unterstützt (Sneak-Peek auf zukünftige Erweiterungen ;-)).&lt;br /&gt;
&lt;br /&gt;
== Snooze Funktion bei SONOS ==&lt;br /&gt;
&lt;br /&gt;
Damit man an gewissen Tagen auch dem Wecker mal auf&#039;n Kopp hauen kann (bzw. auf den Start/Stop Button am SONOS Gerät), kann man ein einfaches DOIF erzeugen, welches dafür sorgt, dass man nach 5 Minuten wieder daran erinnert wird aufzustehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define di_Sonos_Snooze DOIF (&lt;br /&gt;
	[Sonos_Bedroom:?transportState] and (&lt;br /&gt;
		([rr_Julian:wakeup] == 0 and [rr_Julian:wakeup:sec] &amp;gt;= 600) or&lt;br /&gt;
		$we&lt;br /&gt;
	) or&lt;br /&gt;
	(&lt;br /&gt;
		([rr_Julian:wakeup] == 0 and [rr_Julian:wakeup:sec] &amp;gt;= 600) or&lt;br /&gt;
		$we&lt;br /&gt;
	)&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
DOELSEIF&lt;br /&gt;
(&lt;br /&gt;
	[Sonos_Bedroom:?transportState] and&lt;br /&gt;
	([Sonos_Bedroom:transportState] eq &amp;quot;STOPPED&amp;quot; or [Sonos_Bedroom:transportState] eq &amp;quot;PAUSED_PLAYBACK&amp;quot;) and&lt;br /&gt;
	([?rr_Julian:wakeup] == 1 or [rr_Julian:wakeup:sec] &amp;lt; 600) and&lt;br /&gt;
	!$we&lt;br /&gt;
)&lt;br /&gt;
(&lt;br /&gt;
	set Sonos_Bedroom:FILTER=transportState!=PLAYING Play&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
DOELSE&lt;br /&gt;
&lt;br /&gt;
attr alias Automation: Sonos Snoozing&lt;br /&gt;
attr cmdState off|on|standby&lt;br /&gt;
attr comment snooze function for wake-up program via SONOS device button&lt;br /&gt;
attr devStateIcon off:general_aus on:general_an@green standby:general_an@orange&lt;br /&gt;
attr wait 0:300:0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das DOIF hier greift nur während ein Weckprogramm läuft oder maximal noch 10 Minuten danach; zudem nur wochentags :-)&lt;br /&gt;
&lt;br /&gt;
Außerdem zeigt der DOIF Status an, ob die Snooze Funktion gerade scharf geschaltet ist oder nicht.&lt;br /&gt;
&lt;br /&gt;
Wichtig ist auch, dass das ROOMMATE Device ein Event bei der Änderung des wakeup Readings auslöst, also z.B. das Attribut event-on-change-reading dann entsprechend auch &amp;quot;wakeup&amp;quot; enthält.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Examples]]&lt;br /&gt;
[[Kategorie:Code_Snippets]]&lt;/div&gt;</summary>
		<author><name>Burny4600</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Weckautomation&amp;diff=22607</id>
		<title>Weckautomation</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Weckautomation&amp;diff=22607"/>
		<updated>2017-09-18T12:35:02Z</updated>

		<summary type="html">&lt;p&gt;Burny4600: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die Module ROOMMATE und GUEST können dazu genutzt werden, Bewohner und Gäste in FHEM als ein Device zu repräsentieren und durch Events deren Status zu erfassen bzw. zu ändern (beispielsweise durch das GEOFANCY Modul für [[Anwesenheitserkennung]]). Das zur Modulfamilie dazugehörige Modul RESIDENTS fasst die Status mehrerer Bewohner logisch zusammen.&lt;br /&gt;
&lt;br /&gt;
Inzwischen unterstützen die Module auch bei der Erstellung einer Weckautomation, indem sie die Logik kapseln und häufig verwendete Standardfunktionen bereitstellen. Die Verwendung soll in diesem Artikel anhand eines Beispiels näher erläutert werden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Weckprogramm_Ergebnisdarstellung.png|500px|thumb|right|Darstellung der Beispiel-Konfiguration]]&lt;br /&gt;
&lt;br /&gt;
== Was soll erreicht werden? ==&lt;br /&gt;
&lt;br /&gt;
Hier ein kurzer Überblick über die Funktionen, die wir am Ende realisiert haben werden:&lt;br /&gt;
&lt;br /&gt;
; 3 unterschiedliche Wecker&lt;br /&gt;
: 1 für Werktage Mo-Fr&lt;br /&gt;
: 1 für werktägliche Samstage&lt;br /&gt;
: 1 für Sonn- und Feiertage&lt;br /&gt;
; Automatischer Reset der Weckzeiten&lt;br /&gt;
: werktäglicher Wecker soll auf einen Standardwert zurückstellen, falls er mal verstellt wurde&lt;br /&gt;
: automatischer Reset des werktäglicher Weckers soll zeitweise abschaltbar sein&lt;br /&gt;
: nach einem Sonn- oder Feiertagen soll der automatische Reset des werktäglichen Weckers immer wieder eingeschaltet werden&lt;br /&gt;
: die Samstags- und Sonntags-Wecker sollen immer nach ihrer Ausführung resettet werden&lt;br /&gt;
; jeder Wecker startet ein Weckprogramm 30 Minuten vor der programmierten Zeit&lt;br /&gt;
: langsames hochfahren der Rollläden&lt;br /&gt;
: Wakeup Light über eine HUE Birne von Warmweiß/2000K zu Kaltweiß/5600K&lt;br /&gt;
: an Werktagen: Chillout Weckmusik wird langsam lauter gestellt&lt;br /&gt;
: Snooze Funktion über die SONOS Taste am Gerät an Werktagen (erneutes Play nach 5 Minuten)&lt;br /&gt;
: forciertes Aufstehen an Werktagen durch automatischen Wechsel des Bewohner Devices zu &amp;quot;awake&amp;quot; und dadurch starten der &amp;quot;aufgestanden sein&amp;quot; Prozesse (siehe unten)&lt;br /&gt;
; Starten des Weckprogramms nur bei tatsächlicher Anwesenheit des betroffenen Bewohners&lt;br /&gt;
; Ansage der Uhrzeit zur gewählten Weckzeit&lt;br /&gt;
; Prozess / Automation für:&lt;br /&gt;
: &amp;lt;u&amp;gt;bettfertig machen&amp;lt;/u&amp;gt;: Lichtszene setzen, Chillout Musik in Schlafzimmer und Badezimmer abspielen&lt;br /&gt;
: &amp;lt;u&amp;gt;schlafen legen&amp;lt;/u&amp;gt;: Ansage der eingestellten Weckzeit &amp;amp; Ausschalten aller Verbraucher&lt;br /&gt;
: &amp;lt;u&amp;gt;aufgestanden sein&amp;lt;/u&amp;gt;: Ansage Raumluftqualität, Wettervorhersage; Lokalradio einschalten und in Räume verteilen; Küchenlicht an, HUE in Schlafzimmer mit Aufwach-Farbtemperatur&lt;br /&gt;
; Berücksichtigung / Steuerung des Haus Modus&lt;br /&gt;
: Wechsel zwischen Morgen-, Tag-, Abend- und Nacht-Modus entsprechend der Schlafgewohnheiten (zusätzlich zur Tageszeit abhängigen Steuerung/Umschaltung, die hier aber nicht Thema sein soll)&lt;br /&gt;
; Statuswerte, Events, Readings und Funktionen:&lt;br /&gt;
: Wurde ein Wecker ausgelöst?&lt;br /&gt;
: Ist gerade ein Weckprogramm aktiv?&lt;br /&gt;
: Abbrechen/sofortiges beenden des Weckprogramms&lt;br /&gt;
: Verhindern von durch Fehlkonfiguration parallel ausgeführten Weckern für die selbe Person&lt;br /&gt;
: Welcher ist der nächste Wecker, der bis Mitternacht des nächsten Tages ausgeführt wird und wann ist das?&lt;br /&gt;
: Wann wurde ein Wecker zuletzt ausgeführt und welcher Wecker wurde überhaupt zuletzt ausgeführt?&lt;br /&gt;
: Wie viele Bewohner werden gerade geweckt?&lt;br /&gt;
: Wie viele Bewohner sind gerade aufgestanden?&lt;br /&gt;
: Schaltung bei erstem Bewohner, der geweckt wird&lt;br /&gt;
: Schaltung bei erstem Bewohner, der aufgestanden ist&lt;br /&gt;
; Statistik&lt;br /&gt;
: Wie lange dauerte der Schlaf des Bewohners?&lt;br /&gt;
: Wie lange war in dem Haus niemand wach?&lt;br /&gt;
&lt;br /&gt;
Wichtig dabei zu erwähnen ist, dass die Prozesse so umgesetzt worden sind, dass Bewohner sowohl zeitgleich, als auch zeitversetzt oder komplett getrennt ins Bett gehen und aufwachen können.&lt;br /&gt;
Dafür werden einige Schaltungen pro Bewohner und dessen Schlafzimmer vorgenommen und andere erst dann, wenn die RESIDENTS Bewohnergruppe einen bestimmten Status erreicht hat.&lt;br /&gt;
&lt;br /&gt;
== Notwendige Devices anlegen ==&lt;br /&gt;
&lt;br /&gt;
=== RESIDENTS und ROOMMATE Devices ===&lt;br /&gt;
Wir starten mit einem RESIDENTS Device, um die Bewohner Status später logisch zusammenfassen zu können:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define rgr_Bewohner RESIDENTS&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend legen wir pro Bewohner ein ROOMMATE Device an. Dafür verwenden wir eine Funktion, die in RESIDENTS eingebaut ist und die Devices korrekt untereinander verbindet (die Reihenfolge, in der RESIDENTS und ROOMMATE/GUEST Geräte definiert werden, sind hier entscheidend). Der Einfachheit halber definieren wir in diesem Beispiel nur einen Bewohner.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set rgr_Bewohner addRoommate Julian&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es wurde nun automatisch ein Device namens &amp;quot;rr_Julian&amp;quot; angelegt (abgeleitet aus dem angegebenen Vornamen aus dem addRoommate Befehl).&lt;br /&gt;
Anschließend setzen wir einmalig den initialen Status für die Bewohner mittels set Befehl:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set rr_Julian home&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der automatische Wechsel des Status bei Anwesenheit/Abwesenheit wird hier nicht weiter thematisiert, hier sei auf den Artikel [[Anwesenheitserkennung]] verwiesen, insbesondere den GEOFANCY Teil.&lt;br /&gt;
&lt;br /&gt;
=== Wecker Devices anlegen ===&lt;br /&gt;
&lt;br /&gt;
Die Devices, über die die Weckzeit und das Auslöseverhalten eingestellt werden, sind eigentlich normale Dummy Devices. Das zugewiesene ROOMMATE/GUEST/RESIDENTS Device &amp;quot;versklavt&amp;quot; diese Geräte jedoch und führt bestimmte Befehle zur Wecksteuerung und -Verwaltung aus, sobald das Dummy-Device geändert wird. Der Vorteil dabei ist, dass man sich eine Menge eigenen Code und viele unterschiedliche Notify und Dummy Devices spart, was wiederum der Übersichtlichkeit zu Gute kommt.&lt;br /&gt;
&lt;br /&gt;
Wir legen nun unsere drei Wecker für unseren Beispiel Bewohner an. Dafür führen wir einfach 3 mal den selben Befehl hintereinander aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set rr_Julian create wakeuptimer&lt;br /&gt;
set rr_Julian create wakeuptimer&lt;br /&gt;
set rr_Julian create wakeuptimer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der Logdatei erscheinen verschiedene Meldungen über alle automatisch angelegte Devices inkl. Name und Typ:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2015.03.28 12:19:49 3: RESIDENTStk rr_Julian_wakeuptimer1: new notify macro device Macro_rr_Julian_wakeuptimer1 created&lt;br /&gt;
2015.03.28 12:19:50 3: RESIDENTStk rr_Julian_wakeuptimer1: new at-device at_rr_Julian_wakeuptimer1 created&lt;br /&gt;
2015.03.28 12:19:50 3: RESIDENTStk rr_Julian_wakeuptimer1: new macro device Macro_rr_Julian_gotosleep created&lt;br /&gt;
2015.03.28 12:19:50 3: RESIDENTStk rr_Julian_wakeuptimer1: new watchdog device wd_rr_Julian_gotosleep created&lt;br /&gt;
2015.03.28 12:19:50 3: RESIDENTStk rr_Julian_wakeuptimer1: new macro device Macro_rr_Julian_asleep created&lt;br /&gt;
2015.03.28 12:19:50 3: RESIDENTStk rr_Julian_wakeuptimer1: new watchdog device wd_rr_Julian_asleep created&lt;br /&gt;
2015.03.28 12:19:50 3: RESIDENTStk rr_Julian_wakeuptimer1: new macro device Macro_rr_Julian_awoken created&lt;br /&gt;
2015.03.28 12:19:50 3: RESIDENTStk rr_Julian_wakeuptimer1: new watchdog device wd_rr_Julian_awoken created&lt;br /&gt;
2015.03.28 12:19:50 3: RESIDENTStk rr_Julian_wakeuptimer1: new macro device Macro_rgr_Bewohner_gotosleep created&lt;br /&gt;
2015.03.28 12:19:50 3: RESIDENTStk rr_Julian_wakeuptimer1: new watchdog device wd_rgr_Bewohner_gotosleep created&lt;br /&gt;
2015.03.28 12:19:50 3: RESIDENTStk rr_Julian_wakeuptimer1: new macro device Macro_rgr_Bewohner_asleep created&lt;br /&gt;
2015.03.28 12:19:50 3: RESIDENTStk rr_Julian_wakeuptimer1: new watchdog device wd_rr_Julian_asleep created&lt;br /&gt;
2015.03.28 12:19:50 3: RESIDENTStk rr_Julian_wakeuptimer1: new macro device Macro_rgr_Bewohner_awoken created&lt;br /&gt;
2015.03.28 12:19:51 3: RESIDENTStk rr_Julian_wakeuptimer1: new watchdog device wd_rr_Julian_awoken created&lt;br /&gt;
2015.03.28 12:21:49 3: RESIDENTStk rr_Julian_wakeuptimer2: new notify macro device Macro_rr_Julian_wakeuptimer2 created&lt;br /&gt;
2015.03.28 12:21:49 3: RESIDENTStk rr_Julian_wakeuptimer2: new at-device at_rr_Julian_wakeuptimer2 created&lt;br /&gt;
2015.03.28 12:21:56 3: RESIDENTStk rr_Julian_wakeuptimer3: new notify macro device Macro_rr_Julian_wakeuptimer3 created&lt;br /&gt;
2015.03.28 12:21:56 3: RESIDENTStk rr_Julian_wakeuptimer3: new at-device at_rr_Julian_wakeuptimer3 created&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als Rückgabe in FHEMWEB erhält man eine Meldung wie diese hier:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Dummy rr_Julian_wakeuptimer1 and other pending devices created and pre-configured. &lt;br /&gt;
You may edit Macro_rr_Julian_wakeuptimer1 to define your wake-up actions &lt;br /&gt;
and at_rr_Julian_wakeuptimer1 for optional at-device adjustments.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wie man sieht wurden anfänglich eine ganze Menge von Notify-Macros und Watchdogs sowie ein at-Device pro Wecker angelegt.&lt;br /&gt;
Dabei sind vor allem die Macro-Devices und die Wecker Dummy Devices interessant. Hier werden Weck- und Auslöseverhalten konfiguriert. die at- und Watchdog-Devices können aber für fortgeschrittene Nutzer beliebig angepasst werden. Auch die Dummy Devices können bis auf wenige Ausnahmen (Attribut &amp;quot;userattr&amp;quot;) vollständig umkonfiguriert werden. Wer Devices umbenennt, sollte unbedingt darauf achten, dass auch das entsprechende Attribut im Wecker-Dummy-Device angepasst wird.&lt;br /&gt;
&lt;br /&gt;
Allen Devices ist ein entsprechender Kommentar hinzugefügt, der dessen Funktion kurz erklärt.&lt;br /&gt;
Alle Macros enthalten bereits ein Gerüst für den Weckprozess mit einigen Beispielen. Die Beispielschaltungen sind dabei noch auskommentiert. Nicht auskommentierter Code sollte als notwendiger Teil für die Weckautomation betrachtet werden und wird dort auch durch einen entsprechenden Kommentar erklärt.&lt;br /&gt;
&lt;br /&gt;
Im Folgenden werden wir jetzt Schritt für Schritt das oben beschriebene Szenario konfigurieren.&lt;br /&gt;
&lt;br /&gt;
== Konfiguration des Auslöseverhaltens ==&lt;br /&gt;
&lt;br /&gt;
In der Grundkonfiguration löst jeder Wecker sein eigenes Weckprogramm täglich zur voreingestellten Zeit aus. Dabei wird allerdings kein längeres Programm gestartet, sondern lediglich einmalig das im Attribut wakeupMacro hinterlegte Notify-Macro getriggert. Das ist in der Beispiel-Grundkonfiguration kein Problem und lässt lediglich einen Logfile Eintrag erstellen.&lt;br /&gt;
&lt;br /&gt;
Als erstes möchten wir, dass alle 3 Timer das selbe Macro zum Wecken verwenden, damit wir den Code nur einmal pflegen müssen. Die anderen beiden Macros löschen wir anschließend:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr rr_Julian_wakeuptimer2 wakeupMacro Macro_rr_Julian_wakeuptimer1&lt;br /&gt;
attr rr_Julian_wakeuptimer3 wakeupMacro Macro_rr_Julian_wakeuptimer1&lt;br /&gt;
delete Macro_rr_Julian_wakeuptimer2&lt;br /&gt;
delete Macro_rr_Julian_wakeuptimer3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun konfigurieren wir die Auslöseverhalten so, wie wir es oben vorgegeben haben:&lt;br /&gt;
&lt;br /&gt;
=== Wake-up Timer 1 ===&lt;br /&gt;
&lt;br /&gt;
Wecker nur Mo-Fr auslösen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr rr_Julian_wakeuptimer1 wakeupDays 1,2,3,4,5&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wecker zusätzlich auf Tage beschränken, die keine Feiertage sind:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr rr_Julian_wakeuptimer1 wakeupHolidays andNoHoliday&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;i&amp;gt;&amp;lt;u&amp;gt;Hinweis:&amp;lt;/u&amp;gt; Hierfür muss ein [http://fhem.de/commandref.html#holiday holiday-Device] erstellt sein und in der global Config im Attribut &#039;holidays2we‘ verlinkt sein. Ansonsten erhält man beim setzen einer Weckzeit später entsprechende Fehlermeldungen, die darauf hinweisen.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Länge des Weckprogramms auf 30 Minuten festlegen (sprich 30 Minuten vor der eingestellten Weckzeit beginnen):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr rr_Julian_wakeuptimer1 wakeupOffset 30&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aufstehen forcieren:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr rr_Julian_wakeuptimer1 wakeupEnforced 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Standard Weckzeit hinterlegen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr rr_Julian_wakeuptimer1 wakeupDefaultTime 07:30&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weckzeit nur an diesen Tagen automatisch zurückstellen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr rr_Julian_wakeuptimer1 wakeupResetdays 1,2,3,4,5&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;i&amp;gt;&amp;lt;u&amp;gt;Hinweis:&amp;lt;/u&amp;gt; Ein Reset findet normalerweise nach jeder Auslösung statt, sprich wenn das Weckprogramm tatsächlich gestartet wurde. Dies kann man auf bestimmte Tage einschränken.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum einfacheren Aktivieren/Deaktivieren des Resets wollen wir ein weiteres Dummy nutzen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr rr_Julian_wakeuptimer1 wakeupResetSwitcher rr_Julian_wakeuptimer1_resetswitcher&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;i&amp;gt;&amp;lt;u&amp;gt;Hinweis:&amp;lt;/u&amp;gt; Der Dummy-Gerätename kann frei gewählt werden. Sofern es nicht existiert wird es automatisch angelegt und vorkonfiguriert.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Wake-up Timer 2 ===&lt;br /&gt;
&lt;br /&gt;
Wecker nur Samstags auslösen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr rr_Julian_wakeuptimer2 wakeupDays 6&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wecker zusätzlich auf Tage beschränken, die keine Feiertage sind:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr rr_Julian_wakeuptimer2 wakeupHolidays andNoHoliday&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Länge des Weckprogramms auf 30 Minuten festlegen (sprich 30 Minuten vor der eingestellten Weckzeit beginnen):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr rr_Julian_wakeuptimer2 wakeupOffset 30&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aufstehen forcieren:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr rr_Julian_wakeuptimer2 wakeupEnforce 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Standard Weckzeit hinterlegen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr rr_Julian_wakeuptimer2 wakeupDefaultTime 09:30&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weckzeit nur an diesen Tagen automatisch zurückstellen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr rr_Julian_wakeuptimer2 wakeupResetdays 6&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Wake-up Timer 3 ===&lt;br /&gt;
&lt;br /&gt;
Wecker nur Sonntags auslösen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr rr_Julian_wakeuptimer3 wakeupDays 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wecker zusätzlich auch an Feiertagen ausführen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr rr_Julian_wakeuptimer3 wakeupHolidays orHoliday&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aufstehen nur forcieren, wenn eine frühere Weckzeit als die Standard Weckzeit eingestellt wurde:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr rr_Julian_wakeuptimer3 wakeupEnforce 3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Länge des Weckprogramms auf 30 Minuten festlegen (sprich 30 Minuten vor der eingestellten Weckzeit beginnen):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr rr_Julian_wakeuptimer3 wakeupOffset 30&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Standard Weckzeit hinterlegen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr rr_Julian_wakeuptimer3 wakeupDefaultTime 10:30&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Definition des Weckprogramms ==&lt;br /&gt;
&lt;br /&gt;
Die Aktionen, welche innerhalb der 30 Minuten Weckzeitraum abgearbeitet werden sollen, sind im Device Macro_rr_Julian_wakeuptimer1 hinterlegt.&lt;br /&gt;
Dieses Macro wird 2 Mal aufgerufen: Das erste Mal beim Beginn des Weckprogramms und ein zweites Mal beim Ende des Weckprogramms. Der Hintergrund ist, dass das Macro beim Beenden dann entsprechend dafür sorgen kann bisher nicht ausgeführte Befehle des Programmablaufes zu stornieren. Hierfür ist der delete-Befehl am Anfang des Macros gedacht.&lt;br /&gt;
&lt;br /&gt;
Das Macro Template hat bereits alle oben beschriebenen Funktionen als auskommentierte FHEM Befehle enthalten. Diese sollen natürlich nur dem Beispiel und der eigenen Inspiration dienen. Wir müssten diese an dieser Stelle lediglich einkommentieren...&lt;br /&gt;
Insgesamt fällt bei genauerem hinsehen folgendes auf:&lt;br /&gt;
&lt;br /&gt;
* es stehen bestimmte Umgebungsvariablen bereit, die während des Programmablaufes genutzt werden können&lt;br /&gt;
* das Macro ist in 3 Bereiche unterteilt und nutzt dafür die Umgebungsvariable $EVTPART0 bzw. ob deren Wert auf &amp;quot;start&amp;quot; oder &amp;quot;stop&amp;quot; steht&lt;br /&gt;
* der erste Bereich mit dem delete-Befehl wird immer ausgeführt. Er räumt durch das Macro erzeugte temporäre at-Devices auf (entweder weil das Programm früher beendet werden soll oder von vorne beginnen soll)&lt;br /&gt;
* der zweite Bereich &amp;quot;start&amp;quot; führt erste FHEM Befehle direkt nach dem Beginn des Weckprogramms aus. Außerdem werden weitere Befehle in bestimmten Etappen zur zeitversetzten Ausführung vorgemerkt. Dafür werden temporär erzeugte at-Devices verwendet.&lt;br /&gt;
* der Name der at-Devices folgt einem bestimmten Schema, nämlich atTmp_&amp;lt;LAUFENDE-NUMMER&amp;gt;_$NAME. Die laufende Nummer muss man manuell hochzählen, der Rest kann einfach kopiert werden. Wenn man davon abweicht, muss man den delete-Befehl am Anfang auch anpassen.&lt;br /&gt;
* bei der Definition der at-Devices müssen mehrere FHEM Befehle hintereinander mit 2 Semikolon statt einem getrennt werden (siehe auch [http://fhem.de/commandref_DE.html#command Kommando-Referenz]).&lt;br /&gt;
* bei bedingten Schaltungen empfehlt es sich für übersichtlicheren Code die :FILTER Funktion zu nutzen (siehe auch [http://fhem.de/commandref_DE.html#devspec Kommando-Referenz]).&lt;br /&gt;
* es ist unbedingt darauf zu achten, dass das letzte at-Device nicht nach der wakeupOffset Zeit definiert wird, da es ansonsten automatisch gelöscht und somit nicht mehr ausgeführt wird&lt;br /&gt;
* nach einem ordentlichen Ende des Weckprogramms wird ein at-Device erzeugt, welches das Benutzer-Device automatisch nach &amp;quot;awoken&amp;quot; oder &amp;quot;home&amp;quot; schaltet, abhängig davon ob das Wecken forciert werden soll oder nicht. Dieser Teil wird tatsächlich nur geplant, wenn das Weckprogramm ordentlich beendet wurde. Wurde das Weckprogramm durch ein &amp;quot;set rr_Julian_wakeuptimer1 stop&amp;quot; bzw. durch Klick auf das blaue Device-Icon beendet, so werden die Post-Wakeup Befehle nicht mehr ausgeführt, weil man davon ausgehen kann, dass ein Abbruch des Programms und somit aller seiner weiteren Schaltungen gewünscht ist.&lt;br /&gt;
&lt;br /&gt;
Man kann sein Weckprogramm auf zwei Arten testen:&lt;br /&gt;
&lt;br /&gt;
* durch senden des set-Befehls &amp;quot;trigger&amp;quot;: hier werden die aktuellen Auslösedefinitionen berücksichtigt; sprich, wenn heute nicht der richtige Tag ist, wird das Programm nicht gestartet&lt;br /&gt;
* durch senden des set-Befehls &amp;quot;start&amp;quot; kann man alle Auslösedefinitionen umgehen und das Weckprogramm direkt auslösen&lt;br /&gt;
&lt;br /&gt;
Zu Debug-Zwecken kann man auf das Wecker Dummy-Device das Attribut &amp;quot;verbose&amp;quot; auf 4 setzen. Im Logfile wird dann sehr ausführlich geloggt, warum wie geschaltet oder nicht geschaltet wird und wie die Entscheidungen getroffen worden sind, Readings zu aktualisieren etc. Damit lässt sich prüfen, ob das gewünschte Auslöseverhalten tatsächlich richtig funktioniert.&lt;br /&gt;
&lt;br /&gt;
== Definition der Aktionen für den Prozess &amp;quot;bettfertig machen&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
Möchte der Bewohner nun ins Bett gehen und sich dabei noch etwas darauf einstimmen, kann er sein &amp;quot;bettfertig machen&amp;quot;-Programm dadurch starten, dass er den Status seines ROOMMATE-Devices in FHEM auf &amp;quot;gotosleep&amp;quot; setzt.&lt;br /&gt;
In unserem Beispiel werden dann die Aktionen aus Macro_rr_Julian_gotosleep ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Zeitgleich wird im RESIDENTS-Device rgr_Bewohner das Reading &amp;quot;residentsGotosleep&amp;quot; um 1 erhöht und ein Event erzeugt. Befinden sich gar alle anwesenden Bewohner im Status &amp;quot;gotosleep&amp;quot; wechselt der Gesamtstatus von rgr_Bewohner auch auf &amp;quot;gotosleep&amp;quot;. Dies löst dann Macro_rgr_Bewohner_gotosleep aus. Dort werden dann Schaltungen vorgenommen, die von größerer Tragweite sind, als wenn nur ein einzelner Bewohner ins Bett geht. Beispielsweise könnte man in bestimmten Räumen das Licht oder Geräte ausschalten, die man ansonsten unberührt gelassen hätte, wenn andere noch wach blieben.&lt;br /&gt;
&lt;br /&gt;
== Definition der Aktionen für den Prozess &amp;quot;schlafen legen&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
Legt sich der Bewohner ins Bett und möchte schlafen, wechselt er den Status seines ROOMMATE-Devices auf &amp;quot;asleep&amp;quot;. Ich mache das bei mir durch einen extra Wandschalter.&lt;br /&gt;
&lt;br /&gt;
In unserem Beispiel werden jetzt die Aktionen aus Macro_rr_Julian_asleep ausgeführt. In dem Macro wird besonders Wert darauf gelegt, dass ausschließlich Aktionen ausgeführt werden, die mit dem Schlafzimmer des Bewohners zu tun haben, damit andere Bewohner in anderen Räumen nicht beeinträchtigt werden.&lt;br /&gt;
&lt;br /&gt;
Zeitgleich werden im RESIDENTS-Device rgr_Bewohner das Reading &amp;quot;residentsGotosleep&amp;quot; um 1 erniedrigt, das Reading &amp;quot;residentsAsleep&amp;quot; um 1 erhöht und ein Event erzeugt. Befinden sich gar alle anwesenden Bewohner im Status &amp;quot;asleep&amp;quot; wechselt der Gesamtstatus von rgr_Bewohner auch auf &amp;quot;asleep&amp;quot;. Dies löst dann Macro_rgr_Bewohner_asleep aus. Dort werden dann auch wieder Schaltungen vorgenommen, die von größerer Tragweite sind. Beispielsweise werden alle noch übrigen Lichter im Haus ausgeschaltet und die Musikwiedergabe in Gemeinschaftsräumen (wie hier dem Badezimmer) gestoppt.&lt;br /&gt;
&lt;br /&gt;
== Definition der Aktionen für den Prozess &amp;quot;aufgestanden sein&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
Wir gehen nun davon aus, dass irgendwann morgens das Weckprogramm wie oben zuvor definiert abgespielt wird. Dabei wechselt im Device rgr_Bewohner das Reading residentsTotalWakeup auf 1 (oder höher bei mehreren gleichzeitig aktiven Weckprogrammen unterschiedlicher Bewohner).&lt;br /&gt;
&lt;br /&gt;
Während des Weckprogramms (oder natürlich auch davor) kann der Bewohner jederzeit in den Status &amp;quot;awoken&amp;quot; wechseln. Ich nutze bei mir auch hier wieder den Wandschalter.&lt;br /&gt;
Dadurch wird ein evtl. noch laufendes Weckprogramm unterbrochen (die at-Devices in FHEM werden automatisch aufgräumt) und die Aktionen in Macro_rr_Julian_awoken werden ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Neben dem expliziten Wechsel zum Status &amp;quot;awoken&amp;quot; kann aber, wie oben beschrieben, auch das Weckprogramm selbst den Bewohner auf diesen Status setzen. Dies wird dann als forciertes Wecken bezeichnet; sozusagen um seinen Hintern aus dem Bett zu bewegen :-)&lt;br /&gt;
Sinnvollerweise wechselt der Status des Bewohners nach kurzer Zeit dann automatisch von &amp;quot;awoken&amp;quot; auf &amp;quot;home&amp;quot;, also den Standard-Status wenn man zuhause ist.&lt;br /&gt;
&lt;br /&gt;
Zeitgleich zum Wechsel des ROOMMATE-Devices auf &amp;quot;awoken&amp;quot; wird auch wieder das RESIDENTS-Device automatisch angepasst: Das Reading &amp;quot;residentsAsleep&amp;quot; wird um 1 erniedrigt, das Reading &amp;quot;residentsAwoken&amp;quot; um 1 erhöht und ein Event erzeugt. &lt;br /&gt;
Außerdem wird der Gesamtstatus auf &amp;quot;awoken&amp;quot; gesetzt. Dies löst Macro_rgr_Bewohner_awoken aus. Hier werden auch wieder Schaltungen vorgenommen, die das Haus dann für den ersten, der aufsteht, entsprechend einzustellen, also beispielsweise das Licht in der Küche einschalten.&lt;br /&gt;
Zusätzlich wird dann ein temporäres at-Devices angelegt, welches dafür sorgt, dass der Haus Modus nach 1,5h von &amp;quot;Morgen&amp;quot; auf &amp;quot;Tag&amp;quot; wechselt. Allerdings ist der Haus Modus wie schon erwähnt hier nicht das Hauptthema und wird aktuell auch noch nicht direkt vom RESIDENTS Toolkit unterstützt (Sneak-Peek auf zukünftige Erweiterungen ;-)).&lt;br /&gt;
&lt;br /&gt;
== Snooze Funktion bei SONOS ==&lt;br /&gt;
&lt;br /&gt;
Damit man an gewissen Tagen auch dem Wecker mal auf&#039;n Kopp hauen kann (bzw. auf den Start/Stop Button am SONOS Gerät), kann man ein einfaches DOIF erzeugen, welches dafür sorgt, dass man nach 5 Minuten wieder daran erinnert wird aufzustehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define di_Sonos_Snooze DOIF (&lt;br /&gt;
	[Sonos_Bedroom:?transportState] and (&lt;br /&gt;
		([rr_Julian:wakeup] == 0 and [rr_Julian:wakeup:sec] &amp;gt;= 600) or&lt;br /&gt;
		$we&lt;br /&gt;
	) or&lt;br /&gt;
	(&lt;br /&gt;
		([rr_Julian:wakeup] == 0 and [rr_Julian:wakeup:sec] &amp;gt;= 600) or&lt;br /&gt;
		$we&lt;br /&gt;
	)&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
DOELSEIF&lt;br /&gt;
(&lt;br /&gt;
	[Sonos_Bedroom:?transportState] and&lt;br /&gt;
	([Sonos_Bedroom:transportState] eq &amp;quot;STOPPED&amp;quot; or [Sonos_Bedroom:transportState] eq &amp;quot;PAUSED_PLAYBACK&amp;quot;) and&lt;br /&gt;
	([?rr_Julian:wakeup] == 1 or [rr_Julian:wakeup:sec] &amp;lt; 600) and&lt;br /&gt;
	!$we&lt;br /&gt;
)&lt;br /&gt;
(&lt;br /&gt;
	set Sonos_Bedroom:FILTER=transportState!=PLAYING Play&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
DOELSE&lt;br /&gt;
&lt;br /&gt;
attr alias Automation: Sonos Snoozing&lt;br /&gt;
attr cmdState off|on|standby&lt;br /&gt;
attr comment snooze function for wake-up program via SONOS device button&lt;br /&gt;
attr devStateIcon off:general_aus on:general_an@green standby:general_an@orange&lt;br /&gt;
attr wait 0:300:0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das DOIF hier greift nur während ein Weckprogramm läuft oder maximal noch 10 Minuten danach; zudem nur wochentags :-)&lt;br /&gt;
&lt;br /&gt;
Außerdem zeigt der DOIF Status an, ob die Snooze Funktion gerade scharf geschaltet ist oder nicht.&lt;br /&gt;
&lt;br /&gt;
Wichtig ist auch, dass das ROOMMATE Device ein Event bei der Änderung des wakeup Readings auslöst, also z.B. das Attribut event-on-change-reading dann entsprechend auch &amp;quot;wakeup&amp;quot; enthält.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Examples]]&lt;br /&gt;
[[Kategorie:Code_Snippets]]&lt;/div&gt;</summary>
		<author><name>Burny4600</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Weckautomation&amp;diff=22604</id>
		<title>Weckautomation</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Weckautomation&amp;diff=22604"/>
		<updated>2017-09-18T08:14:34Z</updated>

		<summary type="html">&lt;p&gt;Burny4600: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die Module ROOMMATE und GUEST können dazu genutzt werden, Bewohner und Gäste in FHEM als ein Device zu repräsentieren und durch Events deren Status zu erfassen bzw. zu ändern (beispielsweise durch das GEOFANCY Modul für [[Anwesenheitserkennung]]). Das zur Modulfamilie dazugehörige Modul RESIDENTS fasst die Status mehrerer Bewohner logisch zusammen.&lt;br /&gt;
&lt;br /&gt;
Inzwischen unterstützen die Module auch bei der Erstellung einer Weckautomation, indem sie die Logik kapseln und häufig verwendete Standardfunktionen bereitstellen. Die Verwendung soll in diesem Artikel anhand eines Beispiels näher erläutert werden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Weckprogramm_Ergebnisdarstellung.png|500px|thumb|right|Darstellung der Beispiel-Konfiguration]]&lt;br /&gt;
&lt;br /&gt;
== Was soll erreicht werden? ==&lt;br /&gt;
&lt;br /&gt;
Hier ein kurzer Überblick über die Funktionen, die wir am Ende realisiert haben werden:&lt;br /&gt;
&lt;br /&gt;
; 3 unterschiedliche Wecker&lt;br /&gt;
: 1 für Werktage Mo-Fr&lt;br /&gt;
: 1 für werktägliche Samstage&lt;br /&gt;
: 1 für Sonn- und Feiertage&lt;br /&gt;
; Automatischer Reset der Weckzeiten&lt;br /&gt;
: werktäglicher Wecker soll auf einen Standardwert zurückstellen, falls er mal verstellt wurde&lt;br /&gt;
: automatischer Reset des werktäglicher Weckers soll zeitweise abschaltbar sein&lt;br /&gt;
: nach einem Sonn- oder Feiertagen soll der automatische Reset des werktäglichen Weckers immer wieder eingeschaltet werden&lt;br /&gt;
: die Samstags- und Sonntags-Wecker sollen immer nach ihrer Ausführung resettet werden&lt;br /&gt;
; jeder Wecker startet ein Weckprogramm 30 Minuten vor der programmierten Zeit&lt;br /&gt;
: langsames hochfahren der Rollläden&lt;br /&gt;
: Wakeup Light über eine HUE Birne von Warmweiß/2000K zu Kaltweiß/5600K&lt;br /&gt;
: an Werktagen: Chillout Weckmusik wird langsam lauter gestellt&lt;br /&gt;
: Snooze Funktion über die SONOS Taste am Gerät an Werktagen (erneutes Play nach 5 Minuten)&lt;br /&gt;
: forciertes Aufstehen an Werktagen durch automatischen Wechsel des Bewohner Devices zu &amp;quot;awake&amp;quot; und dadurch starten der &amp;quot;aufgestanden sein&amp;quot; Prozesse (siehe unten)&lt;br /&gt;
; Starten des Weckprogramms nur bei tatsächlicher Anwesenheit des betroffenen Bewohners&lt;br /&gt;
; Ansage der Uhrzeit zur gewählten Weckzeit&lt;br /&gt;
; Prozess / Automation für:&lt;br /&gt;
: &amp;lt;u&amp;gt;bettfertig machen&amp;lt;/u&amp;gt;: Lichtszene setzen, Chillout Musik in Schlafzimmer und Badezimmer abspielen&lt;br /&gt;
: &amp;lt;u&amp;gt;schlafen legen&amp;lt;/u&amp;gt;: Ansage der eingestellten Weckzeit &amp;amp; Ausschalten aller Verbraucher&lt;br /&gt;
: &amp;lt;u&amp;gt;aufgestanden sein&amp;lt;/u&amp;gt;: Ansage Raumluftqualität, Wettervorhersage; Lokalradio einschalten und in Räume verteilen; Küchenlicht an, HUE in Schlafzimmer mit Aufwach-Farbtemperatur&lt;br /&gt;
; Berücksichtigung / Steuerung des Haus Modus&lt;br /&gt;
: Wechsel zwischen Morgen-, Tag-, Abend- und Nacht-Modus entsprechend der Schlafgewohnheiten (zusätzlich zur Tageszeit abhängigen Steuerung/Umschaltung, die hier aber nicht Thema sein soll)&lt;br /&gt;
; Statuswerte, Events, Readings und Funktionen:&lt;br /&gt;
: Wurde ein Wecker ausgelöst?&lt;br /&gt;
: Ist gerade ein Weckprogramm aktiv?&lt;br /&gt;
: Abbrechen/sofortiges beenden des Weckprogramms&lt;br /&gt;
: Verhindern von durch Fehlkonfiguration parallel ausgeführten Weckern für die selbe Person&lt;br /&gt;
: Welcher ist der nächste Wecker, der bis Mitternacht des nächsten Tages ausgeführt wird und wann ist das?&lt;br /&gt;
: Wann wurde ein Wecker zuletzt ausgeführt und welcher Wecker wurde überhaupt zuletzt ausgeführt?&lt;br /&gt;
: Wie viele Bewohner werden gerade geweckt?&lt;br /&gt;
: Wie viele Bewohner sind gerade aufgestanden?&lt;br /&gt;
: Schaltung bei erstem Bewohner, der geweckt wird&lt;br /&gt;
: Schaltung bei erstem Bewohner, der aufgestanden ist&lt;br /&gt;
; Statistik&lt;br /&gt;
: Wie lange dauerte der Schlaf des Bewohners?&lt;br /&gt;
: Wie lange war in dem Haus niemand wach?&lt;br /&gt;
&lt;br /&gt;
Wichtig dabei zu erwähnen ist, dass die Prozesse so umgesetzt worden sind, dass Bewohner sowohl zeitgleich, als auch zeitversetzt oder komplett getrennt ins Bett gehen und aufwachen können.&lt;br /&gt;
Dafür werden einige Schaltungen pro Bewohner und dessen Schlafzimmer vorgenommen und andere erst dann, wenn die RESIDENTS Bewohnergruppe einen bestimmten Status erreicht hat.&lt;br /&gt;
&lt;br /&gt;
== Notwendige Devices anlegen ==&lt;br /&gt;
&lt;br /&gt;
=== RESIDENTS und ROOMMATE Devices ===&lt;br /&gt;
Wir starten mit einem RESIDENTS Device, um die Bewohner Status später logisch zusammenfassen zu können:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define rgr_Bewohner RESIDENTS&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend legen wir pro Bewohner ein ROOMMATE Device an. Dafür verwenden wir eine Funktion, die in RESIDENTS eingebaut ist und die Devices korrekt untereinander verbindet (die Reihenfolge, in der RESIDENTS und ROOMMATE/GUEST Geräte definiert werden, sind hier entscheidend). Der Einfachheit halber definieren wir in diesem Beispiel nur einen Bewohner.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set rgr_Bewohner addRoommate Julian&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es wurde nun automatisch ein Device namens &amp;quot;rr_Julian&amp;quot; angelegt (abgeleitet aus dem angegebenen Vornamen aus dem addRoommate Befehl).&lt;br /&gt;
Anschließend setzen wir einmalig den initialen Status für die Bewohner mittels set Befehl:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set rr_Julian zuhause&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der automatische Wechsel des Status bei Anwesenheit/Abwesenheit wird hier nicht weiter thematisiert, hier sei auf den Artikel [[Anwesenheitserkennung]] verwiesen, insbesondere den GEOFANCY Teil.&lt;br /&gt;
&lt;br /&gt;
=== Wecker Devices anlegen ===&lt;br /&gt;
&lt;br /&gt;
Die Devices, über die die Weckzeit und das Auslöseverhalten eingestellt werden, sind eigentlich normale Dummy Devices. Das zugewiesene ROOMMATE/GUEST/RESIDENTS Device &amp;quot;versklavt&amp;quot; diese Geräte jedoch und führt bestimmte Befehle zur Wecksteuerung und -Verwaltung aus, sobald das Dummy-Device geändert wird. Der Vorteil dabei ist, dass man sich eine Menge eigenen Code und viele unterschiedliche Notify und Dummy Devices spart, was wiederum der Übersichtlichkeit zu Gute kommt.&lt;br /&gt;
&lt;br /&gt;
Wir legen nun unsere drei Wecker für unseren Beispiel Bewohner an. Dafür führen wir einfach 3 mal den selben Befehl hintereinander aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set rr_Julian create wakeuptimer&lt;br /&gt;
set rr_Julian create wakeuptimer&lt;br /&gt;
set rr_Julian create wakeuptimer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der Logdatei erscheinen verschiedene Meldungen über alle automatisch angelegte Devices inkl. Name und Typ:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2015.03.28 12:19:49 3: RESIDENTStk rr_Julian_wakeuptimer1: new notify macro device Macro_rr_Julian_wakeuptimer1 created&lt;br /&gt;
2015.03.28 12:19:50 3: RESIDENTStk rr_Julian_wakeuptimer1: new at-device at_rr_Julian_wakeuptimer1 created&lt;br /&gt;
2015.03.28 12:19:50 3: RESIDENTStk rr_Julian_wakeuptimer1: new macro device Macro_rr_Julian_gotosleep created&lt;br /&gt;
2015.03.28 12:19:50 3: RESIDENTStk rr_Julian_wakeuptimer1: new watchdog device wd_rr_Julian_gotosleep created&lt;br /&gt;
2015.03.28 12:19:50 3: RESIDENTStk rr_Julian_wakeuptimer1: new macro device Macro_rr_Julian_asleep created&lt;br /&gt;
2015.03.28 12:19:50 3: RESIDENTStk rr_Julian_wakeuptimer1: new watchdog device wd_rr_Julian_asleep created&lt;br /&gt;
2015.03.28 12:19:50 3: RESIDENTStk rr_Julian_wakeuptimer1: new macro device Macro_rr_Julian_awoken created&lt;br /&gt;
2015.03.28 12:19:50 3: RESIDENTStk rr_Julian_wakeuptimer1: new watchdog device wd_rr_Julian_awoken created&lt;br /&gt;
2015.03.28 12:19:50 3: RESIDENTStk rr_Julian_wakeuptimer1: new macro device Macro_rgr_Bewohner_gotosleep created&lt;br /&gt;
2015.03.28 12:19:50 3: RESIDENTStk rr_Julian_wakeuptimer1: new watchdog device wd_rgr_Bewohner_gotosleep created&lt;br /&gt;
2015.03.28 12:19:50 3: RESIDENTStk rr_Julian_wakeuptimer1: new macro device Macro_rgr_Bewohner_asleep created&lt;br /&gt;
2015.03.28 12:19:50 3: RESIDENTStk rr_Julian_wakeuptimer1: new watchdog device wd_rr_Julian_asleep created&lt;br /&gt;
2015.03.28 12:19:50 3: RESIDENTStk rr_Julian_wakeuptimer1: new macro device Macro_rgr_Bewohner_awoken created&lt;br /&gt;
2015.03.28 12:19:51 3: RESIDENTStk rr_Julian_wakeuptimer1: new watchdog device wd_rr_Julian_awoken created&lt;br /&gt;
2015.03.28 12:21:49 3: RESIDENTStk rr_Julian_wakeuptimer2: new notify macro device Macro_rr_Julian_wakeuptimer2 created&lt;br /&gt;
2015.03.28 12:21:49 3: RESIDENTStk rr_Julian_wakeuptimer2: new at-device at_rr_Julian_wakeuptimer2 created&lt;br /&gt;
2015.03.28 12:21:56 3: RESIDENTStk rr_Julian_wakeuptimer3: new notify macro device Macro_rr_Julian_wakeuptimer3 created&lt;br /&gt;
2015.03.28 12:21:56 3: RESIDENTStk rr_Julian_wakeuptimer3: new at-device at_rr_Julian_wakeuptimer3 created&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als Rückgabe in FHEMWEB erhält man eine Meldung wie diese hier:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Dummy rr_Julian_wakeuptimer1 and other pending devices created and pre-configured. &lt;br /&gt;
You may edit Macro_rr_Julian_wakeuptimer1 to define your wake-up actions &lt;br /&gt;
and at_rr_Julian_wakeuptimer1 for optional at-device adjustments.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wie man sieht wurden anfänglich eine ganze Menge von Notify-Macros und Watchdogs sowie ein at-Device pro Wecker angelegt.&lt;br /&gt;
Dabei sind vor allem die Macro-Devices und die Wecker Dummy Devices interessant. Hier werden Weck- und Auslöseverhalten konfiguriert. die at- und Watchdog-Devices können aber für fortgeschrittene Nutzer beliebig angepasst werden. Auch die Dummy Devices können bis auf wenige Ausnahmen (Attribut &amp;quot;userattr&amp;quot;) vollständig umkonfiguriert werden. Wer Devices umbenennt, sollte unbedingt darauf achten, dass auch das entsprechende Attribut im Wecker-Dummy-Device angepasst wird.&lt;br /&gt;
&lt;br /&gt;
Allen Devices ist ein entsprechender Kommentar hinzugefügt, der dessen Funktion kurz erklärt.&lt;br /&gt;
Alle Macros enthalten bereits ein Gerüst für den Weckprozess mit einigen Beispielen. Die Beispielschaltungen sind dabei noch auskommentiert. Nicht auskommentierter Code sollte als notwendiger Teil für die Weckautomation betrachtet werden und wird dort auch durch einen entsprechenden Kommentar erklärt.&lt;br /&gt;
&lt;br /&gt;
Im Folgenden werden wir jetzt Schritt für Schritt das oben beschriebene Szenario konfigurieren.&lt;br /&gt;
&lt;br /&gt;
== Konfiguration des Auslöseverhaltens ==&lt;br /&gt;
&lt;br /&gt;
In der Grundkonfiguration löst jeder Wecker sein eigenes Weckprogramm täglich zur voreingestellten Zeit aus. Dabei wird allerdings kein längeres Programm gestartet, sondern lediglich einmalig das im Attribut wakeupMacro hinterlegte Notify-Macro getriggert. Das ist in der Beispiel-Grundkonfiguration kein Problem und lässt lediglich einen Logfile Eintrag erstellen.&lt;br /&gt;
&lt;br /&gt;
Als erstes möchten wir, dass alle 3 Timer das selbe Macro zum Wecken verwenden, damit wir den Code nur einmal pflegen müssen. Die anderen beiden Macros löschen wir anschließend:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr rr_Julian_wakeuptimer2 wakeupMacro Macro_rr_Julian_wakeuptimer1&lt;br /&gt;
attr rr_Julian_wakeuptimer3 wakeupMacro Macro_rr_Julian_wakeuptimer1&lt;br /&gt;
delete Macro_rr_Julian_wakeuptimer2&lt;br /&gt;
delete Macro_rr_Julian_wakeuptimer3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun konfigurieren wir die Auslöseverhalten so, wie wir es oben vorgegeben haben:&lt;br /&gt;
&lt;br /&gt;
=== Wake-up Timer 1 ===&lt;br /&gt;
&lt;br /&gt;
Wecker nur Mo-Fr auslösen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr rr_Julian_wakeuptimer1 wakeupDays 1,2,3,4,5&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wecker zusätzlich auf Tage beschränken, die keine Feiertage sind:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr rr_Julian_wakeuptimer1 wakeupHolidays andNoHoliday&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;i&amp;gt;&amp;lt;u&amp;gt;Hinweis:&amp;lt;/u&amp;gt; Hierfür muss ein [http://fhem.de/commandref.html#holiday holiday-Device] erstellt sein und in der global Config im Attribut &#039;holidays2we‘ verlinkt sein. Ansonsten erhält man beim setzen einer Weckzeit später entsprechende Fehlermeldungen, die darauf hinweisen.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Länge des Weckprogramms auf 30 Minuten festlegen (sprich 30 Minuten vor der eingestellten Weckzeit beginnen):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr rr_Julian_wakeuptimer1 wakeupOffset 30&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aufstehen forcieren:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr rr_Julian_wakeuptimer1 wakeupEnforced 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Standard Weckzeit hinterlegen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr rr_Julian_wakeuptimer1 wakeupDefaultTime 07:30&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weckzeit nur an diesen Tagen automatisch zurückstellen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr rr_Julian_wakeuptimer1 wakeupResetdays 1,2,3,4,5&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;i&amp;gt;&amp;lt;u&amp;gt;Hinweis:&amp;lt;/u&amp;gt; Ein Reset findet normalerweise nach jeder Auslösung statt, sprich wenn das Weckprogramm tatsächlich gestartet wurde. Dies kann man auf bestimmte Tage einschränken.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum einfacheren Aktivieren/Deaktivieren des Resets wollen wir ein weiteres Dummy nutzen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr rr_Julian_wakeuptimer1 wakeupResetSwitcher rr_Julian_wakeuptimer1_resetswitcher&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;i&amp;gt;&amp;lt;u&amp;gt;Hinweis:&amp;lt;/u&amp;gt; Der Dummy-Gerätename kann frei gewählt werden. Sofern es nicht existiert wird es automatisch angelegt und vorkonfiguriert.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Wake-up Timer 2 ===&lt;br /&gt;
&lt;br /&gt;
Wecker nur Samstags auslösen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr rr_Julian_wakeuptimer2 wakeupDays 6&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wecker zusätzlich auf Tage beschränken, die keine Feiertage sind:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr rr_Julian_wakeuptimer2 wakeupHolidays andNoHoliday&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Länge des Weckprogramms auf 30 Minuten festlegen (sprich 30 Minuten vor der eingestellten Weckzeit beginnen):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr rr_Julian_wakeuptimer2 wakeupOffset 30&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aufstehen forcieren:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr rr_Julian_wakeuptimer2 wakeupEnforce 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Standard Weckzeit hinterlegen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr rr_Julian_wakeuptimer2 wakeupDefaultTime 09:30&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weckzeit nur an diesen Tagen automatisch zurückstellen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr rr_Julian_wakeuptimer2 wakeupResetdays 6&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Wake-up Timer 3 ===&lt;br /&gt;
&lt;br /&gt;
Wecker nur Sonntags auslösen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr rr_Julian_wakeuptimer3 wakeupDays 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wecker zusätzlich auch an Feiertagen ausführen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr rr_Julian_wakeuptimer3 wakeupHolidays orHoliday&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aufstehen nur forcieren, wenn eine frühere Weckzeit als die Standard Weckzeit eingestellt wurde:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr rr_Julian_wakeuptimer3 wakeupEnforce 3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Länge des Weckprogramms auf 30 Minuten festlegen (sprich 30 Minuten vor der eingestellten Weckzeit beginnen):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr rr_Julian_wakeuptimer3 wakeupOffset 30&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Standard Weckzeit hinterlegen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr rr_Julian_wakeuptimer3 wakeupDefaultTime 10:30&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Definition des Weckprogramms ==&lt;br /&gt;
&lt;br /&gt;
Die Aktionen, welche innerhalb der 30 Minuten Weckzeitraum abgearbeitet werden sollen, sind im Device Macro_rr_Julian_wakeuptimer1 hinterlegt.&lt;br /&gt;
Dieses Macro wird 2 Mal aufgerufen: Das erste Mal beim Beginn des Weckprogramms und ein zweites Mal beim Ende des Weckprogramms. Der Hintergrund ist, dass das Macro beim Beenden dann entsprechend dafür sorgen kann bisher nicht ausgeführte Befehle des Programmablaufes zu stornieren. Hierfür ist der delete-Befehl am Anfang des Macros gedacht.&lt;br /&gt;
&lt;br /&gt;
Das Macro Template hat bereits alle oben beschriebenen Funktionen als auskommentierte FHEM Befehle enthalten. Diese sollen natürlich nur dem Beispiel und der eigenen Inspiration dienen. Wir müssten diese an dieser Stelle lediglich einkommentieren...&lt;br /&gt;
Insgesamt fällt bei genauerem hinsehen folgendes auf:&lt;br /&gt;
&lt;br /&gt;
* es stehen bestimmte Umgebungsvariablen bereit, die während des Programmablaufes genutzt werden können&lt;br /&gt;
* das Macro ist in 3 Bereiche unterteilt und nutzt dafür die Umgebungsvariable $EVTPART0 bzw. ob deren Wert auf &amp;quot;start&amp;quot; oder &amp;quot;stop&amp;quot; steht&lt;br /&gt;
* der erste Bereich mit dem delete-Befehl wird immer ausgeführt. Er räumt durch das Macro erzeugte temporäre at-Devices auf (entweder weil das Programm früher beendet werden soll oder von vorne beginnen soll)&lt;br /&gt;
* der zweite Bereich &amp;quot;start&amp;quot; führt erste FHEM Befehle direkt nach dem Beginn des Weckprogramms aus. Außerdem werden weitere Befehle in bestimmten Etappen zur zeitversetzten Ausführung vorgemerkt. Dafür werden temporär erzeugte at-Devices verwendet.&lt;br /&gt;
* der Name der at-Devices folgt einem bestimmten Schema, nämlich atTmp_&amp;lt;LAUFENDE-NUMMER&amp;gt;_$NAME. Die laufende Nummer muss man manuell hochzählen, der Rest kann einfach kopiert werden. Wenn man davon abweicht, muss man den delete-Befehl am Anfang auch anpassen.&lt;br /&gt;
* bei der Definition der at-Devices müssen mehrere FHEM Befehle hintereinander mit 2 Semikolon statt einem getrennt werden (siehe auch [http://fhem.de/commandref_DE.html#command Kommando-Referenz]).&lt;br /&gt;
* bei bedingten Schaltungen empfehlt es sich für übersichtlicheren Code die :FILTER Funktion zu nutzen (siehe auch [http://fhem.de/commandref_DE.html#devspec Kommando-Referenz]).&lt;br /&gt;
* es ist unbedingt darauf zu achten, dass das letzte at-Device nicht nach der wakeupOffset Zeit definiert wird, da es ansonsten automatisch gelöscht und somit nicht mehr ausgeführt wird&lt;br /&gt;
* nach einem ordentlichen Ende des Weckprogramms wird ein at-Device erzeugt, welches das Benutzer-Device automatisch nach &amp;quot;awoken&amp;quot; oder &amp;quot;home&amp;quot; schaltet, abhängig davon ob das Wecken forciert werden soll oder nicht. Dieser Teil wird tatsächlich nur geplant, wenn das Weckprogramm ordentlich beendet wurde. Wurde das Weckprogramm durch ein &amp;quot;set rr_Julian_wakeuptimer1 stop&amp;quot; bzw. durch Klick auf das blaue Device-Icon beendet, so werden die Post-Wakeup Befehle nicht mehr ausgeführt, weil man davon ausgehen kann, dass ein Abbruch des Programms und somit aller seiner weiteren Schaltungen gewünscht ist.&lt;br /&gt;
&lt;br /&gt;
Man kann sein Weckprogramm auf zwei Arten testen:&lt;br /&gt;
&lt;br /&gt;
* durch senden des set-Befehls &amp;quot;trigger&amp;quot;: hier werden die aktuellen Auslösedefinitionen berücksichtigt; sprich, wenn heute nicht der richtige Tag ist, wird das Programm nicht gestartet&lt;br /&gt;
* durch senden des set-Befehls &amp;quot;start&amp;quot; kann man alle Auslösedefinitionen umgehen und das Weckprogramm direkt auslösen&lt;br /&gt;
&lt;br /&gt;
Zu Debug-Zwecken kann man auf das Wecker Dummy-Device das Attribut &amp;quot;verbose&amp;quot; auf 4 setzen. Im Logfile wird dann sehr ausführlich geloggt, warum wie geschaltet oder nicht geschaltet wird und wie die Entscheidungen getroffen worden sind, Readings zu aktualisieren etc. Damit lässt sich prüfen, ob das gewünschte Auslöseverhalten tatsächlich richtig funktioniert.&lt;br /&gt;
&lt;br /&gt;
== Definition der Aktionen für den Prozess &amp;quot;bettfertig machen&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
Möchte der Bewohner nun ins Bett gehen und sich dabei noch etwas darauf einstimmen, kann er sein &amp;quot;bettfertig machen&amp;quot;-Programm dadurch starten, dass er den Status seines ROOMMATE-Devices in FHEM auf &amp;quot;gotosleep&amp;quot; setzt.&lt;br /&gt;
In unserem Beispiel werden dann die Aktionen aus Macro_rr_Julian_gotosleep ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Zeitgleich wird im RESIDENTS-Device rgr_Bewohner das Reading &amp;quot;residentsGotosleep&amp;quot; um 1 erhöht und ein Event erzeugt. Befinden sich gar alle anwesenden Bewohner im Status &amp;quot;gotosleep&amp;quot; wechselt der Gesamtstatus von rgr_Bewohner auch auf &amp;quot;gotosleep&amp;quot;. Dies löst dann Macro_rgr_Bewohner_gotosleep aus. Dort werden dann Schaltungen vorgenommen, die von größerer Tragweite sind, als wenn nur ein einzelner Bewohner ins Bett geht. Beispielsweise könnte man in bestimmten Räumen das Licht oder Geräte ausschalten, die man ansonsten unberührt gelassen hätte, wenn andere noch wach blieben.&lt;br /&gt;
&lt;br /&gt;
== Definition der Aktionen für den Prozess &amp;quot;schlafen legen&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
Legt sich der Bewohner ins Bett und möchte schlafen, wechselt er den Status seines ROOMMATE-Devices auf &amp;quot;asleep&amp;quot;. Ich mache das bei mir durch einen extra Wandschalter.&lt;br /&gt;
&lt;br /&gt;
In unserem Beispiel werden jetzt die Aktionen aus Macro_rr_Julian_asleep ausgeführt. In dem Macro wird besonders Wert darauf gelegt, dass ausschließlich Aktionen ausgeführt werden, die mit dem Schlafzimmer des Bewohners zu tun haben, damit andere Bewohner in anderen Räumen nicht beeinträchtigt werden.&lt;br /&gt;
&lt;br /&gt;
Zeitgleich werden im RESIDENTS-Device rgr_Bewohner das Reading &amp;quot;residentsGotosleep&amp;quot; um 1 erniedrigt, das Reading &amp;quot;residentsAsleep&amp;quot; um 1 erhöht und ein Event erzeugt. Befinden sich gar alle anwesenden Bewohner im Status &amp;quot;asleep&amp;quot; wechselt der Gesamtstatus von rgr_Bewohner auch auf &amp;quot;asleep&amp;quot;. Dies löst dann Macro_rgr_Bewohner_asleep aus. Dort werden dann auch wieder Schaltungen vorgenommen, die von größerer Tragweite sind. Beispielsweise werden alle noch übrigen Lichter im Haus ausgeschaltet und die Musikwiedergabe in Gemeinschaftsräumen (wie hier dem Badezimmer) gestoppt.&lt;br /&gt;
&lt;br /&gt;
== Definition der Aktionen für den Prozess &amp;quot;aufgestanden sein&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
Wir gehen nun davon aus, dass irgendwann morgens das Weckprogramm wie oben zuvor definiert abgespielt wird. Dabei wechselt im Device rgr_Bewohner das Reading residentsTotalWakeup auf 1 (oder höher bei mehreren gleichzeitig aktiven Weckprogrammen unterschiedlicher Bewohner).&lt;br /&gt;
&lt;br /&gt;
Während des Weckprogramms (oder natürlich auch davor) kann der Bewohner jederzeit in den Status &amp;quot;awoken&amp;quot; wechseln. Ich nutze bei mir auch hier wieder den Wandschalter.&lt;br /&gt;
Dadurch wird ein evtl. noch laufendes Weckprogramm unterbrochen (die at-Devices in FHEM werden automatisch aufgräumt) und die Aktionen in Macro_rr_Julian_awoken werden ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Neben dem expliziten Wechsel zum Status &amp;quot;awoken&amp;quot; kann aber, wie oben beschrieben, auch das Weckprogramm selbst den Bewohner auf diesen Status setzen. Dies wird dann als forciertes Wecken bezeichnet; sozusagen um seinen Hintern aus dem Bett zu bewegen :-)&lt;br /&gt;
Sinnvollerweise wechselt der Status des Bewohners nach kurzer Zeit dann automatisch von &amp;quot;awoken&amp;quot; auf &amp;quot;home&amp;quot;, also den Standard-Status wenn man zuhause ist.&lt;br /&gt;
&lt;br /&gt;
Zeitgleich zum Wechsel des ROOMMATE-Devices auf &amp;quot;awoken&amp;quot; wird auch wieder das RESIDENTS-Device automatisch angepasst: Das Reading &amp;quot;residentsAsleep&amp;quot; wird um 1 erniedrigt, das Reading &amp;quot;residentsAwoken&amp;quot; um 1 erhöht und ein Event erzeugt. &lt;br /&gt;
Außerdem wird der Gesamtstatus auf &amp;quot;awoken&amp;quot; gesetzt. Dies löst Macro_rgr_Bewohner_awoken aus. Hier werden auch wieder Schaltungen vorgenommen, die das Haus dann für den ersten, der aufsteht, entsprechend einzustellen, also beispielsweise das Licht in der Küche einschalten.&lt;br /&gt;
Zusätzlich wird dann ein temporäres at-Devices angelegt, welches dafür sorgt, dass der Haus Modus nach 1,5h von &amp;quot;Morgen&amp;quot; auf &amp;quot;Tag&amp;quot; wechselt. Allerdings ist der Haus Modus wie schon erwähnt hier nicht das Hauptthema und wird aktuell auch noch nicht direkt vom RESIDENTS Toolkit unterstützt (Sneak-Peek auf zukünftige Erweiterungen ;-)).&lt;br /&gt;
&lt;br /&gt;
== Snooze Funktion bei SONOS ==&lt;br /&gt;
&lt;br /&gt;
Damit man an gewissen Tagen auch dem Wecker mal auf&#039;n Kopp hauen kann (bzw. auf den Start/Stop Button am SONOS Gerät), kann man ein einfaches DOIF erzeugen, welches dafür sorgt, dass man nach 5 Minuten wieder daran erinnert wird aufzustehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define di_Sonos_Snooze DOIF (&lt;br /&gt;
	[Sonos_Bedroom:?transportState] and (&lt;br /&gt;
		([rr_Julian:wakeup] == 0 and [rr_Julian:wakeup:sec] &amp;gt;= 600) or&lt;br /&gt;
		$we&lt;br /&gt;
	) or&lt;br /&gt;
	(&lt;br /&gt;
		([rr_Julian:wakeup] == 0 and [rr_Julian:wakeup:sec] &amp;gt;= 600) or&lt;br /&gt;
		$we&lt;br /&gt;
	)&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
DOELSEIF&lt;br /&gt;
(&lt;br /&gt;
	[Sonos_Bedroom:?transportState] and&lt;br /&gt;
	([Sonos_Bedroom:transportState] eq &amp;quot;STOPPED&amp;quot; or [Sonos_Bedroom:transportState] eq &amp;quot;PAUSED_PLAYBACK&amp;quot;) and&lt;br /&gt;
	([?rr_Julian:wakeup] == 1 or [rr_Julian:wakeup:sec] &amp;lt; 600) and&lt;br /&gt;
	!$we&lt;br /&gt;
)&lt;br /&gt;
(&lt;br /&gt;
	set Sonos_Bedroom:FILTER=transportState!=PLAYING Play&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
DOELSE&lt;br /&gt;
&lt;br /&gt;
attr alias Automation: Sonos Snoozing&lt;br /&gt;
attr cmdState off|on|standby&lt;br /&gt;
attr comment snooze function for wake-up program via SONOS device button&lt;br /&gt;
attr devStateIcon off:general_aus on:general_an@green standby:general_an@orange&lt;br /&gt;
attr wait 0:300:0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das DOIF hier greift nur während ein Weckprogramm läuft oder maximal noch 10 Minuten danach; zudem nur wochentags :-)&lt;br /&gt;
&lt;br /&gt;
Außerdem zeigt der DOIF Status an, ob die Snooze Funktion gerade scharf geschaltet ist oder nicht.&lt;br /&gt;
&lt;br /&gt;
Wichtig ist auch, dass das ROOMMATE Device ein Event bei der Änderung des wakeup Readings auslöst, also z.B. das Attribut event-on-change-reading dann entsprechend auch &amp;quot;wakeup&amp;quot; enthält.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Examples]]&lt;br /&gt;
[[Kategorie:Code_Snippets]]&lt;/div&gt;</summary>
		<author><name>Burny4600</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Uhr_auf_FHEM-Seite&amp;diff=21848</id>
		<title>Uhr auf FHEM-Seite</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Uhr_auf_FHEM-Seite&amp;diff=21848"/>
		<updated>2017-07-24T16:27:25Z</updated>

		<summary type="html">&lt;p&gt;Burny4600: Verzeichnis der Dateien hinterlegt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Das &amp;quot;lächelnde Haus&amp;quot; ist natürlich das FHEM-Logo. Doch könnte es ja sein, dass eine eher nüchterne Seitendarstellung gewünscht ist, etwa, indem dort eine sekundengenaue Uhr eingeblendet wird.&lt;br /&gt;
&lt;br /&gt;
Dazu sind - bei Verwendung von pgm2 - folgende Schritte vorzunehmen.&lt;br /&gt;
Im Verzeichnis /fhem/www/pgm2 sind die zu ändernden Dateien zu finden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.Modifikation der Datei svg.js&#039;&#039;&#039;Ans Ende wird der folgende Code gestellt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;function GetClock(){&lt;br /&gt;
 d = new Date();&lt;br /&gt;
 nhour = d.getHours();&lt;br /&gt;
 nmin  = d.getMinutes();&lt;br /&gt;
 if(nmin &amp;amp;lt;= 9){nmin=&amp;quot;0&amp;quot;+nmin}&lt;br /&gt;
 document.getElementById(&#039;logo&#039;).innerHTML=nhour+&amp;quot;:&amp;quot;+nmin;&lt;br /&gt;
 setTimeout(&amp;quot;GetClock()&amp;quot;, 1000);&lt;br /&gt;
}&lt;br /&gt;
window.onload=GetClock;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Selbstverständlich könnte man die Anzeige auf Sekunden ausdehnen, oder noch etwas komplizierter gestalten - der obige Code soll nur als Beispiel dienen. Auch erfolgt die Abfrage hier alle 1000 Millisekunden - das kann man bei reduziertern Genauigkeitsanforderungen auch heraufsetzen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Modifikation der Datei style.css&#039;&#039;&#039;(bzw. von &amp;amp;lt;xxx&amp;amp;gt;style.css, wenn man einen anderen als den Default-Style verwendet)&lt;br /&gt;
&lt;br /&gt;
Der Selektor für den Bereich des Logos wird ausgetauscht gegen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#logo  { position:fixed; top:30px; left:20px;&lt;br /&gt;
      width:100px; height:105px; text-align:center;&lt;br /&gt;
      font-family:Times-Roman; font-size:xx-large; font-weight:bold;&lt;br /&gt;
      }&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Selbstverständlich kann man hier noch verschiedene eigene Attribute einbauen, etwa die Farbe und Schriftgröße an eigene Wünsche anpassen.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* Eine weitere Möglichkeit, auf der FHEM-Seite eine Uhr darzustellen, wird in {{Link2Forum|Topic=31912|LinkText=diesem Forenthread}} beschrieben&lt;br /&gt;
* Und noch eine Möglichkeit, auf der FHEM-Seite eine Uhr darzustellen, wird in {{Link2Forum|Topic=53286|LinkText=diesem Forenthread}} beschrieben&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Code Snippets]]&lt;/div&gt;</summary>
		<author><name>Burny4600</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Raspberry_Pi_%26_HTTPS&amp;diff=21727</id>
		<title>Raspberry Pi &amp; HTTPS</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Raspberry_Pi_%26_HTTPS&amp;diff=21727"/>
		<updated>2017-06-16T12:39:55Z</updated>

		<summary type="html">&lt;p&gt;Burny4600: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dieser Artikel beschreibt das Vorgehen unter &#039;&#039;&#039;Linux&#039;&#039;&#039;. Um unter &#039;&#039;&#039;Windows&#039;&#039;&#039; ein SSL Zertifikat zu erstellen hilft eine Bat Datei aus dem FHEM Users Forum: [https://groups.google.com/d/msg/fhem-users/uYNhSombpFw/UsRA9gmkKaEJ https://groups.google.com/d/msg/fhem-users/uYNhSombpFw/UsRA9gmkKaEJ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Damit das Kennwort verschlüsselt übertragen wird, ist eine HTTPS Verbindung wichtig.&lt;br /&gt;
&lt;br /&gt;
Die folgenden Schritte sind direkt auf dem [[Raspberry Pi|Raspberry]] oder über ein Terminal auszuführen.&lt;br /&gt;
Zunächst müssen folgende Pakete nachinstalliert werden:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo apt-get update&lt;br /&gt;
sudo apt-get install libio-socket-ssl-perl&lt;br /&gt;
sudo apt-get install libwww-perl&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend muss noch im fhem-Verzeichnis (befindet sich in der Regel unter /opt) das Verzeichnis &amp;quot;certs&amp;quot; für die Zertifikate erstellt werden. Dies geht wie folgt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;cd /opt/fhem&lt;br /&gt;
sudo mkdir certs&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In dieses Verzeichnis kommen zwei Dateien die mithilfe von OpenSSL erstellt werden: server-key.pem und server-cert.pem. Dazu wechselt man in das neu erstellte Verzeichnis. Auf der Konsole ist nun folgendes auszuführen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;cd /opt/fhem/certs&lt;br /&gt;
sudo openssl req -new -x509 -nodes -out server-cert.pem -days 3650 -keyout server-key.pem&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit das SSL-Modul die erzeugten Dateien verwenden kann, muss das certs-Verzeichnis Ausführrechte haben (es ist auch kein Fehler, wenn die Dateien selbst nur die nötigsten Rechte haben). Die Berechtigungen werden wie folgt gesetzt&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo chmod 644 /opt/fhem/certs/*.pem&lt;br /&gt;
sudo chmod 711 /opt/fhem/certs&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das war auch schon alles, was man auf dem Raspberry Pi über die Konsole tun muss. Als nächstes öffnen wir FHEM im Browser. Hier müssen wir nun die Web Instanz suchen welche wir auf HTTPS umstellen möchten. In der Regel ist diese Instanz als WEB angelegt. Evtl. habt ihr mehrere Webinstanzen (z.B. WEBphone, WEBtablet) oder hattet das Define anders benannt, dann müsst Ihr die folgenden Angaben entsprechend ändern.&lt;br /&gt;
&lt;br /&gt;
Wechselt in [[FHEMWEB]] in die Detailansicht des Define WEB (die URL lautet z.B. http://fhem:8083/fhem?detail=WEB). Dort setzt Ihr nun die folgenden Attribute in der angegebenen Reihenfolge&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr WEB sslVersion TLSv12:!SSLv3&lt;br /&gt;
attr WEB HTTPS 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sowie das Attribut auf HTTPS geändert wurde ist HTTPS aktiviert und FHEM nur mehr über https://192.168.n.n:8083/fhem erreichbar. Ihr merkt das sofort da ein Browserzugriff auf FHEM unter dem aktuellen http Zurgiff nicht mehr möglich ist. Einfach http gegen https austauschen. Es kommt eventuell noch eine Browseranfrage unter Umständen ob ihr diesen https Zugriff zulassen wollt. Zugriff erlauben und es ist der Zugriff auf FHEM wie gehabt möglich nur halt gesichert.&lt;br /&gt;
Nicht vergessen, die Konfiguration zu speichern damit die Änderungen beibehalten werden. Es ist wichtig die Adresse mit https:// aufzurufen, da es keine automatische Weiterleitung von http auf https existiert.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Burny4600|Burny4600]] ([[Benutzer Diskussion:Burny4600|Diskussion]]) 14:38, 16. Jun. 2017 (CEST)&lt;/div&gt;</summary>
		<author><name>Burny4600</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Raspberry_Pi_%26_HTTPS&amp;diff=21726</id>
		<title>Raspberry Pi &amp; HTTPS</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Raspberry_Pi_%26_HTTPS&amp;diff=21726"/>
		<updated>2017-06-16T12:38:36Z</updated>

		<summary type="html">&lt;p&gt;Burny4600: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dieser Artikel beschreibt das Vorgehen unter &#039;&#039;&#039;Linux&#039;&#039;&#039;. Um unter &#039;&#039;&#039;Windows&#039;&#039;&#039; ein SSL Zertifikat zu erstellen hilft eine Bat Datei aus dem FHEM Users Forum: [https://groups.google.com/d/msg/fhem-users/uYNhSombpFw/UsRA9gmkKaEJ https://groups.google.com/d/msg/fhem-users/uYNhSombpFw/UsRA9gmkKaEJ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Damit das Kennwort verschlüsselt übertragen wird, ist eine HTTPS Verbindung wichtig.&lt;br /&gt;
&lt;br /&gt;
Die folgenden Schritte sind direkt auf dem [[Raspberry Pi|Raspberry]] oder über ein Terminal auszuführen.&lt;br /&gt;
Zunächst müssen folgende Pakete nachinstalliert werden:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo apt-get update&lt;br /&gt;
sudo apt-get install libio-socket-ssl-perl&lt;br /&gt;
sudo apt-get install libwww-perl&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend muss noch im fhem-Verzeichnis (befindet sich in der Regel unter /opt) das Verzeichnis &amp;quot;certs&amp;quot; für die Zertifikate erstellt werden. Dies geht wie folgt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;cd /opt/fhem&lt;br /&gt;
sudo mkdir certs&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In dieses Verzeichnis kommen zwei Dateien die mithilfe von OpenSSL erstellt werden: server-key.pem und server-cert.pem. Dazu wechselt man in das neu erstellte Verzeichnis. Auf der Konsole ist nun folgendes auszuführen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;cd /opt/fhem/certs&lt;br /&gt;
sudo openssl req -new -x509 -nodes -out server-cert.pem -days 3650 -keyout server-key.pem&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit das SSL-Modul die erzeugten Dateien verwenden kann, muss das certs-Verzeichnis Ausführrechte haben (es ist auch kein Fehler, wenn die Dateien selbst nur die nötigsten Rechte haben). Die Berechtigungen werden wie folgt gesetzt&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo chmod 644 /opt/fhem/certs/*.pem&lt;br /&gt;
sudo chmod 711 /opt/fhem/certs&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das war auch schon alles, was man auf dem Raspberry Pi über die Konsole tun muss. Als nächstes öffnen wir FHEM im Browser. Hier müssen wir nun die Web Instanz suchen welche wir auf HTTPS umstellen möchten. In der Regel ist diese Instanz als WEB angelegt. Evtl. habt ihr mehrere Webinstanzen (z.B. WEBphone, WEBtablet) oder hattet das Define anders benannt, dann müsst Ihr die folgenden Angaben entsprechend ändern.&lt;br /&gt;
&lt;br /&gt;
Wechselt in [[FHEMWEB]] in die Detailansicht des Define WEB (die URL lautet z.B. http://fhem:8083/fhem?detail=WEB). Dort setzt Ihr nun die folgenden Attribute in der angegebenen Reihenfolge&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr WEB sslVersion TLSv12:!SSLv3&lt;br /&gt;
attr WEB HTTPS 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sowie das Attribut auf HTTPS geändert wurde ist HTTPS aktiviert und FHEM nur mehr über https://192.168.n.n:8083/fhem erreichbar. Ihr merkt das sofort da ein Browserzugriff auf FHEM unter dem aktuellen http Zurgiff nicht mehr möglich ist. Einfach http gegen https austauschen. Es kommt eventuell noch eine Browseranfrage unter Umständen ob ihr diesen https Zugriff zulassen wollt. Zugriff erlauben und es ist der Zugriff auf FHEM wie gehabt möglich nur halt gesichert.&lt;br /&gt;
Nicht vergessen, die Konfiguration zu speichern damit die Änderungen beibehalten werden. Es ist wichtig die Adresse mit https:// aufzurufen, da es keine automatische Weiterleitung von http auf https existiert.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
&lt;br /&gt;
[[Benutzer:Burny4600|Burny4600]] ([[Benutzer Diskussion:Burny4600|Diskussion]]) 14:38, 16. Jun. 2017 (CEST)&lt;/div&gt;</summary>
		<author><name>Burny4600</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Raspberry_Pi_%26_HTTPS&amp;diff=21725</id>
		<title>Raspberry Pi &amp; HTTPS</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Raspberry_Pi_%26_HTTPS&amp;diff=21725"/>
		<updated>2017-06-16T12:35:38Z</updated>

		<summary type="html">&lt;p&gt;Burny4600: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dieser Artikel beschreibt das Vorgehen unter &#039;&#039;&#039;Linux&#039;&#039;&#039;. Um unter &#039;&#039;&#039;Windows&#039;&#039;&#039; ein SSL Zertifikat zu erstellen hilft eine Bat Datei aus dem FHEM Users Forum: [https://groups.google.com/d/msg/fhem-users/uYNhSombpFw/UsRA9gmkKaEJ https://groups.google.com/d/msg/fhem-users/uYNhSombpFw/UsRA9gmkKaEJ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Damit das Kennwort verschlüsselt übertragen wird, ist eine HTTPS Verbindung wichtig.&lt;br /&gt;
&lt;br /&gt;
Die folgenden Schritte sind direkt auf dem [[Raspberry Pi|Raspberry]] oder über ein Terminal auszuführen.&lt;br /&gt;
Zunächst müssen folgende Pakete nachinstalliert werden:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo apt-get update&lt;br /&gt;
sudo apt-get install libio-socket-ssl-perl&lt;br /&gt;
sudo apt-get install libwww-perl&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend muss noch im fhem-Verzeichnis (befindet sich in der Regel unter /opt) das Verzeichnis &amp;quot;certs&amp;quot; für die Zertifikate erstellt werden. Dies geht wie folgt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;cd /opt/fhem&lt;br /&gt;
sudo mkdir certs&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In dieses Verzeichnis kommen zwei Dateien die mithilfe von OpenSSL erstellt werden: server-key.pem und server-cert.pem. Dazu wechselt man in das neu erstellte Verzeichnis. Auf der Konsole ist nun folgendes auszuführen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;cd /opt/fhem/certs&lt;br /&gt;
sudo openssl req -new -x509 -nodes -out server-cert.pem -days 3650 -keyout server-key.pem&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit das SSL-Modul die erzeugten Dateien verwenden kann, muss das certs-Verzeichnis Ausführrechte haben (es ist auch kein Fehler, wenn die Dateien selbst nur die nötigsten Rechte haben). Die Berechtigungen werden wie folgt gesetzt&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo chmod 644 /opt/fhem/certs/*.pem&lt;br /&gt;
sudo chmod 711 /opt/fhem/certs&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das war auch schon alles, was man auf dem Raspberry Pi über die Konsole tun muss. Als nächstes öffnen wir FHEM im Browser. Hier müssen wir nun die Web Instanz suchen welche wir auf HTTPS umstellen möchten. In der Regel ist diese Instanz als WEB angelegt. Evtl. habt ihr mehrere Webinstanzen (z.B. WEBphone, WEBtablet) oder hattet das Define anders benannt, dann müsst Ihr die folgenden Angaben entsprechend ändern.&lt;br /&gt;
&lt;br /&gt;
Wechselt in [[FHEMWEB]] in die Detailansicht des Define WEB (die URL lautet z.B. http://fhem:8083/fhem?detail=WEB). Dort setzt Ihr nun die folgenden Attribute in der angegebenen Reihenfolge&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr WEB sslVersion TLSv12:!SSLv3&lt;br /&gt;
attr WEB HTTPS 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sowie das Attribut auf HTTPS geändert wurde ist HTTPS aktiviert und FHEM nur mehr über https://192.168.n.n:8083/fhem erreichbar. Ihr merkt das sofort da ein Browserzugriff auf FHEM unter dem aktuellen http Zurgiff nicht mehr möglich ist. Einfach http gegen https austauschen. Es kommt eventuell noch eine Browseranfrage unter Umständen ob ihr diesen https Zugriff zulassen wollt. Zugriff erlauben und es ist der Zugriff auf FHEM wie gehabt möglich nur halt gesichert.&lt;br /&gt;
Nicht vergessen, die Konfiguration zu speichern damit die Änderungen beibehalten werden. Es ist wichtig die Adresse mit https:// aufzurufen, da es keine automatische Weiterleitung von http auf https existiert.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
--[[Benutzer:Burny4600|Mfg Chris]] ([[Benutzer Diskussion:Burny4600|Diskussion]]) 14:35, 16. Jun. 2017 (CEST)&lt;/div&gt;</summary>
		<author><name>Burny4600</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Raspberry_Pi_%26_HTTPS&amp;diff=21724</id>
		<title>Raspberry Pi &amp; HTTPS</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Raspberry_Pi_%26_HTTPS&amp;diff=21724"/>
		<updated>2017-06-16T12:32:46Z</updated>

		<summary type="html">&lt;p&gt;Burny4600: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dieser Artikel beschreibt das Vorgehen unter &#039;&#039;&#039;Linux&#039;&#039;&#039;. Um unter &#039;&#039;&#039;Windows&#039;&#039;&#039; ein SSL Zertifikat zu erstellen hilft eine Bat Datei aus dem FHEM Users Forum: [https://groups.google.com/d/msg/fhem-users/uYNhSombpFw/UsRA9gmkKaEJ https://groups.google.com/d/msg/fhem-users/uYNhSombpFw/UsRA9gmkKaEJ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Damit das Kennwort verschlüsselt übertragen wird, ist eine HTTPS Verbindung wichtig.&lt;br /&gt;
&lt;br /&gt;
Die folgenden Schritte sind direkt auf dem [[Raspberry Pi|Raspberry]] oder über ein Terminal auszuführen.&lt;br /&gt;
Zunächst müssen folgende Pakete nachinstalliert werden:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo apt-get update&lt;br /&gt;
sudo apt-get install libio-socket-ssl-perl&lt;br /&gt;
sudo apt-get install libwww-perl&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend muss noch im fhem-Verzeichnis (befindet sich in der Regel unter /opt) das Verzeichnis &amp;quot;certs&amp;quot; für die Zertifikate erstellt werden. Dies geht wie folgt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;cd /opt/fhem&lt;br /&gt;
sudo mkdir certs&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In dieses Verzeichnis kommen zwei Dateien die mithilfe von OpenSSL erstellt werden: server-key.pem und server-cert.pem. Dazu wechselt man in das neu erstellte Verzeichnis. Auf der Konsole ist nun folgendes auszuführen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;cd /opt/fhem/certs&lt;br /&gt;
sudo openssl req -new -x509 -nodes -out server-cert.pem -days 3650 -keyout server-key.pem&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit das SSL-Modul die erzeugten Dateien verwenden kann, muss das certs-Verzeichnis Ausführrechte haben (es ist auch kein Fehler, wenn die Dateien selbst nur die nötigsten Rechte haben). Die Berechtigungen werden wie folgt gesetzt&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo chmod 644 /opt/fhem/certs/*.pem&lt;br /&gt;
sudo chmod 711 /opt/fhem/certs&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das war auch schon alles, was man auf dem Raspberry Pi über die Konsole tun muss. Als nächstes öffnen wir FHEM im Browser. Hier müssen wir nun die Web Instanz suchen welche wir auf HTTPS umstellen möchten. In der Regel ist diese Instanz als WEB angelegt. Evtl. habt ihr mehrere Webinstanzen (z.B. WEBphone, WEBtablet) oder hattet das Define anders benannt, dann müsst Ihr die folgenden Angaben entsprechend ändern.&lt;br /&gt;
&lt;br /&gt;
Wechselt in [[FHEMWEB]] in die Detailansicht des Define WEB (die URL lautet z.B. http://fhem:8083/fhem?detail=WEB). Dort setzt Ihr nun die folgenden Attribute in der angegebenen Reihenfolge&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr WEB sslVersion TLSv12:!SSLv3&lt;br /&gt;
attr WEB HTTPS 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sowie das Attribut auf HTTPS geändert wurde ist HTTPS aktiviert und FHEM nur mehr über https://192.168.n.n:8083/fhem erreichbar. Ihr merkt das sofort da ein Browserzugriff auf FHEM unter dem aktuellen http Zurgiff nicht mehr möglich ist. Einfach http gegen https austauschen. Es kommt eventuell noch eine Browseranfrage unter Umständen ob ihr diesen https Zugriff zulassen wollt. Zugriff erlauben und es ist der Zugriff auf FHEM wie gehabt möglich nur halt gesichert.&lt;br /&gt;
Nicht vergessen, die Konfiguration zu speichern damit die Änderungen beibehalten werden. Es ist wichtig die Adresse mit https:// aufzurufen, da es keine automatische Weiterleitung von http auf https existiert.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Burny4600</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Raspberry_Pi_%26_HTTPS&amp;diff=21723</id>
		<title>Raspberry Pi &amp; HTTPS</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Raspberry_Pi_%26_HTTPS&amp;diff=21723"/>
		<updated>2017-06-16T12:14:48Z</updated>

		<summary type="html">&lt;p&gt;Burny4600: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dieser Artikel beschreibt das Vorgehen unter &#039;&#039;&#039;Linux&#039;&#039;&#039;. Um unter &#039;&#039;&#039;Windows&#039;&#039;&#039; ein SSL Zertifikat zu erstellen hilft eine Bat Datei aus dem FHEM Users Forum: [https://groups.google.com/d/msg/fhem-users/uYNhSombpFw/UsRA9gmkKaEJ https://groups.google.com/d/msg/fhem-users/uYNhSombpFw/UsRA9gmkKaEJ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Damit das Kennwort verschlüsselt übertragen wird, ist eine HTTPS Verbindung wichtig.&lt;br /&gt;
&lt;br /&gt;
Die folgenden Schritte sind direkt auf dem [[Raspberry Pi|Raspberry]] oder über ein Terminal auszuführen.&lt;br /&gt;
Zunächst müssen folgende Pakete nachinstalliert werden:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo apt-get update&lt;br /&gt;
sudo apt-get install libio-socket-ssl-perl&lt;br /&gt;
sudo apt-get install libwww-perl&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend muss noch im fhem-Verzeichnis (befindet sich in der Regel unter /opt) das Verzeichnis &amp;quot;certs&amp;quot; für die Zertifikate erstellt werden. Dies geht wie folgt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;cd /opt/fhem&lt;br /&gt;
sudo mkdir certs&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In dieses Verzeichnis kommen zwei Dateien die mithilfe von OpenSSL erstellt werden: server-key.pem und server-cert.pem. Dazu wechselt man in das neu erstellte Verzeichnis. Auf der Konsole ist nun folgendes auszuführen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;cd /opt/fhem/certs&lt;br /&gt;
sudo openssl req -new -x509 -nodes -out server-cert.pem -days 3650 -keyout server-key.pem&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit das SSL-Modul die erzeugten Dateien verwenden kann, muss das certs-Verzeichnis Ausführrechte haben (es ist auch kein Fehler, wenn die Dateien selbst nur die nötigsten Rechte haben). Die Berechtigungen werden wie folgt gesetzt&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo chmod 644 /opt/fhem/certs/*.pem&lt;br /&gt;
sudo chmod 711 /opt/fhem/certs&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das war auch schon alles, was man auf dem Raspberry Pi über die Konsole tun muss. Als nächstes öffnen wir FHEM im Browser. Hier müssen wir nun die Web Instanz suchen welche wir auf HTTPS umstellen möchten. In der Regel ist diese Instanz als WEB angelegt. Evtl. habt ihr mehrere Webinstanzen (z.B. WEBphone, WEBtablet) oder hattet das Define anders benannt, dann müsst Ihr die folgenden Angaben entsprechend ändern.&lt;br /&gt;
&lt;br /&gt;
Wechselt in [[FHEMWEB]] in die Detailansicht des Define WEB (die URL lautet z.B. http://fhem:8083/fhem?detail=WEB). Dort setzt Ihr nun die folgenden Attribute in der angegebenen Reihenfolge&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr WEB sslVersion TLSv12:!SSLv3&lt;br /&gt;
attr WEB HTTPS 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit ist HTTPS aktiviert. Nicht vergessen, die Konfiguration zu speichern, denn erst nach einem Neustart erfolgt der Zugriff per HTTPS über [https://192.168.n.n:8083/fhem https://192.168.n.n:8083/fhem]. Es ist wichtig die Adresse mit https:// aufzurufen, da es keine automatische Weiterleitung von http auf https existiert.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Burny4600</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Raspberry_Pi_%26_HTTPS&amp;diff=21722</id>
		<title>Raspberry Pi &amp; HTTPS</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Raspberry_Pi_%26_HTTPS&amp;diff=21722"/>
		<updated>2017-06-16T12:08:28Z</updated>

		<summary type="html">&lt;p&gt;Burny4600: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dieser Artikel beschreibt das Vorgehen unter &#039;&#039;&#039;Linux&#039;&#039;&#039;. Um unter &#039;&#039;&#039;Windows&#039;&#039;&#039; ein SSL Zertifikat zu erstellen hilft eine Bat Datei aus dem FHEM Users Forum: [https://groups.google.com/d/msg/fhem-users/uYNhSombpFw/UsRA9gmkKaEJ https://groups.google.com/d/msg/fhem-users/uYNhSombpFw/UsRA9gmkKaEJ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Damit das Kennwort verschlüsselt übertragen wird, ist eine HTTPS Verbindung wichtig.&lt;br /&gt;
&lt;br /&gt;
Die folgenden Schritte sind direkt auf dem [[Raspberry Pi|Raspberry]] oder über ein Terminal auszuführen.&lt;br /&gt;
Zunächst müssen folgende Pakete nachinstalliert werden:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo apt-get update&lt;br /&gt;
sudo apt-get install libio-socket-ssl-perl&lt;br /&gt;
sudo apt-get install libwww-perl&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend muss noch im fhem-Verzeichnis (befindet sich in der Regel unter /opt) das Verzeichnis &amp;quot;certs&amp;quot; für die Zertifikate erstellt werden. Dies geht wie folgt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;cd /opt/fhem&lt;br /&gt;
sudo mkdir certs&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In dieses Verzeichnis kommen zwei Dateien die mithilfe von OpenSSL erstellt werden: server-key.pem und server-cert.pem. Dazu wechselt man in das neu erstellte Verzeichnis. Auf der Konsole ist nun folgendes auszuführen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;cd /opt/fhem/certs&lt;br /&gt;
sudo openssl req -new -x509 -nodes -out server-cert.pem -days 3650 -keyout server-key.pem&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit das SSL-Modul die erzeugten Dateien verwenden kann, muss das certs-Verzeichnis Ausführrechte haben (es ist auch kein Fehler, wenn die Dateien selbst nur die nötigsten Rechte haben). Die Berechtigungen werden wie folgt gesetzt&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo chmod 644 /opt/fhem/certs/*.pem&lt;br /&gt;
sudo chmod 711 /opt/fhem/certs&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das war auch schon alles, was man auf dem Raspberry Pi über die Konsole tun muss. Als nächstes öffnen wir FHEM im Browser. Hier müssen wir nun die Web Instanz suchen welche wir auf HTTPS umstellen möchten. In der Regel ist diese Instanz als WEB angelegt. Evtl. hab ihr mehrere Webinstanzen (z.B. WEBphone, WEBtablet) oder hab das Define anders benannt, dann müsst Ihr die folgenden Angaben entsprechend ändern.&lt;br /&gt;
&lt;br /&gt;
Wechselt in [[FHEMWEB]] in die Detailansicht des Define WEB (die URL lautet z.B. http://fhem:8083/fhem?detail=WEB). Dort setzt Ihr nun die folgenden Attribute in der angegebenen Reihenfolge&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr WEB sslVersion TLSv12:!SSLv3&lt;br /&gt;
attr WEB HTTPS 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit ist HTTPS aktiviert. Nicht vergessen, die Konfiguration zu speichern, denn erst nach einem Neustart erfolgt der Zugriff per HTTPS über [https://192.168.n.n:8083/fhem https://192.168.n.n:8083/fhem]. Es ist wichtig die Adresse mit https:// aufzurufen, da es keine automatische Weiterleitung von http auf https existiert.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Burny4600</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Raspberry_Pi_%26_HTTPS&amp;diff=21721</id>
		<title>Raspberry Pi &amp; HTTPS</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Raspberry_Pi_%26_HTTPS&amp;diff=21721"/>
		<updated>2017-06-16T12:03:38Z</updated>

		<summary type="html">&lt;p&gt;Burny4600: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dieser Artikel beschreibt das Vorgehen unter &#039;&#039;&#039;Linux&#039;&#039;&#039;. Um unter &#039;&#039;&#039;Windows&#039;&#039;&#039; ein SSL Zertifikat zu erstellen hilft eine Bat Datei aus dem FHEM Users Forum: [https://groups.google.com/d/msg/fhem-users/uYNhSombpFw/UsRA9gmkKaEJ https://groups.google.com/d/msg/fhem-users/uYNhSombpFw/UsRA9gmkKaEJ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Damit das Kennwort verschlüsselt übertragen wird, ist eine HTTPS Verbindung wichtig.&lt;br /&gt;
&lt;br /&gt;
Die folgenden Schritte sind direkt auf dem [[Raspberry Pi|Raspberry]] oder über ein Terminal auszuführen.&lt;br /&gt;
Zunächst müssen folgende Pakete nachinstalliert werden:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo apt-get update&lt;br /&gt;
sudo apt-get install libio-socket-ssl-perl&lt;br /&gt;
sudo apt-get install libwww-perl&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend muss noch im fhem-Verzeichnis (befindet sich in der Regel unter /opt) das Verzeichnis &amp;quot;certs&amp;quot; für die Zertifikate erstellt werden. Dies geht wie folgt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;cd /opt/fhem&lt;br /&gt;
sudo mkdir certs&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In dieses Verzeichnis kommen zwei Dateien die mithilfe von OpenSSL erstellt werden: server-key.pem und server-cert.pem. Dazu wechselt man in das neu erstellte Verzeichnis. Auf der Konsole ist nun folgendes auszuführen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;cd /opt/fhem/certs&lt;br /&gt;
sudo openssl req -new -x509 -nodes -out server-cert.pem -days 3650 -keyout server-key.pem&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit das SSL-Modul die erzeugten Dateien verwenden kann, muss das certs-Verzeichnis Ausführrechte haben (es ist auch kein Fehler, wenn die Dateien selbst nur die nötigsten Rechte haben). Die Berechtigungen werden wie folgt gesetzt&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sudo chmod 644 /opt/fhem/certs/*.pem&lt;br /&gt;
sudo chmod 711 /opt/fhem/certs&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das war auch schon alles, was man auf dem Raspberry Pi über die Konsole tun muss. Als nächstes öffnen wir FHEM im Browser. Hier müssen wir nun die Web Instanz suchen welche wir auf HTTPS umstellen möchten. In der Regel ist diese Instanz als WEB angelegt. Evtl. hab ihr mehrere Webinstanzen (z.B. WEBphone, WEBtablet) oder hab das Define anders benannt, dann müsst Ihr die folgenden Angaben entsprechend ändern.&lt;br /&gt;
&lt;br /&gt;
Wechselt in [[FHEMWEB]] in die Detailansicht des Define WEB (die URL lautet z.B. http://fhem:8083/fhem?detail=WEB). Dort setzt Ihr nun die folgenden Attribute&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr WEB HTTPS 1&lt;br /&gt;
attr WEB sslVersion TLSv12:!SSLv3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit ist HTTPS aktiviert. Nicht vergessen, die Konfiguration zu speichern, denn erst nach einem Neustart erfolgt der Zugriff per HTTPS über [https://192.168.n.n:8083/fhem https://192.168.n.n:8083/fhem]. Es ist wichtig die Adresse mit https:// aufzurufen, da es keine automatische Weiterleitung von http auf https existiert.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Burny4600</name></author>
	</entry>
</feed>