<?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=Soulman</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=Soulman"/>
	<link rel="alternate" type="text/html" href="http://wiki.fhem.de/wiki/Spezial:Beitr%C3%A4ge/Soulman"/>
	<updated>2026-04-03T21:01:01Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Trick_der_Woche&amp;diff=40747</id>
		<title>Trick der Woche</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Trick_der_Woche&amp;diff=40747"/>
		<updated>2026-01-18T23:33:41Z</updated>

		<summary type="html">&lt;p&gt;Soulman: /* HomeMatic Heizungsregler Uhrzeit einstellen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diese Seite enthält Tipps und Tricks, die zu unbedeutend sind, einen eigenen Artikel zu rechtfertigen, alternative Schreibweisen/Lösungen für eine Problem darstellen, Ungenauigkeiten oder unklare Formulierungen in den offiziellen Dokumenten ergänzen und ähnliches. Jeder Eintrag ist typischerweise sehr kurz (wenige Zeilen lang) und beleuchtet vielleicht nur einen Aspekt von FHEM, er kann allgemeiner Natur sein, oder sich auf ein spezielles Gerät oder einen speziellen Anwendungsfall beziehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== August 2025==&lt;br /&gt;
=== FTUI(3) Dateien direkt in FHEMWEB bearbeiten ===&lt;br /&gt;
Im Attribut editFileList der [https://fhem.de/commandref_modular.html#FHEMWEB FHEMWEB]-Definition &#039;&#039;&#039;zusätzlich zu den Default-Werten&#039;&#039;&#039; eintragen:&lt;br /&gt;
 FTUI (www/tablet):$FW_dir.&#039;/tablet&#039;:^.*html$&lt;br /&gt;
 FTUI3 (www/ftui)&amp;lt;code&amp;gt;:$FW_dir.&#039;/tablet&#039;:^.*\.(html|htm|js|css)$&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== August 2022==&lt;br /&gt;
=== Update ===&lt;br /&gt;
Wenn der Befehl &amp;quot;Update&amp;quot; nicht funktioniert und insbesondere die Fehlermeldung &#039;&#039;Bad hostname &#039;fhem.de:80&#039;&#039;&#039; zurück gibt, kann es sinnvoll sein, den Parameter  -noSSL zu versuchen. Details dazu im Artikel [[Update]]&lt;br /&gt;
&lt;br /&gt;
== Januar 2022==&lt;br /&gt;
=== günstiger Luftfeuchtesensor ===&lt;br /&gt;
Der [[HM-CC-TC Funk-Wandthermostat]] ist schon lange abgekündigt. Er wird derzeit oft recht günstig im Netz angeboten und eignet sich daher als billiger &amp;quot;StandAlone&amp;quot; Temperatur- und Luftfeuchtesensor, auch wenn er keinen Ventielantrieb steuern soll.&lt;br /&gt;
&lt;br /&gt;
== Dezember 2020 ==&lt;br /&gt;
=== Performance von Notifys ===&lt;br /&gt;
Im Tipp vom Dezember 2013 [[Trick der Woche#notify durch mehrere Ereignisse auslösen lassen|notify durch mehrere Ereignisse auslösen lassen]] heisst es:&lt;br /&gt;
:&#039;&#039;[…] Wenn man aber möchte, dass z.B. &amp;quot;on&amp;quot; und &amp;quot;off&amp;quot; auslöst (um etwa Dim-Befehle auszuschliessen), kann dies wie folgt erreicht werden:&#039;&#039;&lt;br /&gt;
::&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:(on|off) …&amp;lt;/code&amp;gt;&lt;br /&gt;
Performanter ist allerdings:&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:o[nf]+  …&amp;lt;/code&amp;gt;&lt;br /&gt;
wobei &#039;&#039;&#039;o[nf]+&#039;&#039;&#039; eine &amp;quot;Regexp&amp;quot; für beliebige Zeichenketten ist, die mit &#039;&#039;&#039;o&#039;&#039;&#039; anfangen und &#039;&#039;&#039;n&#039;&#039;&#039; und/oder &#039;&#039;&#039;f&#039;&#039;&#039; enthalten, also (auch) on und off.&lt;br /&gt;
&lt;br /&gt;
Alternativ kann auch:&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:on|MeinSchalter:off … &amp;lt;/code&amp;gt;&lt;br /&gt;
verwendet werden.&lt;br /&gt;
Die letzten beiden Varianten sparen Ausführungszeit. Ganz allgemein ist es besser, im notify das Suchmuster mit einem [[Regulärer Ausdruck|regulären Ausdruck]] (Regexp) eng zu definieren.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:on ... &amp;lt;/code&amp;gt;&lt;br /&gt;
ist performanter als&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter { if ($EVENT eq &amp;quot;on&amp;quot; ... &amp;lt;/code&amp;gt;&lt;br /&gt;
auch wenn das Ergebnis gleich ist.&lt;br /&gt;
&lt;br /&gt;
Allerdings ist &lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:on ... &amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas1 notify MeinSchalter:off ... &amp;lt;/code&amp;gt;&lt;br /&gt;
langsamer als&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchaltero[nf]+ { if ($EVENT eq &amp;quot;on&amp;quot;  ) { fhem( ) } else { fhem(&amp;quot;... &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die oben erwähnten &amp;quot;if&amp;quot; sind &amp;quot;perl if&amp;quot;s. Die Verwendung des FHEM Modul DOIF ist deutlich langsamer.  Die Betrachtung betrifft sowieso nur langsame Host-Systeme mit gleichzeitig vielen defines. Bei Verwendung z.b. einen Raspberry Pi 4 oder schnellerem Host dürften die Unterschiede vernachlässigbar sein.&lt;br /&gt;
&lt;br /&gt;
== Oktober 2020 ==&lt;br /&gt;
=== Entprellen ===&lt;br /&gt;
Will man ein notify innerhalb eines bestimmten Zeitraumes nur einmal auslösen lassen, auch wenn er in diesem Zeitraum mehrfach getriggered werden sollte, so bietet sich das [[Attribut]] &#039;&#039;&#039;disabledAfterTrigger&#039;&#039;&#039; an:&lt;br /&gt;
:&amp;lt;code&amp;gt;attr &amp;lt;notify_device&amp;gt; disabledAfterTrigger &amp;lt;Anzahl Sekunden&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Oktober 2019 ==&lt;br /&gt;
=== Funkstörungen durch leere Batterien ===&lt;br /&gt;
Unerklärliche Funkstörungen besonders im SlowRF Bereich (z.b. FS20) mit stark verminderter Reichweite von CULs, gestörter [[RFR CUL]] Kommunikation etc. gestörtem Empfang von Funktelegrammen aller Art können ihre Ursache darin haben, dass einige Geräte mit (fast) leeren Batterien unkontrolliert senden und dadurch den Kanal mit Störsignalen verschmutzen. Anfällig sind insbesondere ältere FHT Fenstersensoren wie der [[FHT80TF]], die mit fast leeren Batterien eine Art Rauschen aussenden und damit die &#039;&#039;&#039;komplette&#039;&#039;&#039; FS20 Kommunikation lahmlegen können, Störungen beeinflussen auch andere Funkprotokolle im selben Frequenzbereich, wie z.b. HM.&lt;br /&gt;
Also im Falle unerklärlicher und weitreicher Funkstörungen die Batterien aller Geräte überprüfen.&lt;br /&gt;
&lt;br /&gt;
== Februar 2019 ==&lt;br /&gt;
=== Unterräume anlegen ===&lt;br /&gt;
[[Datei:Unterraeume.png|350px|thumb|right|Beispiel für einen gegliederten Raum &amp;quot;Steuerung&amp;quot;]]&lt;br /&gt;
In [[FHEMWEB]] besteht neben der Möglichkeit, Geräte dadurch übersichtlich anzuordnen, indem diese Gruppen und einfachen Räumen zugeordnet werden, auch die Möglichkeit, Räume weiter zu gliedern und Unterräume zu verwenden. Dazu wird nach der Angabe des Hauptraums der Unterraum, getrennt durch ein &amp;quot;-&amp;gt;&amp;quot; angegeben. Beispiele:&lt;br /&gt;
 attr &amp;lt;DEVICENAME&amp;gt; room Steuerung-&amp;gt;Logik&lt;br /&gt;
 attr &amp;lt;DEVICENAME&amp;gt; room Steuerung-&amp;gt;Heizung&lt;br /&gt;
&#039;&#039;&#039;Hinweis&#039;&#039;&#039;: Legt man zusätzlich einen Raum &#039;&#039;Steuerung&#039;&#039; an, erscheint dieser als zusätzlicher Eintrag in der Raumliste.&lt;br /&gt;
&lt;br /&gt;
== Januar 2019 ==&lt;br /&gt;
=== HomeMatic IP ===&lt;br /&gt;
Das [[HomeMatic IP]]-Protokoll unterscheidet sich deutlich vom bisherigen HomeMatic Protokoll, im Grunde ist es ein anderes System, das nur dem Namen nach dem älteren HomeMatic gleicht. HM-IP Geräte können aktuell (Anfang 2019) nur über eine systemeigene Zentrale CCU2 (als physisch vorhandenes Interface) und die HomeMatic-Module in FHEM integriert werden, sind in FHEM jedoch &#039;&#039;&#039;nicht&#039;&#039;&#039; unmittelbar als Homematic-Geräte ansprechbar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Dezember 2018 ==&lt;br /&gt;
===HomeMatic Heizungsregler Uhrzeit einstellen===&lt;br /&gt;
HomeMatic Thermostate / Heizungsregler  wie der HM-CC-TC der der HM-TC-IT-WM-W-EU etc. synchronisieren ihre Uhrzeit täglich etwa gegen Mitternacht mit der Zentrale. Man kann dieses Update aber jederzeit erzwingen durch den Befehl  &lt;br /&gt;
 set &amp;lt;DEVICENAME&amp;gt; sysTime&lt;br /&gt;
&lt;br /&gt;
== November 2018 ==&lt;br /&gt;
===HomeMatic Heizunggeräte gebraucht gekauft===&lt;br /&gt;
HomeMatic Heizunggeräte gebraucht gekauft und jetzt lassen sie sich nicht richtig peeren oder pairen?&lt;br /&gt;
Das Problem ist meistens, dass die Geräte noch mit der Zentrale des Verkäufers gepairt oder mit anderen Geräten gepeert sind. &lt;br /&gt;
Mit Thermostaten wie der [[HM-CC-TC Funk-Wandthermostat]] oder der Nachfolger [[HM-TC-IT-WM-W-EU Funk-Wandthermostat AP]] können mit Ventilantrieben wie dem [[HM-CC-VD Funk-Stellantrieb]] nur gepeert werden, wenn &lt;br /&gt;
* die Thermostaten nicht selbst schon mit einer Zentrale (im FHEM Umfeld also z.b. einer [[Virtueller Controller VCCU]] oder [[HM-[[HM-CFG-LAN LAN Konfigurations-Adapter]] oder ähnliches) gepairt wurden&lt;br /&gt;
* die Ventilantriebe nicht selbst mit einer Zentrale gepairt oder mit einem Thermostaten gepeert wurden.&lt;br /&gt;
&lt;br /&gt;
Es ist daher sinnvoll zuerst alle Geräte zurückzusetzen, da viele Verkäufer dies vergessen. Wie das geht steht in der Anleitung.&lt;br /&gt;
Beispiele:&lt;br /&gt;
* HM-CC-TC -&amp;gt; MENU lange drücken, dann Sonderfunktion &amp;quot;RES&amp;quot; anwählen, mit OK-Taste bestätigen&lt;br /&gt;
* HM-CC-VD -&amp;gt; Anlernknopf 10 Sekunden lang drücken. Der Antrieb geht in Zustand A2, nachdem er das Ventil 1x auf- und zugefahren hat geht er in A3, Knopf nochmals drücken.&lt;br /&gt;
* HM-TC-IT-WM-W-EU -&amp;gt; Batterien entfernen, alle 3 Tasten gedrückt halten, Batterien einlegen, warten bis &amp;quot;rES&amp;quot; im Display erscheint, Tasten loslassen&lt;br /&gt;
&lt;br /&gt;
== Januar 2018 ==&lt;br /&gt;
=== at absolutem Datum ===&lt;br /&gt;
Vielen ist nicht klar, dass man mit dem &amp;quot;define … at&amp;quot; auch einfach ein absolutes Datum definieren kann (obwohl es in der Commandref steht). Anstatt umfangreicher DOIF Konstrukte oder &amp;quot;define … at&amp;quot; die täglich ablaufen und testen ob der gewünschte Tag schon erreicht ist, geht auch ein einfaches:&lt;br /&gt;
&lt;br /&gt;
 define Licht_Neujahr_2019 at 2019-01-03T06:01:01 set Licht1 on&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Allgemein: &lt;br /&gt;
 define &amp;lt;name&amp;gt; at [&amp;lt;datespec&amp;gt;] &amp;lt;command&amp;gt; &lt;br /&gt;
wobei &amp;lt;datespec&amp;gt; =  (YYYY-MM-DDTHH:MM:SS) (also in ISO8601 Schreibweise).&lt;br /&gt;
Wichtig ist die Angabe mit Sekunden, die nicht weggelassen werden können.&lt;br /&gt;
&lt;br /&gt;
== Dezember 2017 ==&lt;br /&gt;
=== perl Version ===&lt;br /&gt;
Gelegentlich taucht die Frage auf, welche perl Version zum Betrieb von FHEM minimal erforderlich ist. Bedauerlicherweise lässt sich das aber aktuell nicht definitiv bestimmen.&lt;br /&gt;
Rudolf König testet zur Zeit (Ende 2017) mit v5.16 (5 Jahre alt) und v5.24 (ca. 1 Jahr alt). &lt;br /&gt;
Sollte sich herausstellen, dass eines seiner Module (vor allem fhem.pl selbst) nicht mit der jeweils &#039;&#039;aktuellen&#039;&#039; perl Version funktioniert, so wird das Modul entsprechend kompatibel gemacht.&lt;br /&gt;
Andererseits verwendet Rudolf König nach eigener Aussage (bewusst) keine Features, die eine höhere Version als perl 5.8.3 (immerhin älter als 13 Jahre) voraussetzen. Tatsächlich zeigen aktuelle Installation auf relativ alten BuffaloLinkstation Systemen, dass FEHM mit perl 5.8.3 prinzipiell lauffähig ist.&lt;br /&gt;
&lt;br /&gt;
Rudolf König prüft als Maintainer von fhem.pl aber nicht, welche Mindestversionen andere Entwickler in Ihren Modulen benötigen. Es ist daher möglich oder sogar wahrscheinlich, das einzelne Module höhere Versionen als 5.8.3 benötigen.&lt;br /&gt;
&lt;br /&gt;
Es gibt aktuell keinen Weg, die Mindestanforderungen z.b. automatisiert zu ermitteln.&lt;br /&gt;
&lt;br /&gt;
== November 2017 ==&lt;br /&gt;
=== Grundlastmodul ===&lt;br /&gt;
Mit einem Grundlastmodul ist es möglich, LED Leuchtmittel an einem Schaltaktor / Dimmer zu betreiben. Dies ist bei manchen nicht möglich, da einige LEDs nachglimmen oder flackern. Das Grundlastmodul, welches parallel zum Verbraucher angeschlossen wird, kann diesen Effekt aufheben, da ein Verbraucher mit ohmscher Last simuliert wird.&lt;br /&gt;
Das Modul ermöglicht eventuell auch den Betrieb eines [[RSL 2-Draht Einbauschalter]]s, der bei LED Leuchtmitteln ansonsten nicht eingesetzt werden kann, da zum Betrieb eine Restspannung über den Verbraucher benötigt wird, der bei LED Lampen mit Vorschaltgerät nicht vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
In Frage kommt z.b. ein Eltako ELTA Grundlastelement GLE / PTC, das ca. 5-8 Euro kostet.&lt;br /&gt;
Technisch handelt sich dabei um einen PTC, also einen Widerstand mit positivem Temperaturkoeffizient, d.h. der Widerstand sinkt deutlich, wenn das Element kälter wird. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das genannte Grundlastelement hat folgende Daten: &lt;br /&gt;
 Kaltwiderstand: 3500 Ω&lt;br /&gt;
 Einschaltstrom bei 230 V: 65 mA (ca. 15 W)&lt;br /&gt;
 Verlustleistung nach 60 Sekunden: 0,65 W &lt;br /&gt;
&lt;br /&gt;
Im kalten Zustand lässt der PTC bei 230 Volt einen Strom von ca. 0,065 Ampere zu.  &lt;br /&gt;
Das reicht, um von Schaltaktoren, Freischaltern, Dimmern etc. als die erforderliche Grundlast erkannt zu werden.&lt;br /&gt;
Wird der Stromkreis eingeschaltet, fliesst auch tatsächlich Strom durch den PTC, der sich dadurch schnell erwärmt (das Element wird tatsächlich sogar relativ heiss). Dadurch steigt steigt der Widerstand auf ca 50000-60000 Ohm an und die Verlustleistung sinkt auf unter 1 Watt. Der PTC regelt sich jetzt selber auf eine bestimmte Temperatur und Widerstand ein.&lt;br /&gt;
&lt;br /&gt;
Wird ausgeschaltet, so fliest über den PTC immer noch ein kleiner Reststrom von ca 0,005 Ampere, der als Grundlast reicht, um z.b. Spannungen abzubauen, die LEDs nachflackern lassen, dieser steigt mit Erkalten rasch an, dadurch werden auch Schalter wie die [[RSL 2-Draht Einbauschalter]] mit genug Strom versorgt.&lt;br /&gt;
&lt;br /&gt;
Theoretisch kann also auch ein PTC mit diesen Werten und einer Leistung von ca. 20 Watt selbst gebaut werden, der Preis der Einzelteile liegt bei unter 2 Euro. Das Eltako Element ist bereits mit Isolierung und Anschlussleitungen versehen, mit eigner Arbeitszeit ist der Preisvorteil beim Selberbau also gering.&lt;br /&gt;
&lt;br /&gt;
== Februar 2017 ==&lt;br /&gt;
=== at Zeiten ===&lt;br /&gt;
 at 03:00      -&amp;gt;  1x um 3 Uhr (wann immer das nächste mal 3 Uhr ist, ggf. erst morgen)&lt;br /&gt;
 at *03:00     -&amp;gt;  jeden Tag um 3 Uhr&lt;br /&gt;
 at +03:00     -&amp;gt;  in 3 Stunden&lt;br /&gt;
 at +*03:00    -&amp;gt;  in 3 Stunden und dann alle 3 Stunden erneut&lt;br /&gt;
 at +*{4}03:00 -&amp;gt;  in 3 Stunden und dann alle 3 Stunden erneut, aber nur 4x ausführen.&lt;br /&gt;
&lt;br /&gt;
== Oktober 2016 ==&lt;br /&gt;
=== Grundlagen der Heizungssteuerung ===&lt;br /&gt;
Der Artikel [[Grundlagen der Heizungssteuerung]] soll einen zentralen Einstiegspunkt und eine Übersicht der Möglichkeiten insb. für Neulinge in FHEM bieten.&lt;br /&gt;
&lt;br /&gt;
=== Batterieüberwachung für Geräte ohne Batteriestatus ===&lt;br /&gt;
Es gibt Möglichkeiten um auch bei Geräten ohne Batteriestatus-Reading eine schwache Batterie erkennen zu können: [[Batterie%C3%BCberwachung#Ger.C3.A4te_ohne_Batteriestatus|Geräte ohne Batteriestatus]].&lt;br /&gt;
&lt;br /&gt;
== Mai 2016 ==&lt;br /&gt;
=== DbLog reparieren ===&lt;br /&gt;
Sollte ein fhem mit DbLog Probleme machen, oder auf der SQL-Konsole Fehler werfen, so ist eine Reparatur der DB fällig. Das ist auf der Kommandozeile verhältnismäßig einfach möglich und wird im Kapitel [[DbLog#Datenbank reparieren]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
=== DbLog bearbeiten ===&lt;br /&gt;
Unerwünschte Einträge in den Loggings treten immer wieder mal auf. Wie man dies in einer Datenbank korrigiert, dazu gibt das Kapitel [[DbLog#Bearbeitung von Datenbank-Einträgen]] eine erste Einführung.&lt;br /&gt;
&lt;br /&gt;
=== Pollenflug ===&lt;br /&gt;
In dieser schönen Jahreszeit werden manche durch Heuschnupfen geplagt. Auf der Seite [[Pollenflug]] wird beschrieben, wie man eine Pollenvorhersage in fhem einbinden kann - hilft zwar nicht gegen das Niesen, ist aber trotzdem ganz informativ... ;-)&lt;br /&gt;
&lt;br /&gt;
== April 2016 ==&lt;br /&gt;
=== HomeMatic und VCCU ===&lt;br /&gt;
HomeMatic Nutzer sollten unbedingt eine [[Virtueller Controller VCCU|VCCU]] einrichten und nutzen.&lt;br /&gt;
Die Einrichtung ist unaufwändig und schafft jede Menge Vorteile, auch beim Einsetzen nur einer Schnittstelle wie z.B. einem [[HM-CFG-LAN LAN Konfigurations-Adapter]]. Auch die nachträglich Einrichtung ist problemlos, sofern vorher nur ein I/O Gerät (&amp;quot;Funkschnittstelle&amp;quot;) verwendet wurde.&lt;br /&gt;
&lt;br /&gt;
== Dezember 2015 ==&lt;br /&gt;
===defmod===&lt;br /&gt;
In vielen Fällen will man mit einer Aktion gleichzeitig eine andere Aktion bereits für später festlegen, z.b. nach Einschalten  einer Heizung durch einen Bewegungsmelder diese eine Stunde später wieder ausschalten.&lt;br /&gt;
&lt;br /&gt;
Dies kann z.B. durch ein Konstrukt dieser Art erledigt werden:&lt;br /&gt;
:&amp;lt;code&amp;gt;define Heizung_an notify Bewegung set HZG_WZ desired-temp 22 ;; define reset_Heizung at +01:00:00 set HZG_WZ desired-temp 16&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nachteilig ist, dass bei einer weiteren Auslösung des Bewegungsmelders die Heizzeit nicht verlängert wird, da eine Neudefinition von &#039;&#039;&#039;reset_Heizung&#039;&#039;&#039; mit der Fehlermeldung &#039;&#039;&#039;reset_Heizung already exists, delete it first&#039;&#039;&#039; quittiert wird. Die Lösung bisher war, das alte &#039;&#039;&#039;reset_Heizung&#039;&#039;&#039; zunächst zu löschen und dann erneut mit neuem Zeitstempel anzulegen:&lt;br /&gt;
:&amp;lt;code&amp;gt;define Heizung_an notify Bewegung set HZG_WZ desired-temp 22 ;; delete reset_Heizung ;; define reset_Heizung at +01:00:00 set HZG_WZ desired-temp 16&amp;lt;/code&amp;gt;&lt;br /&gt;
Aber auch dieses umständliche Konstrukt hat noch einen Nachteil: Es erzeugt bei einer ersten Auslösung eine Fehlermeldung, weil &#039;&#039;&#039;reset_Heizung&#039;&#039;&#039; noch nicht exisitert und daher nicht gelöscht werden kann.  Dies liesse sich abfangen, was die Konstruktion weiter verkomplizieren würde.&lt;br /&gt;
&lt;br /&gt;
Daher hat Rudolf König mit FHEM 5.6 den neuen Befehel &amp;quot;defmod&amp;quot; eingeführt, der ein noch nicht existieredendes define neu anlegt (wie &amp;quot;define&amp;quot;), eine bereits vorhandenes aber direkt ändert (wie &amp;quot;delete&amp;quot; und danach &amp;quot;define&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Dadurch lässt sich verkürzt schreiben:&lt;br /&gt;
:&amp;lt;code&amp;gt;define Heizung_an notify Bewegung set HZG_WZ desired-temp 22 ;; defmod reset_Heizung at +01:00:00 set HZG_WZ desired-temp 16&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== April 2015 ==&lt;br /&gt;
===FS20 Timer===&lt;br /&gt;
FS20 Aktoren beherrschen zwei verschiedene Timer-Methoden.&lt;br /&gt;
&lt;br /&gt;
Angenommen ein FS20 Device heisse &amp;quot;Lampe&amp;quot; und sei z.B. ein [[FS20_SU_Unterputz-Funk-Schalter|FS20 SU]] (Unterputzschalter), dann kann man mit FHEM sowohl &lt;br /&gt;
:&amp;lt;code&amp;gt; set Lampe on-for-timer 30&amp;lt;/code&amp;gt;&lt;br /&gt;
verwenden um die Lampe 30 Sekunden einzuschalten, aber auch zunächst in den FS20 SU die maximale Einschaltdauer einprogrammieren:&lt;br /&gt;
:&amp;lt;code&amp;gt; set Lampe timer 30&amp;lt;/code&amp;gt;&lt;br /&gt;
Dannach wird jedes normale&lt;br /&gt;
:&amp;lt;code&amp;gt; set Lampe on&amp;lt;/code&amp;gt;&lt;br /&gt;
die Lampe für nur 30 Sekunden einschalten.&lt;br /&gt;
&lt;br /&gt;
Als Timerwerte kommen in beiden Fällen die bekannten [[Trick_der_Woche#FS20_Timerzeiten|128 Sekundenwerte]] von 0,25 Sekunden bis Etwa 4,5 Stunden in Frage.&lt;br /&gt;
&lt;br /&gt;
Es ist offenbar nicht bei allen Aktoren möglich einen einmal eingestellten Timer zu löschen, neue Werte eingeben aber sehr wohl.&lt;br /&gt;
&lt;br /&gt;
Mehr hier: [[FS20_Allgemein#Gerätetimer setzen / löschen|FS20 timer]].&lt;br /&gt;
&lt;br /&gt;
== Februar 2015 ==&lt;br /&gt;
=== 1-wire am GPIO4-Port des RaspberryPi funktioniert nicht mehr nach Systemupdate ===&lt;br /&gt;
Es kann passieren, dass nach einem Systemupdate (apt-get update oder apt-get dist-upgrade) die 1-wire-Geräte am GPIO4-Port plötzlich nicht mehr funktionieren. Eine Problemlösung dazu ist im Artikel &amp;quot;[[Raspberry Pi und 1-Wire#1-wire am GPIO4-Port funktioniert nicht mehr nach Systemupdate]]&amp;quot; beschrieben.&lt;br /&gt;
&lt;br /&gt;
=== Backup der Konfiguration (fhem.cfg und fhem.state) bei jedem &amp;quot;save&amp;quot; ===&lt;br /&gt;
Der nachfolgende Codeschnipsel erstellt bei jedem &amp;quot;save&amp;quot; eine Kopie der aktuellen [[Konfiguration]] (fhem.cfg und fhem.state) in ein Verzeichnis &amp;quot;backup_cfg-state&amp;quot; welches unter /opt/fhem/ zu finden ist. Somit kann bei einem Fehler jederzeit auf den letzten Stand zurückgegangen werden.&lt;br /&gt;
Zuerst ins FHEM Befehlsfeld den folgenden Befehl eingeben:&lt;br /&gt;
:&amp;lt;code&amp;gt;{ `mkdir backup_cfg-state` } &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach folgendes [[notify]] anlegen:&lt;br /&gt;
 define backupCfg notify global:SAVE {\&lt;br /&gt;
 my $now = TimeNow();; $now =~ s/ /_/g;; \&lt;br /&gt;
 `cp $attr{global}{configfile} ./backup_cfg-state/fhem.cfg.$now`;;\&lt;br /&gt;
 `cp $attr{global}{statefile} ./backup_cfg-state/fhem.state.$now`;;\&lt;br /&gt;
 } &lt;br /&gt;
&lt;br /&gt;
Quelle: {{Link2Forum|Topic=30873|Message=234412|LinkText=FHEM-Forum}}&lt;br /&gt;
&lt;br /&gt;
== Januar 2015 ==&lt;br /&gt;
=== CUL &amp;amp; CO über Serial ID-einbinden ===&lt;br /&gt;
Bei mehreren USB-Geräten kann es vorkommen, dass sie vertauscht werden z.B. &#039;&#039;/dev/ttyUSB0&#039;&#039; zu&#039;&#039; /dev/ttyUSB1&#039;&#039; oder &#039;&#039;/dev/ttyACM0&#039;&#039; zu &#039;&#039;/dev/ttyACM1&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Um dies zu umgehen, kann man sie über ihre Serial-ID in FHEM einbinden.&lt;br /&gt;
&lt;br /&gt;
Dieser Befehl zeigt die Serial-ID:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;ls -l /dev/serial/by-id&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier die Beispielausgabe eines CUL868, JeeLink, RFXtrx und eines CUL433&lt;br /&gt;
&lt;br /&gt;
 user@xxxx:~# ls -l /dev/serial/by-id&lt;br /&gt;
 lrwxrwxrwx 1 root root 13 Jan  9 23:34 usb-busware.de_CUL868-if00 -&amp;gt; ../../ttyACM0&lt;br /&gt;
 lrwxrwxrwx 1 root root 13 Jan  9 13:26 usb-FTDI_FT232R_USB_UART_A901RQ9F-if00-port0-&amp;gt; ../../ttyUSB0&lt;br /&gt;
 lrwxrwxrwx 1 root root 13 Jan  9 13:26 usb-RFXCOM_RFXtrx433_A1WZWL5Y-if00-port0-&amp;gt; ../../ttyUSB1&lt;br /&gt;
 lrwxrwxrwx 1 root root 13 Jan  9 21:29 usb-busware.de_CUL433-if00 -&amp;gt; ../../ttyACM1 &lt;br /&gt;
&lt;br /&gt;
Damit lässt sich folgende Definition erstellen:&lt;br /&gt;
&lt;br /&gt;
z.B. für einen CUL868&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define CUL868 CUL /dev/serial/by-id/usb-busware.de_CUL868-if00@9600 1134&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oder einen JeeLink&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define Jeelink JeeLink /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A901RQ9F-if00-port0@57600&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Einschränkung:&#039;&#039;&#039; Bei CULs von Busware lassen sich nur CUL433 und CUL868 unterscheiden. Zwei CUL868 haben z.B. immer die gleiche Serial-ID.&lt;br /&gt;
&lt;br /&gt;
=== HM LAN Konfig-Adapter Antenne verbessern===&lt;br /&gt;
Die Antenne des [[HM-CFG-LAN LAN Konfigurations-Adapter]] kann man mit etwas Bastelgeschick verlängern um den Empfang zu verbessern. &lt;br /&gt;
&lt;br /&gt;
Sinnvoll ist die Verlängerung auf 1/2 Lambda  (868MHz = 17,27 cm) oder gar 1 Lambda.&lt;br /&gt;
1 Lambda Antennen haben starke Richtwirkung in Form eines gedachten Zylinders, dessen Mittelachse die Antenne ist.&lt;br /&gt;
D.h., Alles was sich in Richtung des Anfangs und des Endes des Antennedrahtes befindet, hat schlechteren Empfang als mit einer kurzen Antenne. Daher muss man die Antenne ggf. genauer ausrichten.&lt;br /&gt;
&lt;br /&gt;
Anleitungen dazu werden an verschiedenen Stellen veröffentlicht, z.B. in &lt;br /&gt;
[http://www.ip-symcon.de/forum/threads/18411-Umbau-HM-LAN-Adapter-auf-Lambda-1-2-Dipol-Antenne diesem Beitrag] im IP-Symcon Forum (anders als der Namen der Anleitung vermuten lässt, liegt hier kein Dipol vor, sondern eine &amp;quot;normale&amp;quot; 1 Lambda Antenne.)&lt;br /&gt;
&lt;br /&gt;
Prinzipiell so dünnen Draht wie möglich verwenden.&lt;br /&gt;
&lt;br /&gt;
Wer noch mehr rausholen will, kann auch zusätzlichen Aufwand betreiben und die Antenne etwas von der Elektronik entfernen, die nämlich Störstrahlung in die Antenne einkoppelt. Oder eine Groundplane bauen.&lt;br /&gt;
Ein Anleitung für die CCU (analog auch für den HM LAN Konfig-Adapter einsetzbar) gibt es [http://www.techwriter.de/beispiel/funkeige.htm hier].&lt;br /&gt;
&lt;br /&gt;
== Dezember 2014 ==&lt;br /&gt;
=== FHT80TF als &amp;quot;Prüfsender&amp;quot; einsetzen  ===&lt;br /&gt;
Da der [[FHT80TF-2]] günstig ist und seinen Zustand ca. alle zwei Minuten sendet, kann er gut zum Ermitteln der Funklage von [[SlowRF]] Komponenten genutzt werden, auch wenn diese nicht senden. Den RSSI einer FS20 Schaltsteckdose kann man z.B. nicht wissen, da die Dose nur ein Empfänger ist. Wenn eine Dose nicht gut funktioniert und man den Verdacht hat, dass sie funktechnisch ungünstig liegt, kann man einen [[FHT80TF-2]] neben die Steckdose legen und man bekommt nach zwei Minuten einen Wert, der (trotz umgekehrter Funkrichtung) gut genug ist, um einem Hinweise zu geben.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== November 2014 ==&lt;br /&gt;
=== FS20 Adressschema und die Rolle des Hauscodes  ===&lt;br /&gt;
[[FS20_Allgemein#FS20_Adressierungsschema_.28Vorschlag.29]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Oktober 2014 ==&lt;br /&gt;
=== Aktor für Wanddosen ohne Nulleiter  ===&lt;br /&gt;
Es gibt viele Aktoren die man in Einbaudosen hinter Schaltern einbauen kann. Oft scheitert deren Nutzung aber daran, dass in vielen Elektroinstalltionen in der Einbaudose eines (Licht)schalters kein Neutralleiter (Nulleiter) verlegt ist, den die meisten Aktoren zur eigenen Stromversorgung brauchen. Hier kann der [[RSL 2-Draht Einbauschalter]] helfen, der auch ohne Neutraleiter funktioniert und kompatibel zu InterTechno ist. Er lässt sich z.B. mit einem CUL(433) schalten. Problematisch ist damit allerdings das Schalten von LED Lampen.&lt;br /&gt;
&lt;br /&gt;
== August 2014 ==&lt;br /&gt;
=== Perl-Skripte Online testen  ===&lt;br /&gt;
Im Internet existieren Webseiten auf denen man Perl-Code online testen kann. Beispielsweise auf [http://www.tutorialspoint.com/execute_perl_online.php codingground] kann man Code zum Testen eingeben und die Auswirkungen betrachten. Dies eignet sich zur schnellen Fehleranalyse oder um Perl zu lernen. Natürlich lassen sich keine FHEM-Besonderheiten nutzen.&lt;br /&gt;
&lt;br /&gt;
== Juli 2014 ==&lt;br /&gt;
=== Funklast reduzieren===&lt;br /&gt;
Bewegungsmelder erzeugen in der Regel eine recht hohe Funklast, wenn sie oft ausgelöst werden, also z.B. Licht in einem Zimmer schalten sollen.&lt;br /&gt;
&lt;br /&gt;
Konstruktionen der Art:&lt;br /&gt;
:&amp;lt;code&amp;gt;define FlurLicht notify Bewegungsmelder_Flur:motion:.* set Licht_Flur on-for-timer 256&amp;lt;/code&amp;gt;&lt;br /&gt;
haben daher den Nachteil bei viel Bewegung im Flur und je nach Einstellung des Sendeabstandes des Bewegungsmelders mindestens alle 120 Sekunde oder öfter ein &lt;br /&gt;
:&amp;lt;code&amp;gt;on-for-timer 256&amp;lt;/code&amp;gt;&lt;br /&gt;
zu senden. Das erzeugt eine hohe Funklast, speziell wenn der Aktor ein SlowRF Gerät ist (z.B. FS20 Unterputzschalter).&lt;br /&gt;
In solchen Fällen kann es helfen, nur dann einen Befehl zu senden, wenn das Licht nicht schon an ist:&lt;br /&gt;
:&amp;lt;code&amp;gt;define FlurLicht notify Bewegungsmelder_Flur:motion:.* { if (Value(&amp;quot;Licht_Flur&amp;quot;) eq &amp;quot;off&amp;quot;) { fhem (&amp;quot;set Licht_Flur1 on-for-timer 256&amp;quot;) } }&amp;lt;/code&amp;gt;&lt;br /&gt;
Nachteilig ist aber, dass eine Auslösung innerhalb 256 Sekunden die Einschaltzeit nicht verlängert. Dies kann man umgehen, indem man nicht on-for-timer verwendet, sondern den Aktor selber verzögert auschaltet und bei weiteren Auslösungen nur die Verzögerung erneut anlegt:&lt;br /&gt;
:&amp;lt;code&amp;gt;define FlurLicht notify Bewegungsmelder_Flur:motion:.* { if (Value(&amp;quot;Licht_Flur1&amp;quot;) eq &amp;quot;off&amp;quot;) { fhem (&amp;quot;set Licht_Flur on ;; define FlurLicht_aus at +00:04:16 set Licht_Flur off&amp;quot;) } else { fhem (&amp;quot;delete FlurLicht_aus ;; define FlurLicht_aus at +00:04:16 set Licht_Flur off&amp;quot;) }}&amp;lt;/code&amp;gt;&lt;br /&gt;
Durch den relativ neuen Befehl &amp;quot;defmod&amp;quot; kann ausserdem das Löschen und neu Anlegen zusammengefasst werden, sieh Tipp Dezember 2015&lt;br /&gt;
&lt;br /&gt;
== Juni 2014 ==&lt;br /&gt;
=== Batteriestatus bei HomeMatic Devices aktivieren===&lt;br /&gt;
Zumindest einige (wenn nicht alle) batteriegespeisten HM-Geräte können Batteriemeldungen senden, tun dies in der normalen Konfiguration aber nicht.&lt;br /&gt;
Dazu muss das Register cyclicInfoMsg auf on gesetzt werden. &lt;br /&gt;
&lt;br /&gt;
Wie man das macht steht z.B. hier&lt;br /&gt;
[[HM-SEC-SC_Tür-Fensterkontakt#Batteriestatus_aktivieren]]&lt;br /&gt;
und hier&lt;br /&gt;
[[HomeMatic_Type_ThreeState]]&lt;br /&gt;
&lt;br /&gt;
== Mai 2014 ==&lt;br /&gt;
=== Dummywert mit aktueller Uhrzeit versehen in anderen Dummy kopieren===&lt;br /&gt;
Der Inhalt von Dummy1 soll erweitert um  Uhrzeit und Datum in Dummy2 kopiert werden (z.B. um die Urzeit der letzten Auslösung einer Alarmanlage anzuzeigen)&lt;br /&gt;
:&amp;lt;code&amp;gt;{ fhem(&amp;quot;set dummy2 &amp;quot; . (Value(&amp;quot;Dummy1&amp;quot;).&amp;quot; &amp;quot;.TimeNow()) )  } &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Zwei Dummywerte in einen anderen Dummy kopieren ===&lt;br /&gt;
Der String in Dummy1 soll um den String in Dummy2 erweitert und nach Dummy3 kopiert werden:&lt;br /&gt;
:&amp;lt;code&amp;gt;{ fhem(&amp;quot;set Dummy3 &amp;quot;.(Value(&amp;quot;Dummy1&amp;quot;)+Value(&amp;quot;Dummy2&amp;quot;))) } &amp;lt;/code&amp;gt;&lt;br /&gt;
(Achtung: &amp;quot;+&amp;quot;  ist Zahlen addieren, &amp;quot;.&amp;quot; ist String konkatenieren / verketten)&lt;br /&gt;
&lt;br /&gt;
== April 2014==&lt;br /&gt;
=== Code sparen ===&lt;br /&gt;
Wer Definitionen wie die aus dem März zum [[Trick der Woche#Zuverlässigkeit von FS20 Schaltungen erhöhen|Abfangen von Fehlbedienungen]] verwendet, kann durch eine ELSE Erweiterung auch gleich das Auschalten erledigen.&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_TV_on notify TV { if (&amp;quot;$EVENT&amp;quot; eq &amp;quot;on&amp;quot; || &amp;quot;$EVENT&amp;quot; eq &amp;quot;dimup&amp;quot;) { fhem(&amp;quot;set TV on&amp;quot;) } else { fhem(&amp;quot;set TV off&amp;quot;) } }&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hierdurch schaltet ON oder versehentlich zu langes Drücken (also DIMUP) den Fernseher ein, jeder &#039;&#039;andere&#039;&#039; Tastendruck (also insbesondere die OFF Taste oder zu langes Drücken der OFF Taste -&amp;gt; DIMDOWN) den Fernseher aus.&lt;br /&gt;
&lt;br /&gt;
Voraussetzung ist, dass die Fernbedienung standardkonfiguriert ist, siehe auch nächster Tip.&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration eines FS20 Senders prüfen ===&lt;br /&gt;
Gelegentlich reagieren bestimmte notifys nicht, die von Sendern (Fernbedienungen, Sensoren oder Schaltern) ausgelöst werden sollen. Speziell bei FS20 aber auch bei HomeMatic kann das daran liegen, dass der Sender nicht sendet was man denkt. So gut wie alle FS20 Sender kennen nämlich nicht nur ON und OFF, sondern über ein Dutzend Schaltzustände. Dimmen ist einem noch hinreichend bewusst, es gibt aber auch exotische Dinge wie  Ein-für-Zeitdauer, Ein-auf-alte-Helligkeit, Aus-für-Zeitdauer (nur FS20), Ein-für-Zeitdauer-dannach-alter-Zustand und vieles mehr.&lt;br /&gt;
&lt;br /&gt;
Was also ein Infrarot-Bewegungsmelder bei Auslösung sendet und auch was eine Fernbedienungstaste sendet ist einstellbar. Wenn jetzt zum Beispiel an einer Fernbedienung auf Tastendruck nicht ON sondern Ein-für-Zeitdauer (ON-FOR-TIMER) gesendet wird, wird&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_TV_on notify TVFB:on set TV on&amp;lt;/code&amp;gt;&lt;br /&gt;
seltsamerweise nicht auslösen, obwohl die richtige Taste (und diese auch nicht zu lang) gedrückt wurde.&lt;br /&gt;
&lt;br /&gt;
Auch wenn man sich sicher ist, das Richtige in die Fernbedienung/Sensoren einprogramiert zu haben, ist ein einfacher Test immer, dies mit&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_TV notify TVFB set TV on&amp;lt;/code&amp;gt;&lt;br /&gt;
zu prüfen. Dieses notify löst immer aus, wenn &amp;quot;TVFB&amp;quot;  &#039;&#039;irgendetwas&#039;&#039; sendet, egal was. (Beachte: Man kann dann den Fernseher aber nicht mehr ausschalten, da auch die Austaste das notify auslöst und zum TV-Aktor nur &amp;quot;on&amp;quot; sendet). &lt;br /&gt;
&lt;br /&gt;
Geht die Schaltung jetzt (kann man den Fernseher also jetzt EINschalten), liegt der Verdacht nahe, dass die Konfiguration des Senders / Sensors anders ist, als man denkt. Das Logfile, der EventMonitor oder ein Beobachtung von FHEM per Telnet mittels &amp;quot;inform&amp;quot; gibt Aufschluss, welcher Befehl tatsächlich empfangen wurde.&lt;br /&gt;
&lt;br /&gt;
== März 2014==&lt;br /&gt;
=== Zuverlässigkeit von FS20 Schaltungen erhöhen ===&lt;br /&gt;
FS20 Fernbedienungen senden bei Tastendrücken von mehr als 0,4 Sekunden anstatt ON bzw. OFF DIMUP bzw DIMDOWN.(Auch einige FBs anderer Systeme verhalten sich ähnlich)&lt;br /&gt;
&lt;br /&gt;
Das führt gelegentlich zu allgemein schlechter Bedienbarkeit (und schlechtem WAF), da 0,4 Sekunden relativ kurz ist und gerne aus versehen länger gedrückt wird. Das ist vor allem problematisch, wenn etwas geschaltet werden soll, was keinen Dimmer hat oder Dimmen nicht unterstützt.&lt;br /&gt;
&lt;br /&gt;
Eine Konfiguration wie &lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_TV_on notify TVFB:on set TV on&amp;lt;/code&amp;gt;&lt;br /&gt;
hat also dann den Nachteil, dass bei versehentlich zu langem Tastendruck auf die Fernbedienung das TV nicht angeht. Da die meisten Nutzer unbewusst dazu neigen, bei Misserfolg die selbe Taste erneut aber länger zu drücken (was erneut keinen Erfolg zeigt) ist Frustration zu erwarten.&lt;br /&gt;
&lt;br /&gt;
Es kann daher speziell bei nicht dimmbaren Aktoren von Vorteil sein, auch dimmen abzufangen, z.B. durch eine zweite zusätzliche Definition:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_TV_dimup notify TVFB:dimup set TV on&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es ist in der Regel einfacher, einige dieser zusätzlichen Definitionen einzufügen, als allen Bedienern des Systems zu erklären, dass man keinesfalls länger als 0,4 Sekunden drücken darf.&lt;br /&gt;
&lt;br /&gt;
Alternativ kann man auch beide Befehle in einer Definition durch Perlbefehle {} abfangen:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_TV_on notify TVFB { if (&amp;quot;$EVENT&amp;quot; eq &amp;quot;on&amp;quot; || &amp;quot;$EVENT&amp;quot; eq &amp;quot;dimup&amp;quot;) { fhem(&amp;quot;set TV on&amp;quot;) }}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Allerdings hat dies den Nachteil, dass jedes Event dieses define durchläuft und erst später geprüft wird, ob das Event überhaupt irgendetwas auslöst. &lt;br /&gt;
Z.B. wird&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_TV_on notify TVFB ...&amp;lt;/code&amp;gt; &lt;br /&gt;
auch durch TVFB off ausgelöst (oder unter bestimmten Bedungen sogar duch alle Events), nur um dann nach dem Perl Test festzustellen, dass doch nichts getan werden soll.&lt;br /&gt;
&lt;br /&gt;
Ressourcenschonender ist daher:&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_TV_on notify TVFB:on|TVFB:dimup set TV on &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Andere Möglichkeiten vergleiche: [[Trick der Woche#notify durch mehrere Ereignisse auslösen lassen|Notify durch mehrere Ereignisse auslösen lassen]] und [[Trick der Woche#Performance_von_Notifys|Performance von Notifys]]&lt;br /&gt;
&lt;br /&gt;
== Februar 2014==&lt;br /&gt;
=== Sequence nutzen ===&lt;br /&gt;
Man kann Aktionen statt mit einem Tastedruck auch mit einer Sequenz von Tastendücken auslösen. Das Format des Befehle ist:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define &amp;lt;name&amp;gt; sequence &amp;lt;re1&amp;gt; &amp;lt;timeout1&amp;gt; &amp;lt;re2&amp;gt; [&amp;lt;timeout2&amp;gt; &amp;lt;re3&amp;gt; ...] &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
wobei &amp;lt;re1&amp;gt; ...&amp;lt;re_n&amp;gt; die Aktionen sind und &amp;lt;timeout_n&amp;gt; der maximale Abstand der Tastendrücke in Sekunden.&lt;br /&gt;
&lt;br /&gt;
Angenommen, man wolle z.B. eine Lampe dann anschalten, wenn man zuerst Taste1 EIN, dann Taste2 AUS und dann wieder Taste1 EIN einer Fernbedienung drückt, könnte das konkret so aussehen:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define MeineLampenSequenz1 sequence Btn1:on 0.5 Btn2:off 0.5 Btn1:on&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zwischen jedem der Tastendrücke darf eine halbe Sekunde Abstand sein. Diese Definition selbst löst die Lampe nicht aus, sondern definiert nur wie die Sequenz aussehen soll. Um die Lampe bei erfolgreicher Betätigung der Sequenz auch einzuschalten, bedarf es zusätzlich etwas wie:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define MeineLampe notify MeineLampenSequenz1:trigger set Lampe on&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sequence kann man gut nutzen, um mit einer Fernbedienung mehr Funktionen zu schalten als Tasten zur Verfügung stehen. Ebenso könnte man damit simple Codeschlösser für Alarmanlagen bauen, z.B. um eine Anlage auszuschalten, wenn eine bestimmte Abfolge von Tasten gedrückt wird.&lt;br /&gt;
&lt;br /&gt;
Je nach Funksystem nimmt die Zuverlässigkeit aber rasch ab. Angenommen im Bereich FS20 (das System ist etwas unzuverlässiger ist als z.B. HomeMatic) seien 95% aller Funktsignale ungestört übertragbar, dann würden in der Praxis von 100 Tastendrücken an einer Fernbedienung 95x Erfolg zeigen und 5x fehlschlagen; das ist sicher tolerabel. &lt;br /&gt;
&lt;br /&gt;
Bei einer Sequenzlänge von nur 4 Tasten würde die kombinierte Erfolgsquote der Sequenz jedoch nur noch ca. 80% sein, zum Ausschalten einer Alarmanlage vermutlich bereits unpraktisch.&lt;br /&gt;
&lt;br /&gt;
== Januar 2014==&lt;br /&gt;
===isday===&lt;br /&gt;
Bekanntlich kann man  mit &amp;quot;isday&amp;quot; leicht testen ob es draussen hell ist oder nicht. isday ist eine Funktion des (automatisch geladenen) Moduls [[SUNRISE_EL]], das auch sunset und sunrise enthält.&lt;br /&gt;
&lt;br /&gt;
Problematisch bei isday ist die fehlende Möglichkeit, Sonnenaufgang und Untergang einzustellen (zumindest wenn man nicht 99_SUNRISE_EL.pm verändern will): isday ist wahr, wenn die Sonne im gegebenen Breitengrad theoretisch sichtbar ist. Wenn örtliche Gegebenheiten (Bebauung, Bäume, Tal etc.) eine Anpassung erfordern, kann man sich auch ein eigenes isday basteln, in dem man sunrise und sunset verwendet und dieses mit getrennten offsets versieht.&lt;br /&gt;
&lt;br /&gt;
Zuerst definiert man sich eine Variable (&amp;quot;dummy&amp;quot;) der anstelle isday eingesetzt werden soll, z.B.:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define Tageslicht dummy &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann wird diese mit sunset und sunrise befüllt:&lt;br /&gt;
&lt;br /&gt;
 define SetDummy1 at *{sunset(-3600)} set Tageslicht hell &lt;br /&gt;
 define SetDummy2 at *{sunrise(+1800)} set Tageslicht dunkel &lt;br /&gt;
&lt;br /&gt;
Jetzt kann für jeden Wechsel ein eigener Offset gewählt werden, im Beispiel 3600 Sekunden vor Sonnenuntergang und 1800 Sekunden nach Sonnenaufgang. Anstatt das Dummy &amp;quot;Tageslicht&amp;quot; mit den Werten &amp;quot;hell/dunkel&amp;quot; zu befüllen, kann natürlich auch 1/0 oder &amp;quot;Tag/Nacht&amp;quot; etc. verwendet werden, je nachdem was bei der Anwendung besser passt.&lt;br /&gt;
&lt;br /&gt;
Für höhere Ansprüche könnte hingegen das [[Twilight]]-Modul verwendet werden, das Dämmerungsstufen kennt.&lt;br /&gt;
&lt;br /&gt;
===Struktur von &amp;quot;else if&amp;quot; Verzweigungen===&lt;br /&gt;
 define ... notify ... {\&lt;br /&gt;
  if ... {\&lt;br /&gt;
   fhem (&amp;quot;... ;; ...&amp;quot;)\&lt;br /&gt;
  }\&lt;br /&gt;
  elsif ... {\&lt;br /&gt;
    fhem (&amp;quot;... ;; ...&amp;quot;)\&lt;br /&gt;
  }\&lt;br /&gt;
  elsif ... {\&lt;br /&gt;
    fhem (&amp;quot;... ;; ...&amp;quot;)\&lt;br /&gt;
  }\&lt;br /&gt;
  else {\&lt;br /&gt;
   if ... {\&lt;br /&gt;
    fhem (&amp;quot;... ;; ...&amp;quot;)\&lt;br /&gt;
  }\&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Achtung: es muss tatsächlich &amp;quot;elsif&amp;quot; heissen und nicht &amp;quot;elseif&amp;quot; oder &amp;quot;else if&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Gilt für Perl Aufrufe. &lt;br /&gt;
Wer aktuell in FHEM neu einsteigt, kann auch den seit 2014 zur Verfügung stehenden FHEM Befehl [[DOIF]] verwenden, der komfortabler ist und zusätzliche Features aufweist.&lt;br /&gt;
&lt;br /&gt;
== Dezember 2013==&lt;br /&gt;
===notify durch mehrere Ereignisse auslösen lassen===&lt;br /&gt;
Bekanntermassen löst&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter …&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
aus, wenn irgendein Ereignis vom Sender &amp;quot;MeinSchalter&amp;quot; eintrifft.&lt;br /&gt;
&lt;br /&gt;
Mit&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:on …&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
wird das notify jedoch nur ausgelöst, wenn dieses Ereignis eine &amp;quot;on&amp;quot; ist.&lt;br /&gt;
Wenn man aber möchte, das z.B. &amp;quot;on&amp;quot; und &amp;quot;off&amp;quot; auslöst (um etwa Dim-Befehle auszuschliessen) kann dies wie folgt erreicht werden:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:(on|off) …&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Klammern sind wichtig, vergleiche eine Lösung, bei der zwei Sender alternativ das notify auslösen können:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:on|MeinAndererSchalter:on …&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Selbstverständlich geht z.B. auch folgendes:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:on|MeinAndererSchalter …&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier wird ausgelöst wenn &amp;quot;MeinSchalter&amp;quot; das Ereignis &amp;quot;on&amp;quot; liefert oder &amp;quot;MeinAndererSchalter&amp;quot; irgendein Ereignis. Beachte hierzu jedoch den Tipp vom Dezember 2020 &amp;quot;Performance von Notifys&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Aktoren über mehrere Funkschnittstellen ansprechen ===&lt;br /&gt;
Falls man mehrere Funkschnittstellen zur Reichweitenverlängerung hat (CUL / CUNO etc), und ein Aktor von beiden Funkschnittstellen in etwa gleich (schlecht) erreichbar ist, mag der Wunsch aufkommen, einen Funkbefehl über beide Schnittstellen auszusenden. Dies ist bei Funkprotokollen möglich, die kein echtes Pairing der Aktoren an die Funkschnittstelle erfordern, also z.B. FS20 oder Intertechno, nicht jedoch ohne weiteres bei HomeMatic.&lt;br /&gt;
&lt;br /&gt;
Problematisch ist aber, dass die Funkschnittstelle über IODev eindeutige je Aktor festgelegt werden muss, eine Zuordnung mehrerer IODevs ist nicht vorgesehen.&lt;br /&gt;
(wenn man IODev nicht setzt, wird per default die LETZTE definiert passende Schnittstelle verwendet)&lt;br /&gt;
&lt;br /&gt;
Dieses Problem kann mit einem Trick aber umgangen werden. Und zwar legt man den Aktor 2x mit gleicher Adresse aber abweichenden Namen und IOdevs an, z.B. so:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 define brenner_CUL1 FS20 11114244 11&lt;br /&gt;
 attr brenner_CUL1 IODev CUL1&lt;br /&gt;
 attr brenner_CUL1 room Keller&lt;br /&gt;
&lt;br /&gt;
 define brenner_CUL2 FS20 11114244 11&lt;br /&gt;
 attr brenner_CUL2 IODev CUL2&lt;br /&gt;
 attr brenner_CUL2 room Keller&lt;br /&gt;
&lt;br /&gt;
Ein Befehl der Art:&lt;br /&gt;
&lt;br /&gt;
 set brenner_CUL1,brenner_CUL2 on&lt;br /&gt;
&lt;br /&gt;
sendet den ON Befehl für den FS20 Aktor 11114244 11  jetzt tatsächlich über beide CULs aus!&lt;br /&gt;
&lt;br /&gt;
Achtung: Wenn die Schnittstellen gleichschnell angebunden sind, sollte vermutlich der [[Sendpool]] verwendet werden, da die Aussendungen sonst tatsächlich gleichzeitig erfolgen könnten und sich dann gegenseitig stören würden. Dieser Trick funktioniert ausserdem nur bei Befehlen, bei denen es im Zweifel egal ist, wenn sie beim Aktor 2x eintreffen. &lt;br /&gt;
&lt;br /&gt;
Bei HomeMatic lässt sich ein ähnlicher Effekt durch einrichten einer [[Virtueller Controller VCCU|virtuellen CCU]] erreichen.&lt;br /&gt;
&lt;br /&gt;
=== Retrycount bei FHTs ist überflüssig===&lt;br /&gt;
Das von der Funktion &#039;&#039;autocreate&#039;&#039; älterer FHEM Versionen beim Anlegen von FHT80 Heizungsreglern voreingetragene attribute &amp;quot;retrycount&amp;quot; hat in den allermeisten Fällen keine Wirkung, da es NUR greift, wenn man als Funkschnittstelle eine FHZ1X00PC verwendet und dann den Softbuffer einschaltet. Selbst wenn man diese Konfiguration nutzt, will gut überlegt werden, ob die Wirkung postiv ist: Bei ungenügender Empfangslage vergrössert es Kommunikationsprobleme eventuell sogar.&lt;br /&gt;
&lt;br /&gt;
Es kann also in der Regel entfernt oder auf den Wert &amp;quot;1&amp;quot; gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
 define Heizung_Bad FHT 060d&lt;br /&gt;
 attr Heizung_Bad retrycount 3       &amp;lt;=== Diese Zeile entfernen&lt;br /&gt;
&lt;br /&gt;
Siehe auch:[[Kommunikationsprobleme mit FHT]]&lt;br /&gt;
&lt;br /&gt;
== November 2013 ==&lt;br /&gt;
=== FS20 Funksteckdose sicherer schalten===&lt;br /&gt;
Seltsamerweise kommt es vor, das FS20 Aktoren - insbesondere die FS20 Funksteckdose - an der Grenze der Funkreichweite bestimmte Befehle eines Typs empfängt, andere aber nicht. Z.B. lässt sich die FS20 Steckdose zwar immer einschalten, aber oft nicht mehr aus (oder umgekehrt).&lt;br /&gt;
&lt;br /&gt;
Gelegentlich kann man die Zuverlässigkeit erhöhen, indem man statt dem nicht funktionierenden Befehl das Gegenteil mit &amp;quot;for-timer 1&amp;quot; verwendet.&lt;br /&gt;
&lt;br /&gt;
Im Fall, dass eine FS20 Steckdose sich also einwandfrei EINschalten lässt:&lt;br /&gt;
:&amp;lt;code&amp;gt;set SteckdoseA on&amp;lt;/code&amp;gt;&lt;br /&gt;
aber oft ein AUSschalten mittels&lt;br /&gt;
:&amp;lt;code&amp;gt;set SteckdoseA off&amp;lt;/code&amp;gt;&lt;br /&gt;
nicht funktioniert, kann man versuchen die Dose anstelle mit &amp;quot;off&amp;quot; mit dem Befehl&lt;br /&gt;
:&amp;lt;code&amp;gt;set SteckdoseA on-for-timer 1&amp;lt;/code&amp;gt;&lt;br /&gt;
auszuschalten.&lt;br /&gt;
&lt;br /&gt;
Analog kann man mit off-for-timer arbeiten, wenn sich Aktoren nicht einschalten lassen, ausschalten aber geht.&lt;br /&gt;
&lt;br /&gt;
Achtung: Dieser Trick funtioniert ausdrücklich nur, wenn der &amp;quot;on/off-for-timer&amp;quot; Befehl im Aktor selber abgebildet wird. Daher ist der Trick vermutlich nicht auf andere Funksysteme übertragbar. z.B. unterstützt HM nur on-for-timer und Intertechno kennt keinen Timer.&lt;br /&gt;
&lt;br /&gt;
=== Mehrere Geräte zugleich schalten===&lt;br /&gt;
Ein Ereignis soll mehrere Geräte schalten:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_Bewegungsmelder notify Bewegungsmelder set Lampe1 on;;set Lampe2 on;;set FunksteckdoseA on&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aus Übersichtlichkeitsgründen können vor und nach den Semikolons auch Leerzeichen eingefügt werden (obwohl in einigen Dokumentation behauptet wird, dies dürfe man nicht machen):&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_Bewegungsmelder notify Bewegungsmelder set Lampe1 on ;; set Lampe2 on ;; set FunksteckdoseA on&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn der Schaltbefehl bei allen Geräten gleich ist, kann man wie folgt zusammenfassen:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_Bewegungsmelder notify Bewegungsmelder set Lampe1,Lampe2,FunksteckdoseA on&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Komma wird nicht [[Escapen in Perlbefehlen|escaped]] (verdoppelt), hier darf tatsächlich KEIN Leerzeichen vor oder nach dem Komma eingefügt werden.&lt;br /&gt;
&lt;br /&gt;
=== Logfileinträge unterdrücken===&lt;br /&gt;
Das Attribute &amp;quot;verbose 0&amp;quot; verhindert, dass das Gerät Logfileinträge erzeugt.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 define Funksteckdose FS20 22224222 01&lt;br /&gt;
 attr Funksteckdose verbose 0&lt;br /&gt;
&lt;br /&gt;
===FHT Lazy Mode benutzen===&lt;br /&gt;
Es gibt wenig Gründe, den FHT &amp;quot;Lazy Mode&amp;quot; nicht zu verwenden&lt;br /&gt;
 define Heizung_Bad FHT 060d&lt;br /&gt;
 attr Heizung_Bad lazy&lt;br /&gt;
&lt;br /&gt;
Dieser sorgt dafür, dass Temperaturänderungen (genau genommen alle Änderungen, auch z.B. date) nur übertragen werden, wenn sie nicht sowieso schon am FHT eingestellt sind und veringern die Funklast dadurch deutlich. &lt;br /&gt;
&lt;br /&gt;
Siehe auch: [[Kommunikationsprobleme mit FHT]]&lt;br /&gt;
&lt;br /&gt;
== Oktober 2013 ==&lt;br /&gt;
=== Zuverlässigkeit von Wiedereinschalten erhöhen ===&lt;br /&gt;
Speziell bei FS20 Aktoren ist wegen des fehlenden Rückkanals nicht leicht erkennbar, ob ein Einschaltbefehl Wirkung gezeigt hat. Das bringt einen ganz schlechten WAF, wenn man z.B. mit einem FS20 Aktor eine Heizung ausschaltet und das Wiedereinschalten nach z.B. einer Stunde nicht klappt.&lt;br /&gt;
&lt;br /&gt;
Hier empfiehlt es sich, das Ausschalten mittels &lt;br /&gt;
:&amp;lt;code&amp;gt;set Heizungs_schalter off-for-timer 3584&amp;lt;/code&amp;gt;   (= fast eine Stunde)&lt;br /&gt;
zu erledigen. Da bei FS20 der off-for-timer Befehl im Aktor abgewickelt wird (und nicht durch FHEM), schaltet sich der Aktor auch dann garantiert wieder ein, wenn FHEM abstürzt, eine Funkstörung vorliegt oder ähnliches.  Bei Bedarf kann der Befehl off-for-timer zur  Verlängerung der Ausschaltzeit wiederholt werden. Dies kann z.B. nötig sein, wenn die Ausschaltung länger als 4,5 Stunden (15360 Sekunden, der Maximalwert des Timers) dauern soll.&lt;br /&gt;
&lt;br /&gt;
Achtung: dieser Trick funktioniert nur, wenn der Aktor &amp;quot;off-for-timer&amp;quot; selbst beherrscht. FS20 Geräte können das, HomeMatic können aber nur &amp;quot;on-for-timer&amp;quot;. Man kann off-for-timer mit HomeMatic trotzdem verwenden, aber in diesem Fall sendet FHEM den Einschaltbefehl nach der Timerzeit. InterTechno, RSL etc, können gar keinen Timer, hier sendet FHEM immer 2 Befehle im passenden Abstand.&lt;br /&gt;
&lt;br /&gt;
=== FS20 Timerzeiten ===&lt;br /&gt;
FS20 Timer werden in Sekunden angegeben. Es sind jedoch nicht alle Werte einstellbar. Da der Timer Wert in 7 Bit übertragen werden muss, sind nur 128 Werte möglich. Um mit diesen Werten im unteren Bereich möglichst fein aufzulösen, andererseits aber auch lange Zeiten zu ermöglichen, ist die Verteilung nicht linear. Einstellbar sind folgende Zeiten in Sekunden;&lt;br /&gt;
&lt;br /&gt;
0,25  0,5  0,75  1  1,25  1,5  1,75  2  2,25  2,5  2,75  3  3,25  3,5  3,75   &lt;br /&gt;
4  4,5  5  5,5  6  6,5  7  7,5  8  9  10  11  12  13  14  15  16  18  20  22   &lt;br /&gt;
24  26  28  30  32  36  40  44  48  52  56  60  64  72  80  88  96  104  112   &lt;br /&gt;
120  128  144  160  176  192  208  224  240  256  288  320  352  384  416   &lt;br /&gt;
448  480  512  576  640  704  768  832  896  960  1024  1152  1280  1408   &lt;br /&gt;
1536  1664  1792  1920  2048  2304  2560  2816  3072  3328  3584  3840  4096   &lt;br /&gt;
4608  5120  5632  6144  6656  7168  7680  8192  9216  10240  11264  12288   &lt;br /&gt;
13312  14336  15360 &lt;br /&gt;
(etwas übersichtlicher formatiert auch [[FS20 Allgemein#ON/OFF Befehle mit Time Parameter|hier]]).&lt;br /&gt;
 &lt;br /&gt;
Andere Zeiten werden von FHEM gerundet. Ein neues Setzen des Timer für FS20 löscht den alten Wert.&lt;br /&gt;
&lt;br /&gt;
Auch HomeMatic Aktoren beherrschen Time Parameter, im Gegensatz zu FS20 allerdings kein &amp;quot;off-for-timer&amp;quot;. Details dazu im Artikel [[HomeMatic Timerwerte]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Soulman</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Virtueller_Controller_VCCU&amp;diff=40681</id>
		<title>Virtueller Controller VCCU</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Virtueller_Controller_VCCU&amp;diff=40681"/>
		<updated>2026-01-07T22:17:35Z</updated>

		<summary type="html">&lt;p&gt;Soulman: /* Einrichten */ etwas gestrafft&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Randnotiz|RNTyp=r|RNText=Bitte beachten Sie: Eine VCCU innerhalb FHEM ist nicht zu verwechseln mit einer virtualisierten CCU3! Für letztere gibt es eine eigene Modulfalmilie [[HMCCU]], hier geht es ausschließlich um Geräte des TYPE CUL_HM.}}Eine &#039;&#039;&#039;Virtuelle CCU&#039;&#039;&#039;, auch &#039;&#039;&#039;VCCU&#039;&#039;&#039; genannt, ist eine Zentrale für [[HomeMatic]]-Geräte. Die VCCU tritt beim [[Pairing (HomeMatic)|Pairing]] an die Stelle des &#039;&#039;I/O-Devices&#039;&#039; (auch &amp;quot;Schnittstelle&amp;quot; genannt, zum Beispiel [[CUL]] und [[HM-CFG-LAN]]).&lt;br /&gt;
&lt;br /&gt;
HomeMatic-Geräte werden üblicherweise mit einer Zentrale gepaired, um sie zentral verwalten zu können. Der Pairing-Partner ist im einfachsten Fall das I/O-Device ([[CUL]], [[HM-CFG-LAN]], …) selbst. Nachteilig dabei ist, dass der Ausfall der Schnittstelle bewirkt, dass alle gepairten Geräte nicht mehr bedient werden können. Dies lässt sich im Gegensatz zu ungepairten Protokollen (z.b. FS20) auch nicht durch doppelte Definition mit abweichenden IO-Devices lösen, da das Pairing nur mit einer &#039;&#039;hmId&#039;&#039; erfolgen kann. Daher kann auch durch mehrere Schnittstellen / IOs keine Redundanz erreicht werden. Ähnliches gilt für eine Vergrößerung der Funkabdeckung durch mehrere Schnittstellen. &lt;br /&gt;
&lt;br /&gt;
Dieses Problem kann durch eine VCCU gelöst werden. Die VCCU ist eine virtuelle Zentrale; sie tritt beim Pairing an die Stelle der Schnittstelle. Sie erhält eine eigene &#039;&#039;hmId&#039;&#039;, mit der die HM Sensoren und Geräte gepaired werden. Die Funkschnittstelle(n) werden dann von der VCCU als reine &amp;quot;dumme&amp;quot; IOs verwaltet. Dieses bietet vielfältige Möglichkeiten, z.B. die Verwendung mehrerer IOs, aus denen die VCCU die &amp;quot;beste&amp;quot; nach diversen Kriterien (z.B. RSSI) auswählt. Dadurch kann sowohl die Redundanz als auch die Funkabdeckung erhöht werden.&lt;br /&gt;
&lt;br /&gt;
Durch das Pairen der Geräte mit einer virtuellen CCU ergeben sich folgende Vorteile:&lt;br /&gt;
&lt;br /&gt;
* Die Verwendung mehrerer I/O-Devices wird möglich. Das sorgt für Redundanz (Ausfallsicherheit) und/oder Reichweiten-Vergrößerung.&lt;br /&gt;
* Der Tausch eines I/O-Devices ist transparent für gepairte Geräte.&lt;br /&gt;
* Die VCCU stellt virtuelle Kanäle zur Verfügung, mit denen HomeMatic-Geräte [[HomeMatic Peering Beispiele|gepeert]] werden können.&lt;br /&gt;
* &amp;quot;Geordnete&amp;quot; Termination von Nachrichten (da die üblichen Funkschnittstellen (wie CUL im HM-Mode oder HM-LAN-Konfigurator) relativ &amp;quot;dumm&amp;quot; sind, führen viele Zustände zu den bekannten &amp;quot;Help me&amp;quot; Einträgen im Log)&lt;br /&gt;
&lt;br /&gt;
Der einzige Nachteil einer VCCU gegenüber dem direkten Pairing mit dem I/O-Device ist ein Mehraufwand bei der initialen Konfiguration vom FHEM.&lt;br /&gt;
&lt;br /&gt;
== Kurzbeschreibung ==&lt;br /&gt;
Ein virtueller Controller &#039;&#039;&#039;VCCU&#039;&#039;&#039; ist der Protokoll-Endpunkt der Zentrale und ersetzt dabei logisch (jedoch nicht physikalisch) z.b. den [[HM-CFG-LAN LAN Konfigurations-Adapter]] einer &amp;quot;klassischen&amp;quot; FHEM Konfiguration&lt;br /&gt;
&lt;br /&gt;
Es können einer VCCU einzelne oder mehrere IO Devices zugeordnet werden. Man bündelt dadurch mehrere I/O Devices (z.B. CULs und HM-CFG-LANs) zu einem &#039;&#039;Pool&#039;&#039;. Den HM-Devices in FHEM (Aktoren, Sensoren) kann dann als I/O Device die &#039;&#039;VCCU&#039;&#039; zugeordnet werden, dies geschieht durch das Attribut &#039;&#039;IOgrp.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Durch diese Gruppierung der I/O Devices und dem Zuordnen der VCCU zu einem Device entstehen verschieden Vorteile, abhängig des Einsatzes der VCCU. So kann ein beliebiges I/O Device im Device Pool der VCCU ausfallen und das oder die verbliebenden I/O Devices übernehmen diese Funktion (abhängig von der Funkreichweite/Erreichbarkeit). Die VCCU wird das nächst verfügbare I/O Device zum Senden/Empfangen verwenden.&lt;br /&gt;
&lt;br /&gt;
Ein weiterer Vorteil ist, dass durch die VCCU auch das I/O Device genutzt werden kann, welches die beste Funkqualität aufweist. Dies kann z.B. bei beweglichen Sensoren/Aktoren (Fernbedienungen) sinnvoll sein, oder wenn die Funkqualität durch andere Faktoren beeinflusst wird (z.B. Tür/Tor oder andere &amp;quot;bewegliche&amp;quot; Störfaktoren)&lt;br /&gt;
&lt;br /&gt;
== Mehrere VCCUs in einer Installation==&lt;br /&gt;
Theoretisch erlaubt FHEM die parallele Nutzung mehrerer VCCUs, praktisch ergeben sich dadurch jedoch keine Vorteile gegenüber einer einzigen VCCU. Insbesondere kann bereits eine VCCU verschiedene I/O-Devices bedienen, zum Beispiel einen [[CUL]] &#039;&#039;und&#039;&#039; ein [[HM-CFG-LAN]].&lt;br /&gt;
&lt;br /&gt;
Jede VCCUs muss eine eindeutige &#039;&#039;HomeMatic-ID&#039;&#039; haben, mit der HomeMatic-Geräte gepaired werden. Folglich kann jedes HomeMatic-Gerät nur mit &#039;&#039;einer&#039;&#039; VCCU gepaired werden.&lt;br /&gt;
&lt;br /&gt;
Die VCCU überschreibt die hmid eines  I/O Device mit seiner eignen, daher können nicht mehrere VCCUs dasselbe I/O Device verwenden.&lt;br /&gt;
&lt;br /&gt;
== Definition der VCCU==&lt;br /&gt;
=== hmId wählen ===&lt;br /&gt;
Eine VCCU benötigt wie alle HM Devices eine Adresse, mit der sie angesprochen wird. Bei Schnittstellen und Zentralen ist dies eine &#039;&#039;hmId&#039;&#039;. Da die VCCU eine (virtuelle) Zentrale ist, muss sie auch mit einer &#039;&#039;hmId&#039;&#039; versehen werden. Dies geschieht per define analog zur Anlage einer physischen Schnittstelle (siehe weiter unten)&lt;br /&gt;
&lt;br /&gt;
Eine VCCU gibt die &#039;&#039;hmId&#039;&#039; an die ihr zugewiesenen IOs (Funkschnittstellen) weiter. Damit haben alle von einer VCCU genutzten I/Os nach der Zuweisung dieselbe &#039;&#039;hmId&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* Definiert man eine VCCU nachdem IOs für HomeMatic angelegt und in Verwendung sind, sollte man die &#039;&#039;hmId&#039;&#039; der bereits vorhandenen Funkschnittstelle verwenden, hierdurch kann man sich das Neupairen der HM Devices ersparen. &lt;br /&gt;
* Hat man bereits mehrere Funkschnittstellen im Einsatz, werden diese unterschiedliche &#039;&#039;hmIds&#039;&#039; haben, zumindest eine Schnittstelle wird nach der Zuweisung zur VCCU seine &#039;&#039;hmId&#039;&#039; also ändern. &lt;br /&gt;
* Für mit dieser Schnittstelle schon gepairte Devices ist ein Neupairen unumgänglich.&lt;br /&gt;
&lt;br /&gt;
Außerdem muss in jedem Fall das attr IOgrp eines vor Anlage der VCCU gepairten Gerätes auf die VCCU angelegt/geändert werden., z.B. so&lt;br /&gt;
 attr &amp;lt;device&amp;gt; IOgrp &amp;lt;Name der vccu&amp;gt;&lt;br /&gt;
(Siehe weiter unten ein Tipp, wie dies leicht nachträglich erledigt werden kann)&lt;br /&gt;
&lt;br /&gt;
Mit der Anlage einer VCCU hat der Inhalt des vorhandenen Attributes IODev eines HM_Devices keine Wirkung mehr. Statt dessen setzt die VCCU ein Internal IODev automatisch je nach Verfügbarkeit und Funklage. Das Attribut IODev ist dann nicht mehr notwendig und kann auch nicht mehr gesetzt werden, wenn IOgrp gesetzt ist.  &lt;br /&gt;
&lt;br /&gt;
=== Einrichten ===&lt;br /&gt;
{{Randnotiz|RNTyp=g|RNText=Achtung, die Reihenfolge der Befehle muss exakt eingehalten werden.CUL_HM ist leider nicht Raw Definition fähig!}}&lt;br /&gt;
Diese Befehlsfolge erzeugt eine VCCU, bitte die Reihenfolge genau so abarbeiten!&lt;br /&gt;
Die Werte in &amp;lt;&amp;gt; durch die echten Werte ersetzen und die &amp;lt;&amp;gt; weglassen!&lt;br /&gt;
&lt;br /&gt;
Das Attribut &#039;&#039;IOList&#039;&#039; dient dazu festzulegen, welche physikalischen Schnittstellen (&amp;quot;IO&amp;quot;) von der VCCU genutzt werden, dies sind in der Regel &#039;&#039;&#039;alle&#039;&#039;&#039; HM-fähigen Schnittstellen einer Installation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;IOList&#039;&#039; beinhaltet die Komma-getrennte Liste der IOs (&#039;&#039;&#039;keine Leerzeichen&#039;&#039;&#039;!), so wie sie in FHEM angelegt sind.&amp;lt;pre&amp;gt;&lt;br /&gt;
define &amp;lt;Name der vccu&amp;gt; CUL_HM &amp;lt;hmId&amp;gt;&lt;br /&gt;
attr &amp;lt;Name der vccu&amp;gt; model CCU-FHEM&lt;br /&gt;
attr &amp;lt;Name der vccu&amp;gt; IOList &amp;lt;Name des io1&amp;gt;[,&amp;lt;Name des io2&amp;gt;,...]&lt;br /&gt;
attr &amp;lt;Name der vccu&amp;gt; IOgrp &amp;lt;Name der vccu&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die folgende Darstellung mit zwei IOs im Raw Definition Format dient nur als Beispiel:&lt;br /&gt;
&lt;br /&gt;
Es seien z.B. in FHEM bereits die beiden Schnittstellen HMLAN0 und CUL0 angelegt:&lt;br /&gt;
&lt;br /&gt;
 define HMLAN0 HMLAN 192.168.168.2:1000&lt;br /&gt;
 attr HMLAN0 hmId 123456&lt;br /&gt;
 attr HMLAN0 hmLanQlen 1_min&lt;br /&gt;
 attr HMLAN0 icon hm_lan&lt;br /&gt;
&lt;br /&gt;
 define CUL0 CUL /dev/ttyACM0@9600 0000&lt;br /&gt;
 attr CUL0 hmId 123456&lt;br /&gt;
 attr CUL0 icon cul_cul&lt;br /&gt;
 attr CUL0 rfmode HomeMatic&lt;br /&gt;
&lt;br /&gt;
Dann kann zusätzlich die VCCU mit derselben hmId angelegt werden und die beiden physikalischen Schnittstellen ihr zugewiesen:&lt;br /&gt;
&lt;br /&gt;
 define VCCU CUL_HM 123456&lt;br /&gt;
 attr VCCU IOList CUL0,HMLAN0&lt;br /&gt;
 attr VCCU IOgrp VCCU&lt;br /&gt;
 attr VCCU model CCU-FHEM&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wird die VCCU mit einer von vorhandenen Schnittstellen abweichenden &#039;&#039;hmId&#039;&#039; angelegt, so wird die &#039;&#039;hmId&#039;&#039; der ihr zugewiesenen Schnittstelle(n) automatisch angepasst. Dies hat in der Regel zur Folge, dass HM Devices neu gepairt werden müssen.&lt;br /&gt;
&lt;br /&gt;
Dies trifft auch zu, wenn bereits vorhandene Schnittstellen unterschiedliche hmIDs haben, dann wird sich die hmID mindestens einer Schnittstelle ändern. (Der Einfachheit halber war im obigen Beispiel angenommen, dass auch vorher die beiden Schnittstellen bereits die gleiche ID hatten.)&lt;br /&gt;
&lt;br /&gt;
=== Auswirkungen auf IOs / Funkschnittstellen===&lt;br /&gt;
Sind IOs durch das Attribut IOList einer VCCU zugewiesen und werden die notwendigen Attribute im IO gesetzt, so wird die hmId durch die VCCU kontrolliert. Ein HMLAN/USB ist etwas enger verbunden als CUL IOs. Beim HMLAN kann die HMId nicht mehr geändert werden. Die kontrollierende VCCU wird in den Internals &#039;&#039;owner&#039;&#039; und &#039;&#039;owner_CCU&#039;&#039; des IO automatisch eingetragen. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Was passiert beim Austausch/Wegfall von IOs ===&lt;br /&gt;
Häufig wird das Thema VCCU erst angefasst, wenn das System schon eine Weile besteht und ein zweiter IO eingebaut, oder der alte IO ausgetauscht werden soll. Dabei entsteht folgende ungünstige Struktur in der fhem.cfg&lt;br /&gt;
 ...&lt;br /&gt;
 define erster IO&lt;br /&gt;
 ...&lt;br /&gt;
 define alle möglichen HM Geräte&lt;br /&gt;
 ...&lt;br /&gt;
 define VCCU&lt;br /&gt;
 define neuer IO&lt;br /&gt;
Beim Start von FHEM wird die cfg Zeilenweise abgearbeitet und für jedes HM Gerät geprüft ob ein IO vorhanden ist, gegebenenfalls erfolgt ein Fehlereintrag im Log (unknown IODev specified). Wenn der neue IO erst am Ende der cfg definiert ist, ist er für alle davor liegenden HM Geräte nicht vorhanden. Das ist nur ein Schönheitsfehler beim Start von FHEM, im laufenden Betrieb spielt das keine Rolle.&lt;br /&gt;
&lt;br /&gt;
Folgende Struktur wäre erstrebenswert&lt;br /&gt;
 ...&lt;br /&gt;
 define Homematic IO 1&lt;br /&gt;
 define Homematic IO 2&lt;br /&gt;
 define VCCU&lt;br /&gt;
 define HM Geräte &lt;br /&gt;
 ...&lt;br /&gt;
Solange kein Modul die Einträge in der fhem.cfg entsprechend einsortiert, muss diese Korrektur von Hand erfolgen. Dies ist einer der wenigen Fälle, wo direktes Editieren der fhem.cfg z.B. mit dem eingebautem Editor unumgänglich ist. Soll der im Standard-WEBinterface von FHEM eingebaute Editor verwendet werden, muss zuerst das Attribut&lt;br /&gt;
 attr WEB editConfig 1&lt;br /&gt;
in FHEM gesetzt werden.&lt;br /&gt;
Anschließend die kompletten define Blöcke mit allem was dazu gehört entsprechend in die empfohlene Struktur bringen. &lt;br /&gt;
Datei sichern und rereadcfg eingeben.&lt;br /&gt;
&lt;br /&gt;
=== Pairen von HM Devices===&lt;br /&gt;
Ein erneutes Pairen nach dem Anlegen einer VCCU in bestehenden Installationen ist nicht notwendig!&lt;br /&gt;
 &lt;br /&gt;
Neue HM Devices sollten vorzugsweise direkt mit der VCCU gepairt werden, hierzu werden die normalen Befehle&lt;br /&gt;
  hmPairForSec&lt;br /&gt;
also z.b. &lt;br /&gt;
  set VCCU hmPairForSec 600&lt;br /&gt;
oder&lt;br /&gt;
  hmPairSerial&lt;br /&gt;
verwendet. &lt;br /&gt;
&lt;br /&gt;
Es ist alternativ weiter möglich - auch nach Anlage einer VCCU - HM Devices mit diesen Kommandos direkt an ein IO zu pairen, d.h. diese Kommandos haben auch nach Anlage einer VCCU noch eine Funktion an der physikalischen Schnittstelle (im Gegensatz z.b. zum attr IODev).&lt;br /&gt;
&lt;br /&gt;
Da die VCCU und alle IOs die selbe &#039;&#039;hmId&#039;&#039; teilen, hat diese &#039;&#039;&#039;nicht&#039;&#039;&#039; die Wirkung, dass das Geräte etwa nicht mit der VCCU, sondern nur mit dem gepairten IO angesprochen werden kann.&lt;br /&gt;
&lt;br /&gt;
Ist der Pairvorgang nicht sofort (oder nur teilweise) erfolgreich, kann/muss er ohne Weiteres 2 bis 3 mal wiederholt werden. Dann sollte das Gerät erfolgreich gepairt sein. Mit hmInfo configCheck kann das einfach überprüft werden. Mitunter kann es auch sinnvoll sein, das Gerät in den Auslieferungszustand zu bringen (siehe Handbuch, oft Knopf mindestens 5 Sekunden drücken, bis es blinkt, dann loslassen und nochmals 5 Sekunden drücken, bis es schneller blinkt) und danach erneut zu pairen.&lt;br /&gt;
&lt;br /&gt;
==== Autocreate ====&lt;br /&gt;
Sofern Autocreate eingeschaltet ist und das Pairing wie oben beschrieben an die VCCU erfolgt, wird unter anderem für das Device folgendes Attribut angelegt:&lt;br /&gt;
&lt;br /&gt;
 attr &amp;lt;device&amp;gt; IOgrp VCCU:&amp;lt;PhysischesIO&amp;gt;&lt;br /&gt;
&lt;br /&gt;
z.B.&lt;br /&gt;
&lt;br /&gt;
 attr Thermostat_Bad IOgrp VCCU:HMLAN1&lt;br /&gt;
&lt;br /&gt;
Das attr &amp;lt;device&amp;gt; IOgrp:... zeigt an, welches physikalische IO zum Zeitpunkt des Autocreates verwendet wurde, vermutlich ist das das IO mit der besseren Funklage (wenn mehrere existieren). Dasselbe IO wird mit&lt;br /&gt;
 IOgrp VCCU:HMLAN1&lt;br /&gt;
auch als prefered eingetragen. D.h. die VCCU wird später zuerst prüfen ob HMLAN1 verfügbar ist (condition=ok) und es dann verwenden, andere IOs werden nur verwendet, wenn HMLAN1 nicht verfügbar ist.&lt;br /&gt;
Dieser Eintrag kann manuell geändert werden, Details im folgenden Abschnitt.&lt;br /&gt;
&lt;br /&gt;
== Dynamisches IO ==&lt;br /&gt;
Ohne VCCU sendet das System Befehle an ein HM Device in der Regel immer über das gleiche IO-Device. Fällt es aus, wird nicht mehr gesendet, selbst wenn ein zweites IO verfügbar wäre. Außerdem kann eine &#039;&#039;bewegliche&#039;&#039; Fernbedienung ihre Verbindung zu einem IO verlieren, obwohl sie über ein anderes IO gut kommunizieren könnten.&lt;br /&gt;
&lt;br /&gt;
Die VCCU adressiert beide Probleme:&lt;br /&gt;
&lt;br /&gt;
Durch das Attibut IOgrp  &lt;br /&gt;
 attr &amp;lt;device&amp;gt; IOgrp &amp;lt;vccu&amp;gt;:&amp;lt;preferredIO&amp;gt;&lt;br /&gt;
kann bestimmt werden, wie die VCCU die IO Devices genau nutzt. Insbesondere ist optional ein Preferd IO Device definierbar: bei stationären Devices - der häufigste Fall - sollte man das beste IO auswählen und als Default nutzen. Ein weiteres IO wird bei Ausfall des Ersten genutzt.&lt;br /&gt;
&lt;br /&gt;
Das preferredIO ist jedoch optional und kann insbesondere bei beweglichen HM Devices (Fernbedienungen) weggelassen werden.&lt;br /&gt;
&lt;br /&gt;
Es können auch mehrere preferredIO definiert werden, diese werden in der definierten Reihenfolge genutzt&lt;br /&gt;
 attr &amp;lt;device&amp;gt; IOgrp &amp;lt;vccu&amp;gt;:&amp;lt;prefIO1&amp;gt;,&amp;lt;prefIO2&amp;gt;,&amp;lt;prefIO3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
Durch&lt;br /&gt;
 attr &amp;lt;device&amp;gt; IOgrp VCCU:HMLAN1&lt;br /&gt;
wird die VCCU zuerst versuchen Befehle an &amp;lt;device&amp;gt; mit HMLAN1 zu senden, falls seine condition=ok. &lt;br /&gt;
Falls nicht wird (einer) der verbleibende(n) IOs verwendet, hier der mit dem besten RSSI.&lt;br /&gt;
&lt;br /&gt;
Durch&lt;br /&gt;
 attr &amp;lt;device&amp;gt; IOgrp VCCU&lt;br /&gt;
wird durch die VCCU der IO mit dem besten RSSI zum Device gewählt, falls seine condition=ok ist. &lt;br /&gt;
&lt;br /&gt;
Da dies für jedes angelegte HM Device einzeln definiert werden kann/muss, kann so auch eine Verteilung des Funkverkehrs vorgenommen werden, z.b. um die 1%-Regel (HighLoad) zu berücksichtigen, dennoch bleibt die Redundanz bei Ausfall einer Schnittstelle erhalten.&lt;br /&gt;
&lt;br /&gt;
=== Bemerkungen ===&lt;br /&gt;
Die besprochene Steuerung betrifft das &#039;&#039;&#039;Senden&#039;&#039;&#039;. Empfangen und verarbeitet werden Nachrichten immer von allen verfügbaren Quellen. Kanäle senden nicht selbständig und haben daher auch kein Attribut IOgrp.&lt;br /&gt;
&lt;br /&gt;
=== IOgrp bei nachträglicher Einrichtung einer VCCU ===&lt;br /&gt;
Wie erwähnt wird beim Verwenden von Autocreate das Attribut IOgrp mit angelegt.&lt;br /&gt;
Bei HM Devices die vor der Einrichtung einer VCCU angelegt wurden, fehlt das Attribut aber.&lt;br /&gt;
Es wird empfohlen, das Attribut IOgrp in solchen Devices zu nachträglich setzen. Kanäle senden nicht selbständig, haben daher kein Attribut IOgrp.&amp;lt;br&amp;gt;&lt;br /&gt;
Das Attribut &#039;&#039;&#039;IODev&#039;&#039;&#039; wird dann automatisch gelöscht, wenn es gesetzt war, Usereinträge haben keine Funktion.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Setzen der IOgrp auf (fast) allen Devices mit einem einzigen Befehl ====&lt;br /&gt;
In einer bestehenden FHEM-Installation mit mehreren/vielen Devices, kann das Setzen der &#039;&#039;IOgrp&#039;&#039; aufwendig sein. &lt;br /&gt;
&lt;br /&gt;
Mit folgendem Befehl werden alle Geräte mit einer 6 stelligen DEF (HEX Zahl) um das notwendige Attribut erweitert. Die DEF 000000 (ActionDetector) wird ausgespart.&lt;br /&gt;
&lt;br /&gt;
Zunächst kann man den Filter testen und damit die Auswirkung auf Geräte prüfen.&lt;br /&gt;
:&amp;lt;code&amp;gt;list TYPE=CUL_HM:FILTER=DEF=[0-9a-fA-F]{6}:FILTER=DEF!=[0]{6}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bitte nur &#039;&#039;&#039;VCCU&#039;&#039;&#039; durch den echten Namen der VCCU ersetzen!&lt;br /&gt;
:&amp;lt;code&amp;gt;attr TYPE=CUL_HM:FILTER=DEF=[0-9a-fA-F]{6}:FILTER=DEF!=[0]{6} IOgrp VCCU&amp;lt;/code&amp;gt;&lt;br /&gt;
Anschließend nicht vergessen, die Konfiguration mit &#039;&#039;&#039;save&#039;&#039;&#039; zu speichern.&lt;br /&gt;
&lt;br /&gt;
== Virtuelle Kanäle der VCCU==&lt;br /&gt;
{{Randnotiz|RNTyp=r|RNText= Die virtuellen Kanäle der VCCU funktionieren nicht als:&lt;br /&gt;
# virtueller Fensterkontakt&lt;br /&gt;
# virtueller Temperaturfühler&lt;br /&gt;
# virtueller HM-CC-TC&lt;br /&gt;
# virtueller TeamLead für Rauchmelder&lt;br /&gt;
Siehe Beispiel in [[HM-CC-RT-DN]] im Abschnitt externe Sensoren}}&lt;br /&gt;
: &#039;&#039;→ Siehe auch: [[HomeMatic#IO_Entities]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Eine VCCU kann bis zu 50 virtuelle Kanäle, sogenannte &#039;&#039;&#039;IO-Entities&#039;&#039;&#039;, bedienen. Diese können als Sender/Sensoren oder Empfänger genutzt werden. Man kann diese Kanäle mit einem realen Kanal peeren und Aktionen triggern. &lt;br /&gt;
&lt;br /&gt;
Man peert beispielsweise einen Dimmer mit einer IO-Entity um &amp;quot;Tastendrücke&amp;quot; in der Zentrale auslösen zu können. Sowohl kurze (short) als auch lange (long) Tastendrücke können so an den Dimmer gesendet werden.&lt;br /&gt;
Auch mehrere Aktoren können mit einer IO-Entity gepeert werden, beispielsweise um alle Lichter der Gruppe mit einem &amp;quot;press&amp;quot; gleichzeitig zu schalten. &lt;br /&gt;
&lt;br /&gt;
=== Anlegen ===&lt;br /&gt;
  set VCCU virtual &amp;lt;Anzahl Button&amp;gt;&lt;br /&gt;
z.B.&lt;br /&gt;
  set VCCU virtual 10&lt;br /&gt;
legt 10 Kanäle für die VCCU an, die Kanäle 1-10. Evtl. vorhandene Kanäle größer 10 werden gelöscht.&lt;br /&gt;
&lt;br /&gt;
=== Kommandos ===&lt;br /&gt;
: &#039;&#039;→ Siehe auch: {{Link2CmdRef|Anker=CUL_HM-set-virtual}}&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Verfügbare Kommandos auflisten:&lt;br /&gt;
&lt;br /&gt;
  get vccu_Btn1 cmdList&lt;br /&gt;
&lt;br /&gt;
Insbesondere gibt es:&lt;br /&gt;
  set vccu_Btn1 press short&lt;br /&gt;
  set vccu_Btn1 press long&lt;br /&gt;
  set vccu_Btn1 postEvent &amp;lt;condition&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
 [[Kategorie:HomeMatic supportDevice]]&lt;br /&gt;
 &lt;br /&gt;
 [[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Soulman</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Virtueller_Controller_VCCU&amp;diff=40680</id>
		<title>Virtueller Controller VCCU</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Virtueller_Controller_VCCU&amp;diff=40680"/>
		<updated>2026-01-07T22:11:26Z</updated>

		<summary type="html">&lt;p&gt;Soulman: /* Einrichten */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Randnotiz|RNTyp=r|RNText=Bitte beachten Sie: Eine VCCU innerhalb FHEM ist nicht zu verwechseln mit einer virtualisierten CCU3! Für letztere gibt es eine eigene Modulfalmilie [[HMCCU]], hier geht es ausschließlich um Geräte des TYPE CUL_HM.}}Eine &#039;&#039;&#039;Virtuelle CCU&#039;&#039;&#039;, auch &#039;&#039;&#039;VCCU&#039;&#039;&#039; genannt, ist eine Zentrale für [[HomeMatic]]-Geräte. Die VCCU tritt beim [[Pairing (HomeMatic)|Pairing]] an die Stelle des &#039;&#039;I/O-Devices&#039;&#039; (auch &amp;quot;Schnittstelle&amp;quot; genannt, zum Beispiel [[CUL]] und [[HM-CFG-LAN]]).&lt;br /&gt;
&lt;br /&gt;
HomeMatic-Geräte werden üblicherweise mit einer Zentrale gepaired, um sie zentral verwalten zu können. Der Pairing-Partner ist im einfachsten Fall das I/O-Device ([[CUL]], [[HM-CFG-LAN]], …) selbst. Nachteilig dabei ist, dass der Ausfall der Schnittstelle bewirkt, dass alle gepairten Geräte nicht mehr bedient werden können. Dies lässt sich im Gegensatz zu ungepairten Protokollen (z.b. FS20) auch nicht durch doppelte Definition mit abweichenden IO-Devices lösen, da das Pairing nur mit einer &#039;&#039;hmId&#039;&#039; erfolgen kann. Daher kann auch durch mehrere Schnittstellen / IOs keine Redundanz erreicht werden. Ähnliches gilt für eine Vergrößerung der Funkabdeckung durch mehrere Schnittstellen. &lt;br /&gt;
&lt;br /&gt;
Dieses Problem kann durch eine VCCU gelöst werden. Die VCCU ist eine virtuelle Zentrale; sie tritt beim Pairing an die Stelle der Schnittstelle. Sie erhält eine eigene &#039;&#039;hmId&#039;&#039;, mit der die HM Sensoren und Geräte gepaired werden. Die Funkschnittstelle(n) werden dann von der VCCU als reine &amp;quot;dumme&amp;quot; IOs verwaltet. Dieses bietet vielfältige Möglichkeiten, z.B. die Verwendung mehrerer IOs, aus denen die VCCU die &amp;quot;beste&amp;quot; nach diversen Kriterien (z.B. RSSI) auswählt. Dadurch kann sowohl die Redundanz als auch die Funkabdeckung erhöht werden.&lt;br /&gt;
&lt;br /&gt;
Durch das Pairen der Geräte mit einer virtuellen CCU ergeben sich folgende Vorteile:&lt;br /&gt;
&lt;br /&gt;
* Die Verwendung mehrerer I/O-Devices wird möglich. Das sorgt für Redundanz (Ausfallsicherheit) und/oder Reichweiten-Vergrößerung.&lt;br /&gt;
* Der Tausch eines I/O-Devices ist transparent für gepairte Geräte.&lt;br /&gt;
* Die VCCU stellt virtuelle Kanäle zur Verfügung, mit denen HomeMatic-Geräte [[HomeMatic Peering Beispiele|gepeert]] werden können.&lt;br /&gt;
* &amp;quot;Geordnete&amp;quot; Termination von Nachrichten (da die üblichen Funkschnittstellen (wie CUL im HM-Mode oder HM-LAN-Konfigurator) relativ &amp;quot;dumm&amp;quot; sind, führen viele Zustände zu den bekannten &amp;quot;Help me&amp;quot; Einträgen im Log)&lt;br /&gt;
&lt;br /&gt;
Der einzige Nachteil einer VCCU gegenüber dem direkten Pairing mit dem I/O-Device ist ein Mehraufwand bei der initialen Konfiguration vom FHEM.&lt;br /&gt;
&lt;br /&gt;
== Kurzbeschreibung ==&lt;br /&gt;
Ein virtueller Controller &#039;&#039;&#039;VCCU&#039;&#039;&#039; ist der Protokoll-Endpunkt der Zentrale und ersetzt dabei logisch (jedoch nicht physikalisch) z.b. den [[HM-CFG-LAN LAN Konfigurations-Adapter]] einer &amp;quot;klassischen&amp;quot; FHEM Konfiguration&lt;br /&gt;
&lt;br /&gt;
Es können einer VCCU einzelne oder mehrere IO Devices zugeordnet werden. Man bündelt dadurch mehrere I/O Devices (z.B. CULs und HM-CFG-LANs) zu einem &#039;&#039;Pool&#039;&#039;. Den HM-Devices in FHEM (Aktoren, Sensoren) kann dann als I/O Device die &#039;&#039;VCCU&#039;&#039; zugeordnet werden, dies geschieht durch das Attribut &#039;&#039;IOgrp.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Durch diese Gruppierung der I/O Devices und dem Zuordnen der VCCU zu einem Device entstehen verschieden Vorteile, abhängig des Einsatzes der VCCU. So kann ein beliebiges I/O Device im Device Pool der VCCU ausfallen und das oder die verbliebenden I/O Devices übernehmen diese Funktion (abhängig von der Funkreichweite/Erreichbarkeit). Die VCCU wird das nächst verfügbare I/O Device zum Senden/Empfangen verwenden.&lt;br /&gt;
&lt;br /&gt;
Ein weiterer Vorteil ist, dass durch die VCCU auch das I/O Device genutzt werden kann, welches die beste Funkqualität aufweist. Dies kann z.B. bei beweglichen Sensoren/Aktoren (Fernbedienungen) sinnvoll sein, oder wenn die Funkqualität durch andere Faktoren beeinflusst wird (z.B. Tür/Tor oder andere &amp;quot;bewegliche&amp;quot; Störfaktoren)&lt;br /&gt;
&lt;br /&gt;
== Mehrere VCCUs in einer Installation==&lt;br /&gt;
Theoretisch erlaubt FHEM die parallele Nutzung mehrerer VCCUs, praktisch ergeben sich dadurch jedoch keine Vorteile gegenüber einer einzigen VCCU. Insbesondere kann bereits eine VCCU verschiedene I/O-Devices bedienen, zum Beispiel einen [[CUL]] &#039;&#039;und&#039;&#039; ein [[HM-CFG-LAN]].&lt;br /&gt;
&lt;br /&gt;
Jede VCCUs muss eine eindeutige &#039;&#039;HomeMatic-ID&#039;&#039; haben, mit der HomeMatic-Geräte gepaired werden. Folglich kann jedes HomeMatic-Gerät nur mit &#039;&#039;einer&#039;&#039; VCCU gepaired werden.&lt;br /&gt;
&lt;br /&gt;
Die VCCU überschreibt die hmid eines  I/O Device mit seiner eignen, daher können nicht mehrere VCCUs dasselbe I/O Device verwenden.&lt;br /&gt;
&lt;br /&gt;
== Definition der VCCU==&lt;br /&gt;
=== hmId wählen ===&lt;br /&gt;
Eine VCCU benötigt wie alle HM Devices eine Adresse, mit der sie angesprochen wird. Bei Schnittstellen und Zentralen ist dies eine &#039;&#039;hmId&#039;&#039;. Da die VCCU eine (virtuelle) Zentrale ist, muss sie auch mit einer &#039;&#039;hmId&#039;&#039; versehen werden. Dies geschieht per define analog zur Anlage einer physischen Schnittstelle (siehe weiter unten)&lt;br /&gt;
&lt;br /&gt;
Eine VCCU gibt die &#039;&#039;hmId&#039;&#039; an die ihr zugewiesenen IOs (Funkschnittstellen) weiter. Damit haben alle von einer VCCU genutzten I/Os nach der Zuweisung dieselbe &#039;&#039;hmId&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* Definiert man eine VCCU nachdem IOs für HomeMatic angelegt und in Verwendung sind, sollte man die &#039;&#039;hmId&#039;&#039; der bereits vorhandenen Funkschnittstelle verwenden, hierdurch kann man sich das Neupairen der HM Devices ersparen. &lt;br /&gt;
* Hat man bereits mehrere Funkschnittstellen im Einsatz, werden diese unterschiedliche &#039;&#039;hmIds&#039;&#039; haben, zumindest eine Schnittstelle wird nach der Zuweisung zur VCCU seine &#039;&#039;hmId&#039;&#039; also ändern. &lt;br /&gt;
* Für mit dieser Schnittstelle schon gepairte Devices ist ein Neupairen unumgänglich.&lt;br /&gt;
&lt;br /&gt;
Außerdem muss in jedem Fall das attr IOgrp eines vor Anlage der VCCU gepairten Gerätes auf die VCCU angelegt/geändert werden., z.B. so&lt;br /&gt;
 attr &amp;lt;device&amp;gt; IOgrp &amp;lt;Name der vccu&amp;gt;&lt;br /&gt;
(Siehe weiter unten ein Tipp, wie dies leicht nachträglich erledigt werden kann)&lt;br /&gt;
&lt;br /&gt;
Mit der Anlage einer VCCU hat der Inhalt des vorhandenen Attributes IODev eines HM_Devices keine Wirkung mehr. Statt dessen setzt die VCCU ein Internal IODev automatisch je nach Verfügbarkeit und Funklage. Das Attribut IODev ist dann nicht mehr notwendig und kann auch nicht mehr gesetzt werden, wenn IOgrp gesetzt ist.  &lt;br /&gt;
&lt;br /&gt;
=== Einrichten ===&lt;br /&gt;
{{Randnotiz|RNTyp=g|RNText=Achtung, die Reihenfolge der Befehle muss exakt eingehalten werden.CUL_HM ist leider nicht Raw Definition fähig!}}&lt;br /&gt;
Diese Befehlsfolge erzeugt eine VCCU, bitte die Reihenfolge genau so abarbeiten!&lt;br /&gt;
Die Werte in &amp;lt;&amp;gt; durch die echten Werte ersetzen und die &amp;lt;&amp;gt; weglassen!&lt;br /&gt;
&lt;br /&gt;
Das Attribut &#039;&#039;IOList&#039;&#039; dient dazu festzulegen, welche physikalischen Schnittstellen (&amp;quot;IO&amp;quot;) von der VCCU genutzt werden, dies sind in der Regel &#039;&#039;&#039;alle&#039;&#039;&#039; HM-fähigen Schnittstellen einer Installation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;IOList&#039;&#039; beinhaltet die Komma-getrennte Liste der IOs (&#039;&#039;&#039;keine Leerzeichen&#039;&#039;&#039;!), so wie sie in FHEM angelegt sind.&amp;lt;pre&amp;gt;&lt;br /&gt;
define &amp;lt;Name der vccu&amp;gt; CUL_HM &amp;lt;hmId&amp;gt;&lt;br /&gt;
attr &amp;lt;Name der vccu&amp;gt; model CCU-FHEM&lt;br /&gt;
attr &amp;lt;Name der vccu&amp;gt; IOList &amp;lt;Name des io1&amp;gt;[,&amp;lt;Name des io2&amp;gt;,...]&lt;br /&gt;
attr &amp;lt;Name der vccu&amp;gt; IOgrp &amp;lt;Name der vccu&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Die folgende Darstellung mit zwei IOs im Raw Definition Format dient nur als Beispiel. &#039;&#039;&#039;Diese Abfolge ist nicht zum Anlegen der VCCU geeignet!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Es seien z.B. in FHEM bereits die beiden Schnittstellen HMLAN0 und CUL0 angelegt:&lt;br /&gt;
&lt;br /&gt;
 define HMLAN0 HMLAN 192.168.168.2:1000&lt;br /&gt;
 attr HMLAN0 hmId 123456&lt;br /&gt;
 attr HMLAN0 hmLanQlen 1_min&lt;br /&gt;
 attr HMLAN0 icon hm_lan&lt;br /&gt;
&lt;br /&gt;
 define CUL0 CUL /dev/ttyACM0@9600 0000&lt;br /&gt;
 attr CUL0 hmId 123456&lt;br /&gt;
 attr CUL0 icon cul_cul&lt;br /&gt;
 attr CUL0 rfmode HomeMatic&lt;br /&gt;
&lt;br /&gt;
Dann kann zusätzlich die VCCU mit derselben hmId angelegt werden und die beiden physikalischen Schnittstellen ihr zugewiesen:&lt;br /&gt;
&lt;br /&gt;
 define VCCU CUL_HM 123456&lt;br /&gt;
 attr VCCU IOList CUL0,HMLAN0&lt;br /&gt;
 attr VCCU IOgrp VCCU&lt;br /&gt;
 attr VCCU model CCU-FHEM&lt;br /&gt;
 attr VCCU subType virtual&lt;br /&gt;
 attr VCCU webCmd virtual:update&lt;br /&gt;
&lt;br /&gt;
Wird die VCCU mit einer von vorhandenen Schnittstellen abweichenden &#039;&#039;hmId&#039;&#039; angelegt, so wird die &#039;&#039;hmId&#039;&#039; der ihr zugewiesenen Schnittstelle(n) automatisch angepasst. Dies hat in der Regel zur Folge, dass HM Devices neu gepairt werden müssen.&lt;br /&gt;
&lt;br /&gt;
Dies trifft auch zu, wenn bereits vorhandene Schnittstellen unterschiedliche hmIDs haben, dann wird sich die hmID mindestens einer Schnittstelle ändern. (Der Einfachheit halber war im obigen Beispiel angenommen, dass auch vorher die beiden Schnittstellen bereits die gleiche ID hatten.)&lt;br /&gt;
&lt;br /&gt;
=== Auswirkungen auf IOs / Funkschnittstellen===&lt;br /&gt;
Sind IOs durch das Attribut IOList einer VCCU zugewiesen und werden die notwendigen Attribute im IO gesetzt, so wird die hmId durch die VCCU kontrolliert. Ein HMLAN/USB ist etwas enger verbunden als CUL IOs. Beim HMLAN kann die HMId nicht mehr geändert werden. Die kontrollierende VCCU wird in den Internals &#039;&#039;owner&#039;&#039; und &#039;&#039;owner_CCU&#039;&#039; des IO automatisch eingetragen. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Was passiert beim Austausch/Wegfall von IOs ===&lt;br /&gt;
Häufig wird das Thema VCCU erst angefasst, wenn das System schon eine Weile besteht und ein zweiter IO eingebaut, oder der alte IO ausgetauscht werden soll. Dabei entsteht folgende ungünstige Struktur in der fhem.cfg&lt;br /&gt;
 ...&lt;br /&gt;
 define erster IO&lt;br /&gt;
 ...&lt;br /&gt;
 define alle möglichen HM Geräte&lt;br /&gt;
 ...&lt;br /&gt;
 define VCCU&lt;br /&gt;
 define neuer IO&lt;br /&gt;
Beim Start von FHEM wird die cfg Zeilenweise abgearbeitet und für jedes HM Gerät geprüft ob ein IO vorhanden ist, gegebenenfalls erfolgt ein Fehlereintrag im Log (unknown IODev specified). Wenn der neue IO erst am Ende der cfg definiert ist, ist er für alle davor liegenden HM Geräte nicht vorhanden. Das ist nur ein Schönheitsfehler beim Start von FHEM, im laufenden Betrieb spielt das keine Rolle.&lt;br /&gt;
&lt;br /&gt;
Folgende Struktur wäre erstrebenswert&lt;br /&gt;
 ...&lt;br /&gt;
 define Homematic IO 1&lt;br /&gt;
 define Homematic IO 2&lt;br /&gt;
 define VCCU&lt;br /&gt;
 define HM Geräte &lt;br /&gt;
 ...&lt;br /&gt;
Solange kein Modul die Einträge in der fhem.cfg entsprechend einsortiert, muss diese Korrektur von Hand erfolgen. Dies ist einer der wenigen Fälle, wo direktes Editieren der fhem.cfg z.B. mit dem eingebautem Editor unumgänglich ist. Soll der im Standard-WEBinterface von FHEM eingebaute Editor verwendet werden, muss zuerst das Attribut&lt;br /&gt;
 attr WEB editConfig 1&lt;br /&gt;
in FHEM gesetzt werden.&lt;br /&gt;
Anschließend die kompletten define Blöcke mit allem was dazu gehört entsprechend in die empfohlene Struktur bringen. &lt;br /&gt;
Datei sichern und rereadcfg eingeben.&lt;br /&gt;
&lt;br /&gt;
=== Pairen von HM Devices===&lt;br /&gt;
Ein erneutes Pairen nach dem Anlegen einer VCCU in bestehenden Installationen ist nicht notwendig!&lt;br /&gt;
 &lt;br /&gt;
Neue HM Devices sollten vorzugsweise direkt mit der VCCU gepairt werden, hierzu werden die normalen Befehle&lt;br /&gt;
  hmPairForSec&lt;br /&gt;
also z.b. &lt;br /&gt;
  set VCCU hmPairForSec 600&lt;br /&gt;
oder&lt;br /&gt;
  hmPairSerial&lt;br /&gt;
verwendet. &lt;br /&gt;
&lt;br /&gt;
Es ist alternativ weiter möglich - auch nach Anlage einer VCCU - HM Devices mit diesen Kommandos direkt an ein IO zu pairen, d.h. diese Kommandos haben auch nach Anlage einer VCCU noch eine Funktion an der physikalischen Schnittstelle (im Gegensatz z.b. zum attr IODev).&lt;br /&gt;
&lt;br /&gt;
Da die VCCU und alle IOs die selbe &#039;&#039;hmId&#039;&#039; teilen, hat diese &#039;&#039;&#039;nicht&#039;&#039;&#039; die Wirkung, dass das Geräte etwa nicht mit der VCCU, sondern nur mit dem gepairten IO angesprochen werden kann.&lt;br /&gt;
&lt;br /&gt;
Ist der Pairvorgang nicht sofort (oder nur teilweise) erfolgreich, kann/muss er ohne Weiteres 2 bis 3 mal wiederholt werden. Dann sollte das Gerät erfolgreich gepairt sein. Mit hmInfo configCheck kann das einfach überprüft werden. Mitunter kann es auch sinnvoll sein, das Gerät in den Auslieferungszustand zu bringen (siehe Handbuch, oft Knopf mindestens 5 Sekunden drücken, bis es blinkt, dann loslassen und nochmals 5 Sekunden drücken, bis es schneller blinkt) und danach erneut zu pairen.&lt;br /&gt;
&lt;br /&gt;
==== Autocreate ====&lt;br /&gt;
Sofern Autocreate eingeschaltet ist und das Pairing wie oben beschrieben an die VCCU erfolgt, wird unter anderem für das Device folgendes Attribut angelegt:&lt;br /&gt;
&lt;br /&gt;
 attr &amp;lt;device&amp;gt; IOgrp VCCU:&amp;lt;PhysischesIO&amp;gt;&lt;br /&gt;
&lt;br /&gt;
z.B.&lt;br /&gt;
&lt;br /&gt;
 attr Thermostat_Bad IOgrp VCCU:HMLAN1&lt;br /&gt;
&lt;br /&gt;
Das attr &amp;lt;device&amp;gt; IOgrp:... zeigt an, welches physikalische IO zum Zeitpunkt des Autocreates verwendet wurde, vermutlich ist das das IO mit der besseren Funklage (wenn mehrere existieren). Dasselbe IO wird mit&lt;br /&gt;
 IOgrp VCCU:HMLAN1&lt;br /&gt;
auch als prefered eingetragen. D.h. die VCCU wird später zuerst prüfen ob HMLAN1 verfügbar ist (condition=ok) und es dann verwenden, andere IOs werden nur verwendet, wenn HMLAN1 nicht verfügbar ist.&lt;br /&gt;
Dieser Eintrag kann manuell geändert werden, Details im folgenden Abschnitt.&lt;br /&gt;
&lt;br /&gt;
== Dynamisches IO ==&lt;br /&gt;
Ohne VCCU sendet das System Befehle an ein HM Device in der Regel immer über das gleiche IO-Device. Fällt es aus, wird nicht mehr gesendet, selbst wenn ein zweites IO verfügbar wäre. Außerdem kann eine &#039;&#039;bewegliche&#039;&#039; Fernbedienung ihre Verbindung zu einem IO verlieren, obwohl sie über ein anderes IO gut kommunizieren könnten.&lt;br /&gt;
&lt;br /&gt;
Die VCCU adressiert beide Probleme:&lt;br /&gt;
&lt;br /&gt;
Durch das Attibut IOgrp  &lt;br /&gt;
 attr &amp;lt;device&amp;gt; IOgrp &amp;lt;vccu&amp;gt;:&amp;lt;preferredIO&amp;gt;&lt;br /&gt;
kann bestimmt werden, wie die VCCU die IO Devices genau nutzt. Insbesondere ist optional ein Preferd IO Device definierbar: bei stationären Devices - der häufigste Fall - sollte man das beste IO auswählen und als Default nutzen. Ein weiteres IO wird bei Ausfall des Ersten genutzt.&lt;br /&gt;
&lt;br /&gt;
Das preferredIO ist jedoch optional und kann insbesondere bei beweglichen HM Devices (Fernbedienungen) weggelassen werden.&lt;br /&gt;
&lt;br /&gt;
Es können auch mehrere preferredIO definiert werden, diese werden in der definierten Reihenfolge genutzt&lt;br /&gt;
 attr &amp;lt;device&amp;gt; IOgrp &amp;lt;vccu&amp;gt;:&amp;lt;prefIO1&amp;gt;,&amp;lt;prefIO2&amp;gt;,&amp;lt;prefIO3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
Durch&lt;br /&gt;
 attr &amp;lt;device&amp;gt; IOgrp VCCU:HMLAN1&lt;br /&gt;
wird die VCCU zuerst versuchen Befehle an &amp;lt;device&amp;gt; mit HMLAN1 zu senden, falls seine condition=ok. &lt;br /&gt;
Falls nicht wird (einer) der verbleibende(n) IOs verwendet, hier der mit dem besten RSSI.&lt;br /&gt;
&lt;br /&gt;
Durch&lt;br /&gt;
 attr &amp;lt;device&amp;gt; IOgrp VCCU&lt;br /&gt;
wird durch die VCCU der IO mit dem besten RSSI zum Device gewählt, falls seine condition=ok ist. &lt;br /&gt;
&lt;br /&gt;
Da dies für jedes angelegte HM Device einzeln definiert werden kann/muss, kann so auch eine Verteilung des Funkverkehrs vorgenommen werden, z.b. um die 1%-Regel (HighLoad) zu berücksichtigen, dennoch bleibt die Redundanz bei Ausfall einer Schnittstelle erhalten.&lt;br /&gt;
&lt;br /&gt;
=== Bemerkungen ===&lt;br /&gt;
Die besprochene Steuerung betrifft das &#039;&#039;&#039;Senden&#039;&#039;&#039;. Empfangen und verarbeitet werden Nachrichten immer von allen verfügbaren Quellen. Kanäle senden nicht selbständig und haben daher auch kein Attribut IOgrp.&lt;br /&gt;
&lt;br /&gt;
=== IOgrp bei nachträglicher Einrichtung einer VCCU ===&lt;br /&gt;
Wie erwähnt wird beim Verwenden von Autocreate das Attribut IOgrp mit angelegt.&lt;br /&gt;
Bei HM Devices die vor der Einrichtung einer VCCU angelegt wurden, fehlt das Attribut aber.&lt;br /&gt;
Es wird empfohlen, das Attribut IOgrp in solchen Devices zu nachträglich setzen. Kanäle senden nicht selbständig, haben daher kein Attribut IOgrp.&amp;lt;br&amp;gt;&lt;br /&gt;
Das Attribut &#039;&#039;&#039;IODev&#039;&#039;&#039; wird dann automatisch gelöscht, wenn es gesetzt war, Usereinträge haben keine Funktion.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Setzen der IOgrp auf (fast) allen Devices mit einem einzigen Befehl ====&lt;br /&gt;
In einer bestehenden FHEM-Installation mit mehreren/vielen Devices, kann das Setzen der &#039;&#039;IOgrp&#039;&#039; aufwendig sein. &lt;br /&gt;
&lt;br /&gt;
Mit folgendem Befehl werden alle Geräte mit einer 6 stelligen DEF (HEX Zahl) um das notwendige Attribut erweitert. Die DEF 000000 (ActionDetector) wird ausgespart.&lt;br /&gt;
&lt;br /&gt;
Zunächst kann man den Filter testen und damit die Auswirkung auf Geräte prüfen.&lt;br /&gt;
:&amp;lt;code&amp;gt;list TYPE=CUL_HM:FILTER=DEF=[0-9a-fA-F]{6}:FILTER=DEF!=[0]{6}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bitte nur &#039;&#039;&#039;VCCU&#039;&#039;&#039; durch den echten Namen der VCCU ersetzen!&lt;br /&gt;
:&amp;lt;code&amp;gt;attr TYPE=CUL_HM:FILTER=DEF=[0-9a-fA-F]{6}:FILTER=DEF!=[0]{6} IOgrp VCCU&amp;lt;/code&amp;gt;&lt;br /&gt;
Anschließend nicht vergessen, die Konfiguration mit &#039;&#039;&#039;save&#039;&#039;&#039; zu speichern.&lt;br /&gt;
&lt;br /&gt;
== Virtuelle Kanäle der VCCU==&lt;br /&gt;
{{Randnotiz|RNTyp=r|RNText= Die virtuellen Kanäle der VCCU funktionieren nicht als:&lt;br /&gt;
# virtueller Fensterkontakt&lt;br /&gt;
# virtueller Temperaturfühler&lt;br /&gt;
# virtueller HM-CC-TC&lt;br /&gt;
# virtueller TeamLead für Rauchmelder&lt;br /&gt;
Siehe Beispiel in [[HM-CC-RT-DN]] im Abschnitt externe Sensoren}}&lt;br /&gt;
: &#039;&#039;→ Siehe auch: [[HomeMatic#IO_Entities]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Eine VCCU kann bis zu 50 virtuelle Kanäle, sogenannte &#039;&#039;&#039;IO-Entities&#039;&#039;&#039;, bedienen. Diese können als Sender/Sensoren oder Empfänger genutzt werden. Man kann diese Kanäle mit einem realen Kanal peeren und Aktionen triggern. &lt;br /&gt;
&lt;br /&gt;
Man peert beispielsweise einen Dimmer mit einer IO-Entity um &amp;quot;Tastendrücke&amp;quot; in der Zentrale auslösen zu können. Sowohl kurze (short) als auch lange (long) Tastendrücke können so an den Dimmer gesendet werden.&lt;br /&gt;
Auch mehrere Aktoren können mit einer IO-Entity gepeert werden, beispielsweise um alle Lichter der Gruppe mit einem &amp;quot;press&amp;quot; gleichzeitig zu schalten. &lt;br /&gt;
&lt;br /&gt;
=== Anlegen ===&lt;br /&gt;
  set VCCU virtual &amp;lt;Anzahl Button&amp;gt;&lt;br /&gt;
z.B.&lt;br /&gt;
  set VCCU virtual 10&lt;br /&gt;
legt 10 Kanäle für die VCCU an, die Kanäle 1-10. Evtl. vorhandene Kanäle größer 10 werden gelöscht.&lt;br /&gt;
&lt;br /&gt;
=== Kommandos ===&lt;br /&gt;
: &#039;&#039;→ Siehe auch: {{Link2CmdRef|Anker=CUL_HM-set-virtual}}&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Verfügbare Kommandos auflisten:&lt;br /&gt;
&lt;br /&gt;
  get vccu_Btn1 cmdList&lt;br /&gt;
&lt;br /&gt;
Insbesondere gibt es:&lt;br /&gt;
  set vccu_Btn1 press short&lt;br /&gt;
  set vccu_Btn1 press long&lt;br /&gt;
  set vccu_Btn1 postEvent &amp;lt;condition&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
 [[Kategorie:HomeMatic supportDevice]]&lt;br /&gt;
 &lt;br /&gt;
 [[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Soulman</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Global&amp;diff=40678</id>
		<title>Global</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Global&amp;diff=40678"/>
		<updated>2026-01-07T19:07:21Z</updated>

		<summary type="html">&lt;p&gt;Soulman: /* httpcompress */  Wozu sollte WAS gut sein?&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SEITENTITEL:global}}  &amp;lt;!-- da richtige Schreibweise kleinen Anfangsbuchstaben hat --&amp;gt;&lt;br /&gt;
{{Infobox Modul&lt;br /&gt;
|ModPurpose=Gerät zur Definition von globalen Attributen&lt;br /&gt;
|ModType=d&lt;br /&gt;
|ModCmdRef=global&lt;br /&gt;
|ModForumArea=Automatisierung&lt;br /&gt;
|ModTechName=fhem.pl (&amp;quot;Built-in&amp;quot;)&lt;br /&gt;
|ModOwner=rudolfkoenig ({{Link2FU|8|Forum}} / [[Benutzer Diskussion:Rudolfkoenig|Wiki]])&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Das &#039;&#039;&#039;Device global&#039;&#039;&#039; dient dazu, diverse allgemein für das gesamte FHEM gültige Eigenschaften und Verhaltensvorgaben zu definieren. Diese werden in [[Attribut|Attributen]] des devices verwaltet, indem deren Werten gemäß der {{Link2CmdRef|Lang=de|Anker=global|Label=dokumentierten}} Bedeutung gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
Das Pseudogerät &#039;&#039;&#039;global&#039;&#039;&#039; wird automatisch erstellt, kann weder gelöscht noch [[rename|umbenannt]] werden und hat auch keine &#039;&#039;set&#039;&#039; oder &#039;&#039;get&#039;&#039; Parameter.&lt;br /&gt;
{{Todo|Ergänzen}}&lt;br /&gt;
&lt;br /&gt;
== Definition ==&lt;br /&gt;
Nicht erforderlich; wird automatisch angelegt.&lt;br /&gt;
== Attribute ==&lt;br /&gt;
=== altitude ===&lt;br /&gt;
Höhe in Metern über dem Meeresspiegel, Voreinstellung ist 0. &lt;br /&gt;
=== latitude ===&lt;br /&gt;
Geographische Breite in Dezimalgrad, Voreinstellung ist 50.112, Frankfurt am Main. &lt;br /&gt;
=== longitude ===&lt;br /&gt;
Geographische Länge in Dezimalgrad, Voreinstellung ist 8.686, Frankfurt am Main. &lt;br /&gt;
=== archivedir, archivecmd, nrarchive ===&lt;br /&gt;
Diese Attribute können grundsätzlich in allen Devices gesetzt werden und beziehen sich dann auf deren Logging. Im Device global wirken sie ausschließlich auf das FHEM [[#logfile|logfile]].&lt;br /&gt;
&lt;br /&gt;
Wenn eine neue FileLog-Datei geöffnet wird, wird der FileLog archiver aufgerufen. Das geschieht aber nur, wenn der Name der Datei sich geändert hat (abhängig von den zeitspezifischen Wildcards, die in FileLog (define) beschrieben werden) und gleichzeitig ein neuer Datensatz in diese Datei geschrieben werden muss. &lt;br /&gt;
&lt;br /&gt;
Wenn das Attribut archivecmd benutzt wird, startet es als shell-Kommando (eine Einbettung in &amp;quot; ist nicht notwendig), und jedes % in diesem Befehl wird durch den Namen des alten Logfiles ersetzt.&lt;br /&gt;
&lt;br /&gt;
Wenn dieses Attribut nicht gesetzt wird, aber dafür nrarchive, werden nrarchive viele Logfiles im aktuellen Verzeichnis gelassen, und ältere Dateien in das Archivverzeichnis (archivedir) verschoben (oder gelöscht, falls kein archivedir gesetzt wurde).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: &amp;quot;ältere Dateien&amp;quot; sind die, die in der alphabetisch sortierten Liste oben sind.&lt;br /&gt;
=== archivesort ===&lt;br /&gt;
archivesort kann auf dem (voreingestellten) Wert &#039;&#039;alphanum&#039;&#039; oder auf &#039;&#039;timestamp&#039;&#039; gesetzt werden, und bestimmt die Methode für die Reihenfolgenberechnung der Dateien für nrarchive.&lt;br /&gt;
=== autoload_undefined_devices ===&lt;br /&gt;
Wenn dieses Attribut gesetzt ist, werden die zu einer neu empfangenen Nachricht zugehörigen Module automatisch geladen.  Dies erfolgt vom  autocreate Gerät, um so automatisch ein FHEM-Gerät bei erreichen einer entsprechenden Nachricht zu erstellen. &lt;br /&gt;
{{Todo|Ergänzen: gesetzt mit welchem Wert?}}&lt;br /&gt;
=== backupcmd ===&lt;br /&gt;
Wenn dieses Attribut gesetzt ist, startet es als ein SHELL-Befehl und erstellt eine durch Leerzeichen getrennte Liste von Dateien/Verzeichnissen als ein Argument zum Befehl, z.B.: &lt;br /&gt;
 &amp;quot;/etc/fhem.cfg /var/log/fhem/fhem.save /usr/share/fhem/contrib /usr/share/fhem/FHEM /usr/share/fhem/foo /usr/share/fhem/foobar /usr/share/fhem/www&amp;quot; &lt;br /&gt;
&#039;&#039;&#039;Bemerkung&#039;&#039;&#039;: Ihr Befehl/Skript muss die Zeichenkette &amp;quot;backup done&amp;quot; zurückgeben oder eine entsprechende Zeichenkette um Fehlermeldungen auszugeben, damit die Zusammenarbeit mit update funktioniert!&lt;br /&gt;
&lt;br /&gt;
{{Todo|Ergänzen: Was denn nun: &#039;backup done&#039; oder die oben beschriebene Zeichenkette?}}&lt;br /&gt;
Dieses Attribut wird vom backup Befehl benutzt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beispiel&#039;&#039;&#039;:&lt;br /&gt;
 attr global backupcmd /usr/local/bin/myBackupScript.sh &lt;br /&gt;
=== backupdir ===&lt;br /&gt;
Ein Verzeichnis, in dem die komprimierten Sicherheitsdateien zu speichern sind. Dieses Attribut wird vom backup Befehl benutzt.&lt;br /&gt;
&#039;&#039;&#039;Beispiel:&#039;&#039;&#039;&lt;br /&gt;
 attr global backupdir /Volumes/BigHD &lt;br /&gt;
&lt;br /&gt;
=== backupsymlink ===&lt;br /&gt;
Wird dieses Attribut auf etwas anderes als &#039;&#039;no&#039;&#039; gesetzt, dann unterstützt der Archivierungsbefehl &amp;quot;tar&amp;quot; symbolische Links in Ihrem Backup. Andererseits, anderenfalls (Wert &#039;&#039;no&#039;&#039;) werden symbolische Links vom Befehl &amp;quot;tar&amp;quot; ignoriert. Dieses Attribut wird vom backup Befehl benutzt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beispiel:&#039;&#039;&#039;&lt;br /&gt;
 attr global backupsymlink yes &lt;br /&gt;
=== blockingCallMax ===&lt;br /&gt;
Begrenzt die Anzahl der parallel laufenden Prozesse, die von der FHEM Hilfsroutine &#039;&#039;BlockingCall&#039;&#039; gestartet wurden. Sinnvoll auf weniger leistungsfähigeren Hardware. &lt;br /&gt;
=== configfile ===&lt;br /&gt;
Enthält den Namen der FHEM Konfigurationsdatei. Wenn save ohne Argumente aufgerufen wird dann wird die Ausgabedatei unter diesem Dateinamen gespeichert. &lt;br /&gt;
=== commandref ===&lt;br /&gt;
Falls der Wert &#039;&#039;full&#039;&#039; (die Voreinstellung) ist, wird nach jedem update ein komplettes commandref.html generiert. Falls der Wert &#039;&#039;modular&#039;&#039; ist, wird die Moduldokumentation erst nach Bedarf während der Laufzeit per JavaScript geladen. &lt;br /&gt;
=== dnsHostsFile ===&lt;br /&gt;
Falls dnsServer gesetzt ist, wird die angegebene Datei nach dem Hostnamen durchsucht. Um die vom System verwendete Datei zu benutzen, ist es unter Linux/Unix/OSX auf &#039;&#039;/etc/hosts&#039;&#039; und unter Windows auf &#039;&#039;C:\windows\system32\drivers\etc\hosts&#039;&#039; zu setzen. Achtung: es wird nur IPv4 unterstützt. &lt;br /&gt;
=== dnsServer ===&lt;br /&gt;
Enthält die IP Adresse des DNS Servers. Die von bestimmten Modulen (oder eigenen Code) aufgerufene HttpUtils_NonblockingGet wird auch bei der DNS Auflösung nicht mehr blockieren, falls dieses Attribut gesetzt ist, da es in diesem Fall FHEM eigene Routinen aufgerufen werden. Sonst werden die Betriebssystem eigenen, blockierenden Routinen inet_aton bzw gethostbyname aufgerufen. &lt;br /&gt;
=== featurelevel ===&lt;br /&gt;
Der Wert dieses Attributes de-/aktiviert einzelne Fähigkeiten (Features) bzw. Verhaltensweisen, die im Laufe der Versionsgeschichte dazugekommen sind, entfernt oder geändert wurden basierend auf der angegebenen  FHEM Version. &lt;br /&gt;
&lt;br /&gt;
Bei einer Neuinstallation oder einem Update wird der Featurelevel automatisch auf die aktuelle Version gesetzt. Ein manuelles&lt;br /&gt;
 attr global featurelevel x.y&lt;br /&gt;
mit den Werten für x und y aus den gewünschten Haupt- und Unterversionsnummern setzt temporär oder - bei Speicherung in der fhem.cfg dauerhaft - eine gewünschte Version als Basis. Dieses Vorgehen kann z.B. bei Upgrades mit unerwarteten Nebenwirkungen eine erste Maßnahme und Workaround sein.&lt;br /&gt;
=== holiday2we ===&lt;br /&gt;
Ist dieses Attribut gesetzt, wird die Variable &#039;&#039;$we&#039;&#039; als &amp;quot;true&amp;quot; betrachtet, wenn der Wert der Variable &#039;&#039;holiday&#039;&#039; zu diesem Attribut nicht &amp;quot;none&amp;quot; ist.&lt;br /&gt;
&lt;br /&gt;
Falls der Wert des Attributes eine Komma getrennte Liste ist, dann ist &#039;&#039;$we&#039;&#039; wahr, falls eine der referenzierten Instanzen nicht &amp;quot;none&amp;quot; ist.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beispiel:&#039;&#039;&#039;&lt;br /&gt;
 attr global holiday2we hessen &lt;br /&gt;
{{Todo|Verwirrung auflösen...}}&lt;br /&gt;
=== httpcompress ===&lt;br /&gt;
Einige Module von FHEM verwenden das Modul &#039;&#039;HttpUtils&#039;&#039; mit aktivierter Komprimierung (Voreinstellung). Falls man httpcompress auf 0 setzt, wird die Komprimierung deaktiviert.&lt;br /&gt;
&lt;br /&gt;
=== keyFileName ===&lt;br /&gt;
FHEM Module speichern Passwörter und IDs in der Datei FHEM/FhemUtils/uniqueID. Um mehrere FHEM-Instanzen im gleichen Verzeichnis starten zu können, kann man dieses Attribut setzen, dessen Wert an FHEM/FhemUtils/ angehängt wird. &lt;br /&gt;
=== logdir ===&lt;br /&gt;
Falls gesetzt, wird %L in dem Attribut &#039;&#039;[[#logfile|logfile]]&#039;&#039; (oder in der Dateinamen Spezifikation des [[FileLog]] Moduls) durch den Wert des Attributes ersetzt. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039; Wird der Wert des Attributes geändert, bewirkt dies &#039;&#039;&#039;nicht&#039;&#039;&#039; das Verschieben bereits erstellter Dateien, und kann daher potentiell zu diversen Problemen führen.&lt;br /&gt;
=== logfile ===&lt;br /&gt;
Gibt das Logfile an, in welches gespeichert werden soll. Mit dem Wert &#039;&#039;&amp;quot;-&amp;quot;&#039;&#039; erfolgt die Ausgabe des Logs in das stdout-Gerät. In diesem Fall stellt sich der Server nicht selbst in den Hintergrund.&lt;br /&gt;
&lt;br /&gt;
Der Name der Logdatei kann auch &amp;quot;wildcards&amp;quot; enthalten, um eine einfachere Abfolge für die Dateien zu erreichen. Weiteres zu den Dateinamen beim Modul [[FileLog]]. &lt;br /&gt;
&lt;br /&gt;
Die Attribute [[#archivedir, archivecmd, nrarchive|archivedir, archivecmd, nrarchive]] können ggf. passend gesetzt werden.&lt;br /&gt;
                 &lt;br /&gt;
Sie können den Namen der Logdatei mit  {$currlogfile} festlegen. &lt;br /&gt;
{{Todo|Der Gehalt des letzten Satzes erschließt sich nicht.}}&lt;br /&gt;
=== maxShutdownDelay ===&lt;br /&gt;
Einige Module benötigen Zeit zum Aufräumen beim shutdown, aber FHEM begrenzt diese Zeit auf 10 Sekunden. Mit diesem Attribut kann man sie anpassen. &lt;br /&gt;
=== modpath ===&lt;br /&gt;
Mit modpath geben Sie den Pfad zu dem Verzeichnis der FHEM Module an. Der Pfad enthält nicht das Verzeichnis FHEM. Das festgelegte Verzeichnis wird nach Dateinamen in der Form NN_&amp;lt;NAME&amp;gt;.pm durchsucht. Die gefundenen Dateien dienen als Quelle die Definition von Geräten unter dem Namen &amp;lt;NAME&amp;gt;. Wenn das erste Gerät des Typs &amp;lt;NAME&amp;gt; definiert wird, werden die entsprechenden Module geladen und in dem Modul die entsprechende Funktion mit dem Namen &amp;lt;NAME&amp;gt;_Initialize aufgerufen. Eine Ausnahme bilden Module die mit der Nummer 99 im Dateinamen beginnen. Diese enthalten PERL-Hilfsfunktionen und werden zur Startzeit geladen. &lt;br /&gt;
=== motd ===&lt;br /&gt;
&#039;&#039;Message Of The Day&#039;&#039; (Nachricht des Tages). Der hier hinterlegte Text wird im Begrüßungsbildschirm von FHEM angezeigt, oder direkt beim Start einer &amp;quot;telnet&amp;quot; Sitzung, bevor der Prompt (&#039;&#039;fhem&amp;gt;&#039;&#039;)erscheint. Der SecurityCheck setzt motd wenn es bisher nicht gesetzt ist. Um das zu verhindern, können sie den Wert von motd auf &#039;&#039;none&#039;&#039; setzen. motd wird auch verwendet, um Fehlermeldungen während des FHEM-Starts zu sammeln und anzuzeigen. &lt;br /&gt;
=== mseclog ===&lt;br /&gt;
Wenn dieses Attribut (z. B. auf den Wert 1) gesetzt ist, enthalten Datums/Zeiteinträge (timestamp) in der Logdatei einen Millisekunden-Eintrag.&lt;br /&gt;
&lt;br /&gt;
=== nofork ===&lt;br /&gt;
Wenn dieses Attribut oder das Attribut [[#logfile|logfile]] auf &amp;quot;&#039;&#039;-&#039;&#039;&amp;quot; gesetzt ist, wird FHEM nicht im Hintergrund abgearbeitet. Dieses Attribut ist bei einigen FHEM Installationen auf FRITZ!-Boxen notwendig, und wird fuer Windows automatisch gesetzt. &lt;br /&gt;
{{Todo|Ist das so formuliert tatsächlich korrekt?}}&lt;br /&gt;
=== pidfilename ===&lt;br /&gt;
In die angegebene Datei wird die Prozess-ID des FHEM(-Perl)-Prozesses geschrieben. Der Server läuft als Hintergrundprozess (daemon). Einige Distributionen wollen anhand der PID testen, ob der FHEM Prozess läuft. Die Datei wird bei Ausführung des &amp;quot;shutdown&amp;quot;-Kommandos gelöscht. &lt;br /&gt;
=== proxy ===&lt;br /&gt;
Der Wert wird in der Form &#039;&#039;IP:PORT&#039;&#039; gesetzt, wenn HttpUtils einen HTTP-Proxy verwenden soll. &lt;br /&gt;
=== proxyAuth ===&lt;br /&gt;
Base64 kodiertes Benutzername:Passwort für den HTTP-Proxy (vgl. [[#proxy|Attribut proxy]].&lt;br /&gt;
=== proxyExclude ===&lt;br /&gt;
Regulärer Ausdruck für die Namen aller Hosts, die &#039;&#039;&#039;nicht&#039;&#039;&#039; via Proxy anzusprechen sind. &lt;br /&gt;
=== restoreDirs ===&lt;br /&gt;
&#039;&#039;Update&#039;&#039; sichert (kopiert) jede Datei, bevor sie durch die neue Version ersetzt wird. Zu diesen Zweck wird zuerst ein restoreDir/Update-Verzeichnis angelegt (vgl. Attribut [[#modpath|modpath]]) und danach ein Unterverzeichnis mit dem aktuellen Datum. In dieses Verzeichnis werden die alten Versionen der Dateien vor dem Überschreiben gerettet. Die Voreinstellung ist 3, d.h. die letzten 3 Datums-Verzeichnisse werden aufgehoben, und die älteren entfernt. &lt;br /&gt;
&lt;br /&gt;
Auch fhem.cfg und fhem.state wird auf diese Weise vor dem Ausführen von save gesichert, diesmal in das restoreDir/save Verzeichnis. Zum Restaurieren der alten Dateien kann man das restore Befehl verwenden.&lt;br /&gt;
&lt;br /&gt;
Falls man den Wert auf 0 setzt, ist dieses Feature deaktiviert. &lt;br /&gt;
=== sendStatistics ===&lt;br /&gt;
Der Wert dieses Attributes steuert das Verhalten des Moduls [[Fheminfo]]:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;onUpdate&#039;&#039;: Übertragung von INFO-Daten bei jedem Update (empfohlene Einstellung).&lt;br /&gt;
* &#039;&#039;manually&#039;&#039;: Manuelle Übertragung der INFO-Daten mit dem FHEM-Befehl [[fheminfo|fheminfo send]]. &lt;br /&gt;
* &#039;&#039;never&#039;&#039;: Die Übertragung von INFO-Daten wird komplett verhindert.&lt;br /&gt;
&lt;br /&gt;
=== statefile ===&lt;br /&gt;
Der Wert dieses Attributes legt den Namen der Datei fest, in die Statusinformationen aller Geräte gespeichert werden, bevor der Server heruntergefahren wird. Falls diese Datei nicht angegeben wird, werden keinerlei Informationen gesichert.&lt;br /&gt;
=== title ===&lt;br /&gt;
Setzt im Browser den Fenstertitel der FHEM-Session. Ist der Wert in {} eingeschlossen, wird er als Perl-Ausdruck ausgewertet.&lt;br /&gt;
=== useInet6 ===&lt;br /&gt;
Die HttpUtils Routinen verwenden IPv6 für die Kommunikation, falls der Server eine IPv6 Adresse hat. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: das Perl-Modul IO::Socket::INET6 wird benötigt.&lt;br /&gt;
{{Todo|Welcher Wert ist für das Attribut zu setzen?}}&lt;br /&gt;
=== userattr ===&lt;br /&gt;
Enthält eine durch Leerzeichen getrennte Liste, in der die Namen zusätzlicher Attribute aufgeführt sind, die in allen Devices verfügbar werden. Diese müssen zuerst in dieser Liste definiert werden, bevor sie (individuell bei allen Geräten) angewendet werden können.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;userattr&#039;&#039; kann auch als Attribut in einzelnen Gerätekonfigurationen spezifiziert werden, um weitere Attribute &#039;&#039;&#039;für diese Geräte&#039;&#039;&#039; zu definieren.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: Bei der Festlegung global verfügbarer, zusätzlicher Attributnamen ist dringend darauf zu achten, dass keine Kollisionen mit Geräte spezifischen Attributen erzeugt werden.&lt;br /&gt;
=== dupTimeout ===&lt;br /&gt;
Definert die Wartezeit, nach der 2 identische Ereignisse zweier Empfänger als Duplikat angesehen werden. Voreingestellt sind 0,5 Sekunden.  &lt;br /&gt;
=== showInternalValues ===&lt;br /&gt;
Attribute, Geräte, Readings die mit Punkt (.) anfangen werden nicht angezeigt, es sei denn das globale Attribut &#039;&#039;showInternalValues&#039;&#039; ist gesetzt. Diese Variable wird bei den Befehlen &#039;&#039;[[list]]&#039;&#039; und &#039;&#039;[[xmllist]]&#039;&#039; und bei der FHEMWEB Raumansicht geprüft. &lt;br /&gt;
{{Todo|... gesetzt auf welchen Wert?}}&lt;br /&gt;
=== sslVersion ===&lt;br /&gt;
Setzt die akzeptierten Crypto-Algorithmen im Hilfsmodul [[TcpServices]]. Die Voreinstellung &#039;&#039;TLSv12:!SSLv3&#039;&#039; wird als sicherer erachtet als die vorherige &#039;&#039;SSLv23:!SSLv3:!SSLv2&#039;&#039;, aber sie kann Probleme mit nicht ausreichend aktualisierten Netzwerk-Diensten verursachen. &lt;br /&gt;
=== stacktrace ===&lt;br /&gt;
Falls auf &#039;&#039;1&#039;&#039; gesetzt, schreibt FHEM zusätzlich zu jedem &amp;quot;PERL WARNING&amp;quot; den stacktrace ins Log. &lt;br /&gt;
=== restartDelay ===&lt;br /&gt;
Setzt die Verzögerung beim Neustart mit &#039;&#039;shutdown restart&#039;&#039;, die Voreinstellung ist 2 (Sekunden).&lt;br /&gt;
=== autosave ===&lt;br /&gt;
Erlaubt manchen Modulen, nach einer automatischen Änderung der Konfiguration &#039;&#039;save&#039;&#039; auszuführen, z. B. nachdem ein Gerät angelegt wurde. Die Voreinstellung ist &#039;&#039;1&#039;&#039; (wahr), man kann es ausschalten, indem man den Wert auf &#039;&#039;0&#039;&#039; setzt. &lt;br /&gt;
&lt;br /&gt;
Auch wenn man autosave auf &#039;&#039;1&#039;&#039; setzt, wird es automatisch beim Starten wieder auf &#039;&#039;0&#039;&#039; gesetzt, falls beim Starten was schiefgegangen ist, damit ein automatisches Save (wie auch manche Module das ungefragt machen) nicht zum Verlust von Teilen der Konfiguration führt.&lt;br /&gt;
== weitere Informationen  ==&lt;br /&gt;
Siehe {{Link2CmdRef|Lang=de|Label=commandref|Anker=global}}.&lt;/div&gt;</summary>
		<author><name>Soulman</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=CUL&amp;diff=40673</id>
		<title>CUL</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=CUL&amp;diff=40673"/>
		<updated>2026-01-05T19:34:46Z</updated>

		<summary type="html">&lt;p&gt;Soulman: /* Geräte, die an USB angeschlossen sind (CUL/CUN) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein &#039;&#039;&#039;CUL&#039;&#039;&#039; (&#039;&#039;&#039;C&#039;&#039;&#039;C1101 &#039;&#039;&#039;U&#039;&#039;&#039;SB &#039;&#039;&#039;L&#039;&#039;&#039;ite) ist eine Radiofrequenz/USB-Schnittstelle bestehend aus einem USB-Dongle mit externer [[CUL Ausstattung|Antenne]]. Im USB-Stecker kann ein 8&amp;amp;nbsp;bit Atmel Prozessor die im ISM/SRD-Band empfangenen RF-Daten onboard vorverarbeiten. Je nach aufgespielter [[#FW|Firmware]] kann das CUL verschiedene 868MHz [[CUL HomeMatic und FS20|Protokolle]] empfangen und senden, insbesondere die FS20/FHT/S300/EM/HMS Protokollfamilien. Durch eine kurzzeitige Umschaltung auf 433&amp;amp;nbsp;MHz sind weitere Protokolle zugänglich, z.&amp;amp;nbsp;B. Intertechno, viele Baumarkt-Funksteckdosen.  &lt;br /&gt;
&lt;br /&gt;
== CUL HW ==&lt;br /&gt;
Im Zusammenhang mit diesem Artikel ist vor allem vom &amp;quot;echten&amp;quot; CUL die Rede, als dem USB Hardware-Dongle des Hersteller Busware. Es gibt aber diverse andere Hardware-Schnittstellen, die sich ebenfalls wie ein CUL verhalten, z.b. Netzwerkattached Module ([[CUN]]O), Module zum direkten Aufstecken auch einen Raspberry Pi ([[COC]]), und auf Arduino basierende Lösungen ([[SIGNALduino]]).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Einführung ==&lt;br /&gt;
Die Firmware (culfw) ist quelloffen.  Sie wird auch von verwandten Schnittstellen verwendet, siehe [[CUNO]] (RF+OneWire/LAN-Übergang), [[COC]] (RF+OneWire/Rasberrybus-Übergang), CSM usw.&lt;br /&gt;
&lt;br /&gt;
Im Umfeld von FS20/FHT/EM/S300/HMS (&amp;quot;[[Rfmode|rfmode]] - [[SlowRF]]&amp;quot;) werden die amplitudenmodulierten 1&amp;amp;nbsp;kHz breiten Signale per [[#FW|culfw]] direkt dekodiert und dann per USB weitergegeben.&lt;br /&gt;
&lt;br /&gt;
Das CUL kann mittels des &#039;&#039;&#039;[[CUL (Modul)|CUL Moduls]]&#039;&#039;&#039; (00_CUL.pm) von FHEM angesprochen und somit wie eine FHZ1X00PC verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Das CUL kann auch im HM-Mode als HomeMatic Zentrale alternativ zur CCU oder dem [[HMLAN Konfigurator]] betrieben werden. Bei CULs älter als Version&amp;amp;#160;3 ist jedoch der Speicher zu klein, um die Software für FS20/FHT/S300/EM/HMS und HomeMatic zugleich im Speicher zu halten, hier muss man sich beim [[CUL an einer Fritzbox 7390 flashen|Flashen]] der Firmware für eine Protokollfamilie entscheiden. Mit zwei CULs ist aber auch der Mischbetrieb an einem FHEM Hostrechner möglich. Es ist jedoch nicht angeraten, den CUL bei HM-Geräten zu verwenden, siehe {{Link2Forum|Topic=68145|LinkText=Link}}&lt;br /&gt;
&lt;br /&gt;
Ebenso gibt es ein Modul zur Ansteuerung der [[MAX]]! Heizungsteuerung. Auch hier ist ein Mischbetrieb (MAX! und z.&amp;amp;nbsp;B. FS20 gleichzeitig über ein CUL) obwohl technisch nicht unmöglich {{Link2Forum|Topic=10510|LinkText=nicht angeraten}}.&lt;br /&gt;
&lt;br /&gt;
Ferner ist der Einsatz eines CUL als [[RFR CUL]] für den &#039;&#039;SlowRF&#039;&#039; Mode (jedoch nicht für den &#039;&#039;HomeMatic&#039;&#039; Mode) möglich, um die Reichweite zu erhöhen. Die Verbindung erfolgt hierbei über Funk, sodass keine USB Verbindung zum FHEM Hostrechner erforderlich ist.&lt;br /&gt;
&lt;br /&gt;
Alle diese Modi sind in der Original-[[#FW|culfw]] enthalten und werden z.B. durch die Wahl des &#039;&#039;rfmode&#039;&#039; eingestellt.&lt;br /&gt;
&lt;br /&gt;
Obwohl die nominale Betriebsfrequenz der FHT- und FS20-Komponenten 868,35 MHz beträgt, ist bei aktuellen CUL-Firmwareversionen zum Betrieb mit FHEM die Frequenz  868,30 MHz vorgesehen. Dies hat sich als Kompromiss zum besseren Empfang von EM1000EM (Energiemonitor) Geräten bewährt, &#039;&#039;&#039;obwohl&#039;&#039;&#039; diese nominal mit 868,360 MHz arbeiten. Praktisch ist die Genauigkeit der Sendefrequenz der meisten &#039;&#039;SlowRF&#039;&#039; Geräte wegen der primitiven Sender sehr schlecht und kann deutlich von der nominalen Frequenz abweichen.&lt;br /&gt;
&lt;br /&gt;
Frequenz und Bandbreite können daher im &#039;&#039;SlowRF&#039;&#039; Mode frei angepasst und somit für die örtlichen Empfangsgegebenheiten optimiert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Definition in FHEM ==&lt;br /&gt;
Das CUL wird definiert mit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;define &amp;lt;name&amp;gt; CUL &amp;lt;device&amp;gt; &amp;lt;FHTID&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
als z.b.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;define myCUL CUL /dev/ttyUSB0 0000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Da FHT zur Heizungssterung kaum noch eine Rolle spielen dürfte ist die Vergabe der FHT-ID 0000 sinnvoll, da das CUL dann nicht auf FHT Communication achtet.&lt;br /&gt;
&lt;br /&gt;
Was &amp;lt;device&amp;gt; ist hängt von der Art des CUL ab:&lt;br /&gt;
=== Geräte, die an USB angeschlossen sind (CUL/CUN) ===&lt;br /&gt;
&amp;lt;device&amp;gt; gibt die serielle Schnittstelle an, mit der der CUL kommuniziert. Der Name der seriellen Schnittstelle hängt von der gewählten Distribution und USB-Treiber ab, unter Linux ist dies das Kernel Modul cdc_acm und üblicherweise wird die Schnittstelle /dev/ttyACM0 genannt. Wenn die Linux Distribution über kein Kernel Modul cdc_acm verfügt, dann kann die Schnittstelle über usbserial mit dem folgenden Befehl erzeugt werden:&lt;br /&gt;
modprobe usbserial vendor=0x03eb product=0x204b&lt;br /&gt;
In diesem Fall ist diese Schnittstelle dann wahrscheinlich /dev/ttyUSB0.&lt;br /&gt;
&lt;br /&gt;
Wenn der Name der Schnittstelle ein @ enthält, kann nachfolgend die verwendete Baudrate angegeben werden, z.B.: &lt;br /&gt;
&lt;br /&gt;
 /dev/ttyACM0@38400.&lt;br /&gt;
&lt;br /&gt;
Wenn mehrer CULs an einem System betrieben werden sollen, ist es besser die CULs &amp;quot;by-ID&amp;quot; einzubinden. Es kann nämlich ansonsten sein, dass nach einem Neustart die CULs in anderen Reihenfolge zugewiesen werden als bei der Einrichtung. Insbesondere wenn man CUL868 und CUL433 zugleich betreibt ist das riskant, da falls die CULs sich vertauscht melden, 668 Schaltbefehle an das 433 CUL gehen und umgekehrt. Besser ist es dann die CULs an den USB Port anzustecken, dann mit &lt;br /&gt;
&lt;br /&gt;
 ls /dev/serial/by-id&lt;br /&gt;
&lt;br /&gt;
zu ermittlen wie sich diese melden, z.B.&lt;br /&gt;
&lt;br /&gt;
 usb-busware.de_CUL868-if00  usb-SHK_NANO_CUL_433-if00-port0&lt;br /&gt;
&lt;br /&gt;
und diese dann mit&lt;br /&gt;
&lt;br /&gt;
 define CUL1 CUL /dev/serial/by-id/usb-SHK_NANO_CUL_433-if00-port0@38400 0000&lt;br /&gt;
 define CUL2 CUL /dev/serial/by-id/usb-busware.de_CUL868-if00@38400 1234&lt;br /&gt;
&lt;br /&gt;
anzubinden. Damit ist sichergestellt, das &amp;quot;CUL1&amp;quot; immer das 433Mhz CUL ist.&lt;br /&gt;
&lt;br /&gt;
Wenn die Baudrate mit &amp;quot;directio&amp;quot; angegeben wird (z.B.: /dev/ttyACM0@directio), wird das Perl Modul Device::SerialPort nicht benötigt und FHEM öffnet die Schnittstelle mit einfachem Dateizugriff. Dies sollte dann funktionieren, wenn das Betriebssystem vernünftige Standardwerte für die serielle Schnittstelle verwendet, wie z.B. einige Linux Distributionen oder macOS.&lt;br /&gt;
&lt;br /&gt;
=== Geräte, die mit dem Netzwerk verbunden sind (CUN(O)) ===&lt;br /&gt;
&amp;lt;device&amp;gt; gibt die Hostadresse:Port des Gerätes an, z.B. 192.168.0.244:2323&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Weiteres in der commandref [https://fhem.de/commandref.html#CUL]&lt;br /&gt;
&lt;br /&gt;
== Hinweise zum Betrieb mit FHEM ==&lt;br /&gt;
&#039;&#039;&#039;Anmerkung:&#039;&#039;&#039; Nachfolgende Beispiele sind so wie dargestellt in die FHEM-Eingabezeile oder per Telnet auf FHEM zu übertragen und per &amp;lt;Taste&amp;gt;Enter&amp;lt;/Taste&amp;gt; abzuschicken (nicht &amp;quot;save&amp;quot; klicken); &#039;&#039;&#039;&#039;&#039;myCUL&#039;&#039;&#039;&#039;&#039; ist dabei nur ein Platzhalter und durch den Namen &#039;&#039;&#039;Ihres&#039;&#039;&#039; CUL zu ersetzen. &lt;br /&gt;
&lt;br /&gt;
* Ist Empfang eingeschaltet ?&lt;br /&gt;
*: &amp;lt;code&amp;gt; get myCUL raw C35&amp;lt;/code&amp;gt; (13 = ja, z.&amp;amp;nbsp;b.: C35 = 0D / 13)&lt;br /&gt;
* Auslesen der culfw Version:&lt;br /&gt;
*: &amp;lt;code&amp;gt;get myCUL raw V&amp;lt;/code&amp;gt;&lt;br /&gt;
* LED ausschalten (Achtung: Buchstabe l (L) vorweg für LED, keine Zahl 1)&lt;br /&gt;
*: &amp;lt;code&amp;gt;set myCUL raw l00&amp;lt;/code&amp;gt;&lt;br /&gt;
* LED einschalten&lt;br /&gt;
*: &amp;lt;code&amp;gt;set myCUL raw l01&amp;lt;/code&amp;gt; Blinkt bei Senden oder Empfangen von Paketen&lt;br /&gt;
* LED soll blinken (einmal in der Sekunde)&lt;br /&gt;
*: &amp;lt;code&amp;gt;set myCUL raw l02&amp;lt;/code&amp;gt;&lt;br /&gt;
* Reboot / Reset des CUL:&lt;br /&gt;
*: &amp;lt;code&amp;gt;set myCUL raw B00&amp;lt;/code&amp;gt; Andere Werte als 00 starten das CUL im Bootloader-Modus (=&amp;amp;gt; neue Firmware)&lt;br /&gt;
* Freie CUL Sendezeit ([[1% Regel]]):&lt;br /&gt;
*: &amp;lt;code&amp;gt;get myCUL raw X&amp;lt;/code&amp;gt; 2. Wert ist Sendezeit in 10ms Slots, ein FS20 Befehl braucht ca. 210ms (also 21 Slots), eine FHT Kommunikation wesentlich mehr. Alternativ auch &amp;lt;code&amp;gt;get myCUL credit10ms&amp;lt;/code&amp;gt; ergibt Sendezeit in 10ms Slots&lt;br /&gt;
* Freie Kapazität des FHT Buffers&lt;br /&gt;
*: &amp;lt;code&amp;gt; get myCUL raw T03&amp;lt;/code&amp;gt; Ergebnis Bytes in HEX. Leer = 4a&lt;br /&gt;
* Inhalt des FHT Buffers&lt;br /&gt;
*: &amp;lt;code&amp;gt; get myCUL raw T02&amp;lt;/code&amp;gt; (CUL V2 Buffer ist 74 Bytes groß, Platz für 14 bis 31 FHT Messages). Rückgabe n/a = Buffer ist leer&lt;br /&gt;
* Eingestellte [[Was_ist_der_Hauscode%3F|FHT-ID]]&lt;br /&gt;
*: &amp;lt;code&amp;gt; get myCUL raw T01&amp;lt;/code&amp;gt; &lt;br /&gt;
* Eingestellte Frequenz, Bandbreite etc. Ausgeben&lt;br /&gt;
*: &amp;lt;code&amp;gt; get myCUL ccconf&amp;lt;/code&amp;gt;. &amp;lt;br&amp;gt;Rückgabe z.&amp;amp;nbsp;B.: &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;myCUL ccconf =&amp;amp;gt; freq:868.300MHz bWidth:325kHz rAmpl:42dB sens:4dB&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* eingestelle Bandbreite erhöhen (z.B. auf 464 kHz, mehr hat meist keinen Sinn):&lt;br /&gt;
*:&amp;lt;code&amp;gt;set myCUL bWidth 464&amp;lt;/code&amp;gt;&lt;br /&gt;
* Einstellen der Sendestärke:&lt;br /&gt;
*: &amp;lt;code&amp;gt;set myCUL raw x09&amp;lt;/code&amp;gt; Einstellen der Sendeleistung.&lt;br /&gt;
&lt;br /&gt;
Gültige Werte für die Sendeleistung sind 00-09. Verwendet werden sollten nur die Werte 05-09, diese entsprechen&lt;br /&gt;
-10/-5/0/5/10 Sendeleistung in dB. Default ist x08 = +5dB. Bitte im Interesse von Nachbarn und der Abhörsicherheit den kleinsten problemlos funktionierenden Wert einstellen. Dies ist meistens x07 oder x08. Da speziell die Kommunikation mit den FHTs bidirektional ist, kann die Kommunikation durch höhere Werte oft nicht verbessert werden, da die FHTs selber dadurch nicht stärker senden. Besser versuchen, Lage und Antennenausrichtung des CUL zu verändern. &lt;br /&gt;
&lt;br /&gt;
Werte x00-x04 sind &#039;&#039;&#039;mit&#039;&#039;&#039; Ramping (&#039;&#039;sanfter&#039;&#039; Flankenanstieg anstatt Rechteck) und führen zum Verlust der Kommunikationsfähigkeit mit anderen CULs, z.&amp;amp;nbsp;B. [[RFR CUL]], da die CULs Rampingsignale nicht verstehen (FS20 / FHT und ähnliche Empfänger aber sehr wohl). &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Beim CUL im HomeMatic-Modus kann man (ohne Firmware-Modifikation) die Empfangs-/Sendeparameter &#039;&#039;&#039;nicht&#039;&#039;&#039; verstellen. Die üblichen freq/x09 etc. haben hier keine Wirkung ({{Link2Forum|Topic=10203|Message=57191|LinkText=Quelle}}).&lt;br /&gt;
&lt;br /&gt;
Weiterhin kann man zunehmend mehr Debuggingoutput auf dem CUL einschalten mit&amp;amp;#160;:&lt;br /&gt;
* &amp;lt;code&amp;gt; set CUL1 raw X61&amp;lt;/code&amp;gt; Communication wird im Detail angezeigt&lt;br /&gt;
* &amp;lt;code&amp;gt;set CUL1 raw X25&amp;lt;/code&amp;gt; auch checksum Fehler / unerkannte Protokolle werden gemeldet&lt;br /&gt;
* &amp;lt;code&amp;gt;set CUL1 raw X2F&amp;lt;/code&amp;gt; alle empfangenen Flanken werden gemeldet&lt;br /&gt;
* &amp;lt;code&amp;gt;set CUL1 raw X80&amp;lt;/code&amp;gt; RSSI / Signalstärke jeder Flanke wird gemeldet&lt;br /&gt;
* &amp;lt;code&amp;gt;set CUL1 raw X21&amp;lt;/code&amp;gt; normal Modus&lt;br /&gt;
&lt;br /&gt;
Achtung: Auf Groß- und Kleinschreibung des &amp;quot;x,X&amp;quot; achten!&lt;br /&gt;
&lt;br /&gt;
Die kompletten Kommandos mit Erklärung für CUL sind in der [http://culfw.de/commandref.html commandref] zu finden.&lt;br /&gt;
&lt;br /&gt;
== Versionen ==&lt;br /&gt;
Das CUL gibt es in mehreren Versionen, die sich überwiegend in Prozessor und Speicherkonfiguration unterscheiden.&lt;br /&gt;
&lt;br /&gt;
* CUL V1 - AT90USB162 Prozessor, 0,5 kB RAM, 16 kB Flashmemory, 0,5 kB EEPROM. Einsatzfähigkeit unbekannt (aber vermutlich wie V2). Wird nicht mehr hergestellt.&lt;br /&gt;
* CUL V2 - AT90USB162 Prozessor, 0,5 kB RAM, 16 kB Flashmemory, 0,5 kB EEPROM. Einsatzfähig. Der Flashspeicher ist jedoch zu klein für eine culfw (CUL Firmware), die Code für &#039;&#039;SlowRF&#039;&#039; Geräte und zugleich &#039;&#039;HomeMatic&#039;&#039; Geräte enthält. Es muss also vor dem Flashen der Firmware zwischen zwei jeweils reduzierten Versionen gewählt werden. Da ein CUL ohnehin nicht beide Sendemodi &#039;&#039;&#039;zeitgleich&#039;&#039;&#039; betreiben kann, ist dies keine wirkliche Einschränkung. Wird nicht mehr hergestellt.&lt;br /&gt;
* CUL V3 - ATMega32U4 Prozessor, 2,5 kB RAM, 32 kB Flashmemory, 1 kB EEPROM). Voll einsatzfähig.&lt;br /&gt;
* CUL V4 - ATMega32U2 Prozessor, 1 kB RAM, 32 kB Flashmemory, 1 kB EEPROM. Voll einsatzfähig. Genaugenommen ein &amp;quot;Sparmodell&amp;quot; des V3, um Lieferengpässe des ATMega32U4 Prozessors zu umgehen. Der reduzierte RAM-Speicher verursacht (zumindest gegenwärtig) beim Betrieb mit culfw und FHEM keine Einschränkungen oder Nachteile. Achtung: Flashen des CULv4 setzt DFU-Programmer 0.5.4 oder höher voraus.&lt;br /&gt;
&lt;br /&gt;
Die für die aktuellen Modelle lieferbare Abschirmung ist in der Regel nicht notwendig.&lt;br /&gt;
&lt;br /&gt;
== Firmware {{Anker|FW}} ==&lt;br /&gt;
Die für den CUL und verwandte Hardware wie [[CUN]] und CUR im Zusammenhang mit FHEM überwiegend eingesetzte Firmware culfw findet sich auf der&lt;br /&gt;
* [http://culfw.de CUL Firmware Homepage]&lt;br /&gt;
Dort kann die jeweils aktuelle Version nachgesehen und heruntergeladen werden.&lt;br /&gt;
Alte Stände, Version für Entwickler und ganz aktuelle Änderungen findet man auf der&lt;br /&gt;
* [https://sourceforge.net/projects/culfw/ Sourceforge Projektseite der culfw]&lt;br /&gt;
Hier kann man sich z.B. mit&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
svn co svn://svn.code.sf.net/p/culfw/code/trunk/culfw&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
die aktuelle Version laden.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich gibt es [&amp;quot;leider&amp;quot;...!?] folgende Forks der originalen culfw mit dortigen speziellen Anpassungen/Abweichungen:&lt;br /&gt;
* [https://github.com/heliflieger/a-culfw Alternative culfw for cul devices] auf GitHub und im {{Link2Forum|Topic=35064|LinkText=Forum}} mit Anpassungen unter anderem für InterTechno. Hier könnte es aber zu Funktionseinschränkungen bei anderen Protokollen kommen. In dieser Version ist auch ein Portierung auf ARM-Prozessoren enthalten (siehe {{Link2Forum|Topic=38404|LinkText=Forum}}) mit der die CUL-Firmware auch auf dem HM-CFG-USB-2 und dem [[MAX]] Cube betrieben werden kann.&lt;br /&gt;
* {{Link2Forum|Topic=24436|LinkText=Timestamp Firmware}} mit speziellen Anpassungen für HomeMatic. Bei HomeMatic ist das Timing der Telegramme entscheidend sonst kann es zu &amp;quot;MISSING ACK&amp;quot; bzw. &amp;quot;RESPONSE TIMEOUT:RegisterRead&amp;quot; u.ä. Meldungen kommen.&lt;br /&gt;
&lt;br /&gt;
Alternativ zu den [a]culfw-Firmwares gibt es [[SIGNALduino]] (zumindest auf manchen Hardware-Konstellationen umgeflashed direkt anwendbar und 1:1 lauffähig; inkl. normierter/kompatibler Weiterleitung/Dispatching auf die gleichen zentralen Geräte-Protokoll-Dekodier-Module, die auch von anderer Transceiver-Hardware/-Firmware - CUL etc. - ähnlich angebunden werden (sollen); somit Kommunikation mit vielen Funk-Komponenten auch dort idealerweise immer 1:1 funktionierend).&lt;br /&gt;
&lt;br /&gt;
Generell ist das Angebot an Speicherplatz auf dem im CUL verwendeten ATMega32U2 sehr eingeschränkt, wodurch Erweiterungen ohne Abstriche an anderer Stelle kaum mehr möglich sind. Es wird also die optimale CUL-Firmware für alle Zwecke nie geben, so dass man die Auswahl am konkreten Bedarf klären muss. Wer die Firmware selbst compiliert kann gezielt Funktionen die nicht benötigt werden weglassen und dafür ggf. Funktionen die sonst nicht eingefügt sind hinzufügen.&lt;br /&gt;
&lt;br /&gt;
== Sendefrequenz ==&lt;br /&gt;
Das CUL gibt es in Ausführungen für 868 und 433 MHz. &lt;br /&gt;
Die Sende- und Empfangsfrequenz des CUL sind in weiten Bereichen einstellbar, im &#039;&#039;SlowRF&#039;&#039; Mode auch durch direkte Befehle aus FHEM (im &#039;&#039;HomeMatic&#039;&#039; Mode derzeit nicht unterstützt). Der bauliche Unterschied der 868 und 433 MHz CULs ist ein auf das Frequenzband richtig abgestimmter HF-Eingangskreis inklusive Antennenlänge.&lt;br /&gt;
&lt;br /&gt;
Es ist durchaus möglich, ein 868 MHz CUL auf 433 MHz einzustellen. Da dann aber die HF-Eingangskreis-Abstimmung und Antennenlänge nicht korrekt sind, ist Empfangs- und Sendeleistung suboptimal, die Reichweite sinkt. Dennoch wird diese Möglichkeit des freien Einstellens durch das FHEM Intertechnomodul genutzt, da Intertechnokomponenten mit 433 MHz arbeiten. Dazu wird beim Senden eines Intertechno-Befehls die Frequenz eines 868 MHz CULs kurz umgestellt.&lt;br /&gt;
Besser ist aber die Nutzung eines dedizierten 433 MHz CUL für Intertechno.&lt;br /&gt;
&lt;br /&gt;
== Antenne ==&lt;br /&gt;
Der CUL ist mit RP-SMA-Stecker für die Antenne aber auch mit angelöteter Drahtantenne lieferbar.&lt;br /&gt;
Funktional besteht kein Unterschied: auch die &amp;quot;richtige&amp;quot; Antenne ist (in diesem Fall) nur ein Draht, jedoch  gummiummantelt und eventuell mit einem Knickgelenk und einem Schraubanschluss versehen, d.h. die Drahtantenne sieht nur unschön aus.&lt;br /&gt;
&lt;br /&gt;
Bei einer Antenne sind zwei Dinge auseinanderzuhalten: Einmal die Anpassung sowie die Abstrahlungscharakteristik. &lt;br /&gt;
* &#039;&#039;&#039;Anpassung&#039;&#039;&#039; Eine Antenne ist typischerweise für eine bestimmte Frequenz konstruiert. Wenn die Konstruktionsfrequenz nicht mit der Frequenz übereinstimmt, auf der die Antenne senden und empfangen soll, ist die Anpassung schlecht. Dies führt zu Verlusten bei der Übertragung. Typische Kennwerte für eine Anpassung sind das Stehwellenverhältnis (SWR) sowie die Impedanz. Beide Größen können per Messgerät bestimmt werden, inzwischen gibt es für 150 Euro entsprechende Geräte. Wer eine Antenne selbst konstruiert, sollte ein solches Gerät zumindest ausborgen, um seine Antenne zu bestimmen.&lt;br /&gt;
* &#039;&#039;&#039;Abstrahlung&#039;&#039;&#039; Es gibt mehrere Arten von Antennen, die sich in der Art der Strahlung unterscheiden. Richtantennen versuchen Signale nur in eine bestimmte Richtung zu versenden, Dipole versuchen in die gesamte Umgebung zu senden bzw zu empfangen. Während es bei Anpassung nur die Kategorien &amp;quot;gut&amp;quot; und &amp;quot;schlecht&amp;quot; gibt, ist bei der Abstrahlung eher auf &amp;quot;zweckmäßig&amp;quot; und &amp;quot;unzweckmäßig&amp;quot; zu achten.&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich hängen Abstrahlung und Antennengewinn zusammen. Die Energie, die eine (perfekt angepasste) Antenne strahlt, wird durch die Antennenkonstruktion weder verdoppelt oder halbiert, sondern nur gebündelt. Während ein Dipol in alle Richtungen abstrahlt, bündelt eine Richtantenne dieselbe Energie in eine bestimmte Richtung. Insofern muss man bei der Antennenkonstruktion überlegen, woher die Signale kommen bzw wohin sie gehen sollen. Jeder Antennengewinn geht einher mit einer Einschränkung bei der Sende/Empfangsrichtung, es sei denn, man verbessert die Anpassung der Antenne. &lt;br /&gt;
&lt;br /&gt;
Leider kann man auch bei gekauften Antennen nicht davon ausgehen, dass sie korrekt angepasst sind. Es gibt Berichte im Forum, wonach es insbesondere bei 433 MHz-Antennen eher ein Glücksspiel ist, ob man eine vernünftig angepasste Antenne bekommt. Daher kann es durchaus sein, dass eine Eigenbauantenne wesentlich bessere Werte liefert als eine käuflich erworbene. &lt;br /&gt;
&lt;br /&gt;
Eine zentrale Größe bei der Anpassung ist die Länge der Antenne. Wenn man einen Dipol verwendet, muss diese zweckmäßigerweise so groß sein wie ein Viertel der Wellenlänge (&amp;quot;Lambda/4&amp;quot;). Die sind bei 868 MHz ca. 8,6 Zentimeter. Antennenlängen die länger oder kürzer sind verschlechtern in der Regel die Anpassung. Daher ist eine z.B. 10 Zentimeter lange Antenne (obwohl länger) schlechter als 1/4 Lambda mit 8,6 Zentimeter.&lt;br /&gt;
&lt;br /&gt;
Weitere Informationen sind im {{Link2Forum|Topic=93021|LinkText=Antennenthread}} des Forums zu finden. &lt;br /&gt;
&lt;br /&gt;
Über besondere Antennenkonstruktionen (bitte nach Colinear, Jpole, Yagi suchen) oder Antennen die &amp;quot;Lambda/2&amp;quot; oder gar &amp;quot;Lambda&amp;quot; lang sind  (also ca. 17,2 bzw. 34,5 Zentimeter) kann ein höherer Gewinn erreicht werden. Einher geht aber gleichzeitig eine stärkere Richtwirkung der Antenne. Je kürzer die Antenne, desto kugelförmiger die Abstrahlung. Bei längeren Antennen wird die Abstrahlung mehr und mehr zylinderähnlich, also mit horizontaler Richtwirkung (und in die Richtung ist das Signal dann stärker, daher der Antennen&amp;quot;gewinn&amp;quot;).&lt;br /&gt;
Das hat auch Nachteile, speziell wenn man auch &amp;quot;nach oben&amp;quot; funken will. Besonders wenn man Antennen länger als eine λ/4 Antenne (8,6 Zentimeter) in einem mehretagigen Haus verwenden will, muss man diese daher in der Regel waagerecht/horizontal ausrichten, da alles was in Richtung der Spitze (und dem Fuss) der Antenne liegt schlecht empfangen wird.&lt;br /&gt;
&lt;br /&gt;
Daher: Je mehr Gewinn die Antenne aufweist, desto besser ist die Sende und Empfangsleistung, aber desto mehr Gedanken muss man sich um die Ausrichtung der Antenne machen, um alle Geräte zu empfangen / zu erreichen. &amp;quot;Mehr dB&amp;quot; und speziell &amp;quot;länger&amp;quot; ist also nicht automatisch besser. &lt;br /&gt;
&lt;br /&gt;
Zu beachten ist auch, dass die Sendeleistung der Module gesetzlich geregelt ist und Spezialantennen mit höherem Gewinn ggf. nur an Empfängern erlaubt sind.&lt;br /&gt;
&lt;br /&gt;
Falls man den CUL mit RP-SMA Stecker geordert hat, aber keine passend lange RP-SMA-Antenne verfügbar ist, kann (nur für erste Tests) auch eine abschraubbare Antenne für 802.11b/g WLAN-Geräte (2,4&amp;amp;nbsp;GHz) benutzt werden, so diese anschlusstechnisch auf den RP-SMA-Stecker des CUL passt (dies funktioniert zumindest mit FS20- und EM-Geräten). Deren Länge ist wie oben diskutiert aber nicht optimal, besser ist auf jeden Fall eine speziell auf den Einsatzzweck (Frequenz) abgestimmte Antenne.&lt;br /&gt;
&lt;br /&gt;
== Antennenlänge ==&lt;br /&gt;
Die genauen Antennenlängen sind praktisch schwer zu ermitteln, da auch Zuleitung auf dem CUL zugerechnet werden müssten und ggf Dämpfungen (also z.B. Durchführung der Antenne durch ein Gehäuse, oder gebogene Antennen) die Antennenlänge weiter beeinflussen. Gleichzeitig haben schon Abweichungen von wenigen Millimetern messbaren Einfluss. Die Antennenlänge ist daher immer nur ein Kompromiss.&lt;br /&gt;
&lt;br /&gt;
Exakt berechnet ohne Störeinflüsse wären folgende Antennenlängen nutzbar:&lt;br /&gt;
 868,35 MHz (z.B. HM, FS20, FHT …)&lt;br /&gt;
 1/4 Lambda = 8,63 Zentimeter &lt;br /&gt;
 1/2 Lambda = 17,26 Zentimeter &lt;br /&gt;
 1 Lambda = 34,52 Zentimeter  (Bereits sehr hohe Richtwirkung)&lt;br /&gt;
&lt;br /&gt;
433,92 MHz  (z.B. Intertechno …)&lt;br /&gt;
 1/4 Lambda = 17,27 Zentimeter &lt;br /&gt;
 1/2 Lambda = 34,54 Zentimeter &lt;br /&gt;
&lt;br /&gt;
Folgende Antennenlängen bieten sich praktisch an, diese sind immer etwas kürzer als die optimale Länge, dies wird z.T. durch Leiterlänge im CUL kompensiert.:&lt;br /&gt;
&lt;br /&gt;
 8,6 Zentimeter als 1/4 Lambda für 868,35 MHz&lt;br /&gt;
 17,2 Zentimeter als 1/2 Lambda für 868,35 MHz und zugleich 1/4 Lambda für 433,92 MHz&lt;br /&gt;
 34,5 Zentimeter als Lambda für 868,35 MHz und zugleich 1/2 Lambda für 433,92 MHz&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
&lt;br /&gt;
=== RF-Tuning ===&lt;br /&gt;
Im Gegensatz zu den original FHZ-Zentralen ist das CUL recht schmalbandig, d.h. die Sende- und Empfangsfrequenz wird genauer eingehalten als z.&amp;amp;nbsp;B. bei einer FHZ1x00PC. Dies kann im Zusammenhang mit den eher ungenauen Sendern (z.&amp;amp;nbsp;B. der FHT Raumregler) zu Empfangsproblemen führen. Es kann daher mitunter sinnvoll sein, die Sende- und Empfangsbandbreite des CUL etwas zu erhöhen. Dies senkt jedoch gleichzeitig die Empfindlichkeit.&lt;br /&gt;
&lt;br /&gt;
Bei Empfangsproblemen von z.&amp;amp;nbsp;B. HEM-Sensoren oder dem S300TH kann man folgendes testen:&lt;br /&gt;
&lt;br /&gt;
* Man kann die Frequenz des CUL auf genau 868,35 MHz einstellen. Standardmäßig ist hier aus Kompatibilitätsgründen 868,30 MHz eingestellt. Diese Einstellung wird fest im NVRAM gespeichert und braucht nur einmal vorgenommen zu werden.&lt;br /&gt;
*: &amp;lt;code&amp;gt;set CUL freq 868.350&amp;lt;/code&amp;gt;&lt;br /&gt;
* Es ist möglich die &amp;quot;decision boundary&amp;quot; zu vergrößern, frei beschrieben: die &amp;quot;Entscheidungsgrenze&amp;quot; ob die empfangene Signalflanke digital &amp;quot;0&amp;quot; oder &amp;quot;1&amp;quot; darstellte ({{Link2Forum|Topic=8572|Message=44388|LinkText=siehe Diskussion hier}}). Möglich sind die Werte &amp;quot;4&amp;quot;, &amp;quot;8&amp;quot; und &amp;quot;16&amp;quot;. Default-Einstellung ist hier &amp;quot;4&amp;quot;. Zur Steigerung der Empfangsqualität soll es hilfreich sein, hier &amp;quot;8&amp;quot; einzustellen. Mitunter bringt jedoch erst die Einstellung auf &amp;quot;16&amp;quot; signifikante Verbesserungen beim Empfang von S300TH-Sensoren.&lt;br /&gt;
*: &amp;lt;code&amp;gt;set CUL sens 8&amp;lt;/code&amp;gt;&lt;br /&gt;
* Oft hilft auch, die Bandbreite auf z.&amp;amp;nbsp;B. 464 kHz aufzuweiten.&lt;br /&gt;
*: &amp;lt;code&amp;gt;set CUL bWidth 464&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Selbstbau-/Bastelprojekte ==&lt;br /&gt;
Innerhalb der FHEM-Community werden mittlerweile diverse Bastelprojekte zum Selbstbau eines CUL betrieben. Eine Auswahl dieser Projekte:&lt;br /&gt;
* [[Selbstbau CUL]]&lt;br /&gt;
* [[FHEMduino]]&lt;br /&gt;
* [[SIGNALduino]]&lt;br /&gt;
* [[MapleCUN]] mit STM32 Mikrocontroller&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* Hersteller / Bezugsquelle für CUL: [http://www.busware.de/tiki-index.php?page=CUL busware.de]&lt;br /&gt;
* Google groups [https://groups.google.com/group/cul-fans/ CUL fans], mittlerweile durch das Board {{Link2Forum|Area=cul-fans}} im FHEM Forum ergänzt/ersetzt&lt;br /&gt;
* CUL commandref [https://fhem.de/commandref.html#CUL]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Interfaces]]&lt;br /&gt;
[[Kategorie:CUL|!]]&lt;br /&gt;
[[Kategorie:433MHz]]&lt;br /&gt;
[[Kategorie:868MHz]]&lt;/div&gt;</summary>
		<author><name>Soulman</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=CUL&amp;diff=40670</id>
		<title>CUL</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=CUL&amp;diff=40670"/>
		<updated>2026-01-05T18:52:20Z</updated>

		<summary type="html">&lt;p&gt;Soulman: /* Geräte, die an USB angeschlossen sind (CUL/CUN) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein &#039;&#039;&#039;CUL&#039;&#039;&#039; (&#039;&#039;&#039;C&#039;&#039;&#039;C1101 &#039;&#039;&#039;U&#039;&#039;&#039;SB &#039;&#039;&#039;L&#039;&#039;&#039;ite) ist eine Radiofrequenz/USB-Schnittstelle bestehend aus einem USB-Dongle mit externer [[CUL Ausstattung|Antenne]]. Im USB-Stecker kann ein 8&amp;amp;nbsp;bit Atmel Prozessor die im ISM/SRD-Band empfangenen RF-Daten onboard vorverarbeiten. Je nach aufgespielter [[#FW|Firmware]] kann das CUL verschiedene 868MHz [[CUL HomeMatic und FS20|Protokolle]] empfangen und senden, insbesondere die FS20/FHT/S300/EM/HMS Protokollfamilien. Durch eine kurzzeitige Umschaltung auf 433&amp;amp;nbsp;MHz sind weitere Protokolle zugänglich, z.&amp;amp;nbsp;B. Intertechno, viele Baumarkt-Funksteckdosen.  &lt;br /&gt;
&lt;br /&gt;
== CUL HW ==&lt;br /&gt;
Im Zusammenhang mit diesem Artikel ist vor allem vom &amp;quot;echten&amp;quot; CUL die Rede, als dem USB Hardware-Dongle des Hersteller Busware. Es gibt aber diverse andere Hardware-Schnittstellen, die sich ebenfalls wie ein CUL verhalten, z.b. Netzwerkattached Module ([[CUN]]O), Module zum direkten Aufstecken auch einen Raspberry Pi ([[COC]]), und auf Arduino basierende Lösungen ([[SIGNALduino]]).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Einführung ==&lt;br /&gt;
Die Firmware (culfw) ist quelloffen.  Sie wird auch von verwandten Schnittstellen verwendet, siehe [[CUNO]] (RF+OneWire/LAN-Übergang), [[COC]] (RF+OneWire/Rasberrybus-Übergang), CSM usw.&lt;br /&gt;
&lt;br /&gt;
Im Umfeld von FS20/FHT/EM/S300/HMS (&amp;quot;[[Rfmode|rfmode]] - [[SlowRF]]&amp;quot;) werden die amplitudenmodulierten 1&amp;amp;nbsp;kHz breiten Signale per [[#FW|culfw]] direkt dekodiert und dann per USB weitergegeben.&lt;br /&gt;
&lt;br /&gt;
Das CUL kann mittels des &#039;&#039;&#039;[[CUL (Modul)|CUL Moduls]]&#039;&#039;&#039; (00_CUL.pm) von FHEM angesprochen und somit wie eine FHZ1X00PC verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Das CUL kann auch im HM-Mode als HomeMatic Zentrale alternativ zur CCU oder dem [[HMLAN Konfigurator]] betrieben werden. Bei CULs älter als Version&amp;amp;#160;3 ist jedoch der Speicher zu klein, um die Software für FS20/FHT/S300/EM/HMS und HomeMatic zugleich im Speicher zu halten, hier muss man sich beim [[CUL an einer Fritzbox 7390 flashen|Flashen]] der Firmware für eine Protokollfamilie entscheiden. Mit zwei CULs ist aber auch der Mischbetrieb an einem FHEM Hostrechner möglich. Es ist jedoch nicht angeraten, den CUL bei HM-Geräten zu verwenden, siehe {{Link2Forum|Topic=68145|LinkText=Link}}&lt;br /&gt;
&lt;br /&gt;
Ebenso gibt es ein Modul zur Ansteuerung der [[MAX]]! Heizungsteuerung. Auch hier ist ein Mischbetrieb (MAX! und z.&amp;amp;nbsp;B. FS20 gleichzeitig über ein CUL) obwohl technisch nicht unmöglich {{Link2Forum|Topic=10510|LinkText=nicht angeraten}}.&lt;br /&gt;
&lt;br /&gt;
Ferner ist der Einsatz eines CUL als [[RFR CUL]] für den &#039;&#039;SlowRF&#039;&#039; Mode (jedoch nicht für den &#039;&#039;HomeMatic&#039;&#039; Mode) möglich, um die Reichweite zu erhöhen. Die Verbindung erfolgt hierbei über Funk, sodass keine USB Verbindung zum FHEM Hostrechner erforderlich ist.&lt;br /&gt;
&lt;br /&gt;
Alle diese Modi sind in der Original-[[#FW|culfw]] enthalten und werden z.B. durch die Wahl des &#039;&#039;rfmode&#039;&#039; eingestellt.&lt;br /&gt;
&lt;br /&gt;
Obwohl die nominale Betriebsfrequenz der FHT- und FS20-Komponenten 868,35 MHz beträgt, ist bei aktuellen CUL-Firmwareversionen zum Betrieb mit FHEM die Frequenz  868,30 MHz vorgesehen. Dies hat sich als Kompromiss zum besseren Empfang von EM1000EM (Energiemonitor) Geräten bewährt, &#039;&#039;&#039;obwohl&#039;&#039;&#039; diese nominal mit 868,360 MHz arbeiten. Praktisch ist die Genauigkeit der Sendefrequenz der meisten &#039;&#039;SlowRF&#039;&#039; Geräte wegen der primitiven Sender sehr schlecht und kann deutlich von der nominalen Frequenz abweichen.&lt;br /&gt;
&lt;br /&gt;
Frequenz und Bandbreite können daher im &#039;&#039;SlowRF&#039;&#039; Mode frei angepasst und somit für die örtlichen Empfangsgegebenheiten optimiert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Definition in FHEM ==&lt;br /&gt;
Das CUL wird definiert mit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;define &amp;lt;name&amp;gt; CUL &amp;lt;device&amp;gt; &amp;lt;FHTID&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
als z.b.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;define myCUL CUL /dev/ttyUSB0 0000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Da FHT zur Heizungssterung kaum noch eine Rolle spielen dürfte ist die Vergabe der FHT-ID 0000 sinnvoll, da das CUL dann nicht auf FHT Communication achtet.&lt;br /&gt;
&lt;br /&gt;
Was &amp;lt;device&amp;gt; ist hängt von der Art des CUL ab:&lt;br /&gt;
=== Geräte, die an USB angeschlossen sind (CUL/CUN) ===&lt;br /&gt;
&amp;lt;device&amp;gt; gibt die serielle Schnittstelle an, mit der der CUL kommuniziert. Der Name der seriellen Schnittstelle hängt von der gewählten Distribution und USB-Treiber ab, unter Linux ist dies das Kernel Modul cdc_acm und üblicherweise wird die Schnittstelle /dev/ttyACM0 genannt. Wenn die Linux Distribution über kein Kernel Modul cdc_acm verfügt, dann kann die Schnittstelle über usbserial mit dem folgenden Befehl erzeugt werden:&lt;br /&gt;
modprobe usbserial vendor=0x03eb product=0x204b&lt;br /&gt;
In diesem Fall ist diese Schnittstelle dann wahrscheinlich /dev/ttyUSB0.&lt;br /&gt;
&lt;br /&gt;
Wenn der Name der Schnittstelle ein @ enthält, kann nachfolgend die verwendete Baudrate angegeben werden, z.B.: &lt;br /&gt;
&lt;br /&gt;
 /dev/ttyACM0@38400.&lt;br /&gt;
&lt;br /&gt;
Wenn mehrer CULs an einem System betrieben werden sollen, ist es besser die CULs &amp;quot;by-ID&amp;quot; einzubinden. Es kann nämlich ansonsten sein, dass nach einem Neustart die CULs in anderen Reihenfolge zugewiesen werden als bei der Einrichtung. Insbesondere wenn man CUL868 und CUL433 zugleich betreibt ist das riskant, da falls die CULs sich vertauscht melden, 668 Schaltbefehle an das 433 CUL gehen und umgekehrt. Besser ist es dann die CULs an den USB Port anzustecken, dann mit &lt;br /&gt;
&lt;br /&gt;
 ls /dev/serial/by-id&lt;br /&gt;
&lt;br /&gt;
zu ermittlen wie sich diese melden, z.B.&lt;br /&gt;
&lt;br /&gt;
 usb-busware.de_CUL868-if00  usb-SHK_NANO_CUL_433-if00-port0&lt;br /&gt;
&lt;br /&gt;
und diese dann mit&lt;br /&gt;
&lt;br /&gt;
 define CUL1 CUL /dev/serial/by-id/usb-SHK_NANO_CUL_433-if00-port0@38400 0000&lt;br /&gt;
 define CUL2 CUL /dev/serial/by-id/usb-busware.de_CUL868-if00@38400 1234&lt;br /&gt;
&lt;br /&gt;
anzubinden. Damit ist sichergestellt, das &amp;quot;CUL1&amp;quot; immer das 433Mhz CUL ist.&lt;br /&gt;
Dabei ist allerdings zu beachten, dass original Busware CULs sich immer gleich melden.&lt;br /&gt;
Wenn man also z.b. mehrere Busware 868Mhz CULs einsetzen will, werden die sich alle mit &lt;br /&gt;
 usb-busware.de_CUL868-if00 &lt;br /&gt;
melden und sind nicht unterscheidbar, während nano CULs und ähnlich oft eigene Seriennummern haben.&lt;br /&gt;
&lt;br /&gt;
Wenn die Baudrate mit &amp;quot;directio&amp;quot; angegeben wird (z.B.: /dev/ttyACM0@directio), wird das Perl Modul Device::SerialPort nicht benötigt und FHEM öffnet die Schnittstelle mit einfachem Dateizugriff. Dies sollte dann funktionieren, wenn das Betriebssystem vernünftige Standardwerte für die serielle Schnittstelle verwendet, wie z.B. einige Linux Distributionen oder macOS.&lt;br /&gt;
&lt;br /&gt;
=== Geräte, die mit dem Netzwerk verbunden sind (CUN(O)) ===&lt;br /&gt;
&amp;lt;device&amp;gt; gibt die Hostadresse:Port des Gerätes an, z.B. 192.168.0.244:2323&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Weiteres in der commandref [https://fhem.de/commandref.html#CUL]&lt;br /&gt;
&lt;br /&gt;
== Hinweise zum Betrieb mit FHEM ==&lt;br /&gt;
&#039;&#039;&#039;Anmerkung:&#039;&#039;&#039; Nachfolgende Beispiele sind so wie dargestellt in die FHEM-Eingabezeile oder per Telnet auf FHEM zu übertragen und per &amp;lt;Taste&amp;gt;Enter&amp;lt;/Taste&amp;gt; abzuschicken (nicht &amp;quot;save&amp;quot; klicken); &#039;&#039;&#039;&#039;&#039;myCUL&#039;&#039;&#039;&#039;&#039; ist dabei nur ein Platzhalter und durch den Namen &#039;&#039;&#039;Ihres&#039;&#039;&#039; CUL zu ersetzen. &lt;br /&gt;
&lt;br /&gt;
* Ist Empfang eingeschaltet ?&lt;br /&gt;
*: &amp;lt;code&amp;gt; get myCUL raw C35&amp;lt;/code&amp;gt; (13 = ja, z.&amp;amp;nbsp;b.: C35 = 0D / 13)&lt;br /&gt;
* Auslesen der culfw Version:&lt;br /&gt;
*: &amp;lt;code&amp;gt;get myCUL raw V&amp;lt;/code&amp;gt;&lt;br /&gt;
* LED ausschalten (Achtung: Buchstabe l (L) vorweg für LED, keine Zahl 1)&lt;br /&gt;
*: &amp;lt;code&amp;gt;set myCUL raw l00&amp;lt;/code&amp;gt;&lt;br /&gt;
* LED einschalten&lt;br /&gt;
*: &amp;lt;code&amp;gt;set myCUL raw l01&amp;lt;/code&amp;gt; Blinkt bei Senden oder Empfangen von Paketen&lt;br /&gt;
* LED soll blinken (einmal in der Sekunde)&lt;br /&gt;
*: &amp;lt;code&amp;gt;set myCUL raw l02&amp;lt;/code&amp;gt;&lt;br /&gt;
* Reboot / Reset des CUL:&lt;br /&gt;
*: &amp;lt;code&amp;gt;set myCUL raw B00&amp;lt;/code&amp;gt; Andere Werte als 00 starten das CUL im Bootloader-Modus (=&amp;amp;gt; neue Firmware)&lt;br /&gt;
* Freie CUL Sendezeit ([[1% Regel]]):&lt;br /&gt;
*: &amp;lt;code&amp;gt;get myCUL raw X&amp;lt;/code&amp;gt; 2. Wert ist Sendezeit in 10ms Slots, ein FS20 Befehl braucht ca. 210ms (also 21 Slots), eine FHT Kommunikation wesentlich mehr. Alternativ auch &amp;lt;code&amp;gt;get myCUL credit10ms&amp;lt;/code&amp;gt; ergibt Sendezeit in 10ms Slots&lt;br /&gt;
* Freie Kapazität des FHT Buffers&lt;br /&gt;
*: &amp;lt;code&amp;gt; get myCUL raw T03&amp;lt;/code&amp;gt; Ergebnis Bytes in HEX. Leer = 4a&lt;br /&gt;
* Inhalt des FHT Buffers&lt;br /&gt;
*: &amp;lt;code&amp;gt; get myCUL raw T02&amp;lt;/code&amp;gt; (CUL V2 Buffer ist 74 Bytes groß, Platz für 14 bis 31 FHT Messages). Rückgabe n/a = Buffer ist leer&lt;br /&gt;
* Eingestellte [[Was_ist_der_Hauscode%3F|FHT-ID]]&lt;br /&gt;
*: &amp;lt;code&amp;gt; get myCUL raw T01&amp;lt;/code&amp;gt; &lt;br /&gt;
* Eingestellte Frequenz, Bandbreite etc. Ausgeben&lt;br /&gt;
*: &amp;lt;code&amp;gt; get myCUL ccconf&amp;lt;/code&amp;gt;. &amp;lt;br&amp;gt;Rückgabe z.&amp;amp;nbsp;B.: &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;myCUL ccconf =&amp;amp;gt; freq:868.300MHz bWidth:325kHz rAmpl:42dB sens:4dB&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* eingestelle Bandbreite erhöhen (z.B. auf 464 kHz, mehr hat meist keinen Sinn):&lt;br /&gt;
*:&amp;lt;code&amp;gt;set myCUL bWidth 464&amp;lt;/code&amp;gt;&lt;br /&gt;
* Einstellen der Sendestärke:&lt;br /&gt;
*: &amp;lt;code&amp;gt;set myCUL raw x09&amp;lt;/code&amp;gt; Einstellen der Sendeleistung.&lt;br /&gt;
&lt;br /&gt;
Gültige Werte für die Sendeleistung sind 00-09. Verwendet werden sollten nur die Werte 05-09, diese entsprechen&lt;br /&gt;
-10/-5/0/5/10 Sendeleistung in dB. Default ist x08 = +5dB. Bitte im Interesse von Nachbarn und der Abhörsicherheit den kleinsten problemlos funktionierenden Wert einstellen. Dies ist meistens x07 oder x08. Da speziell die Kommunikation mit den FHTs bidirektional ist, kann die Kommunikation durch höhere Werte oft nicht verbessert werden, da die FHTs selber dadurch nicht stärker senden. Besser versuchen, Lage und Antennenausrichtung des CUL zu verändern. &lt;br /&gt;
&lt;br /&gt;
Werte x00-x04 sind &#039;&#039;&#039;mit&#039;&#039;&#039; Ramping (&#039;&#039;sanfter&#039;&#039; Flankenanstieg anstatt Rechteck) und führen zum Verlust der Kommunikationsfähigkeit mit anderen CULs, z.&amp;amp;nbsp;B. [[RFR CUL]], da die CULs Rampingsignale nicht verstehen (FS20 / FHT und ähnliche Empfänger aber sehr wohl). &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Beim CUL im HomeMatic-Modus kann man (ohne Firmware-Modifikation) die Empfangs-/Sendeparameter &#039;&#039;&#039;nicht&#039;&#039;&#039; verstellen. Die üblichen freq/x09 etc. haben hier keine Wirkung ({{Link2Forum|Topic=10203|Message=57191|LinkText=Quelle}}).&lt;br /&gt;
&lt;br /&gt;
Weiterhin kann man zunehmend mehr Debuggingoutput auf dem CUL einschalten mit&amp;amp;#160;:&lt;br /&gt;
* &amp;lt;code&amp;gt; set CUL1 raw X61&amp;lt;/code&amp;gt; Communication wird im Detail angezeigt&lt;br /&gt;
* &amp;lt;code&amp;gt;set CUL1 raw X25&amp;lt;/code&amp;gt; auch checksum Fehler / unerkannte Protokolle werden gemeldet&lt;br /&gt;
* &amp;lt;code&amp;gt;set CUL1 raw X2F&amp;lt;/code&amp;gt; alle empfangenen Flanken werden gemeldet&lt;br /&gt;
* &amp;lt;code&amp;gt;set CUL1 raw X80&amp;lt;/code&amp;gt; RSSI / Signalstärke jeder Flanke wird gemeldet&lt;br /&gt;
* &amp;lt;code&amp;gt;set CUL1 raw X21&amp;lt;/code&amp;gt; normal Modus&lt;br /&gt;
&lt;br /&gt;
Achtung: Auf Groß- und Kleinschreibung des &amp;quot;x,X&amp;quot; achten!&lt;br /&gt;
&lt;br /&gt;
Die kompletten Kommandos mit Erklärung für CUL sind in der [http://culfw.de/commandref.html commandref] zu finden.&lt;br /&gt;
&lt;br /&gt;
== Versionen ==&lt;br /&gt;
Das CUL gibt es in mehreren Versionen, die sich überwiegend in Prozessor und Speicherkonfiguration unterscheiden.&lt;br /&gt;
&lt;br /&gt;
* CUL V1 - AT90USB162 Prozessor, 0,5 kB RAM, 16 kB Flashmemory, 0,5 kB EEPROM. Einsatzfähigkeit unbekannt (aber vermutlich wie V2). Wird nicht mehr hergestellt.&lt;br /&gt;
* CUL V2 - AT90USB162 Prozessor, 0,5 kB RAM, 16 kB Flashmemory, 0,5 kB EEPROM. Einsatzfähig. Der Flashspeicher ist jedoch zu klein für eine culfw (CUL Firmware), die Code für &#039;&#039;SlowRF&#039;&#039; Geräte und zugleich &#039;&#039;HomeMatic&#039;&#039; Geräte enthält. Es muss also vor dem Flashen der Firmware zwischen zwei jeweils reduzierten Versionen gewählt werden. Da ein CUL ohnehin nicht beide Sendemodi &#039;&#039;&#039;zeitgleich&#039;&#039;&#039; betreiben kann, ist dies keine wirkliche Einschränkung. Wird nicht mehr hergestellt.&lt;br /&gt;
* CUL V3 - ATMega32U4 Prozessor, 2,5 kB RAM, 32 kB Flashmemory, 1 kB EEPROM). Voll einsatzfähig.&lt;br /&gt;
* CUL V4 - ATMega32U2 Prozessor, 1 kB RAM, 32 kB Flashmemory, 1 kB EEPROM. Voll einsatzfähig. Genaugenommen ein &amp;quot;Sparmodell&amp;quot; des V3, um Lieferengpässe des ATMega32U4 Prozessors zu umgehen. Der reduzierte RAM-Speicher verursacht (zumindest gegenwärtig) beim Betrieb mit culfw und FHEM keine Einschränkungen oder Nachteile. Achtung: Flashen des CULv4 setzt DFU-Programmer 0.5.4 oder höher voraus.&lt;br /&gt;
&lt;br /&gt;
Die für die aktuellen Modelle lieferbare Abschirmung ist in der Regel nicht notwendig.&lt;br /&gt;
&lt;br /&gt;
== Firmware {{Anker|FW}} ==&lt;br /&gt;
Die für den CUL und verwandte Hardware wie [[CUN]] und CUR im Zusammenhang mit FHEM überwiegend eingesetzte Firmware culfw findet sich auf der&lt;br /&gt;
* [http://culfw.de CUL Firmware Homepage]&lt;br /&gt;
Dort kann die jeweils aktuelle Version nachgesehen und heruntergeladen werden.&lt;br /&gt;
Alte Stände, Version für Entwickler und ganz aktuelle Änderungen findet man auf der&lt;br /&gt;
* [https://sourceforge.net/projects/culfw/ Sourceforge Projektseite der culfw]&lt;br /&gt;
Hier kann man sich z.B. mit&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
svn co svn://svn.code.sf.net/p/culfw/code/trunk/culfw&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
die aktuelle Version laden.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich gibt es [&amp;quot;leider&amp;quot;...!?] folgende Forks der originalen culfw mit dortigen speziellen Anpassungen/Abweichungen:&lt;br /&gt;
* [https://github.com/heliflieger/a-culfw Alternative culfw for cul devices] auf GitHub und im {{Link2Forum|Topic=35064|LinkText=Forum}} mit Anpassungen unter anderem für InterTechno. Hier könnte es aber zu Funktionseinschränkungen bei anderen Protokollen kommen. In dieser Version ist auch ein Portierung auf ARM-Prozessoren enthalten (siehe {{Link2Forum|Topic=38404|LinkText=Forum}}) mit der die CUL-Firmware auch auf dem HM-CFG-USB-2 und dem [[MAX]] Cube betrieben werden kann.&lt;br /&gt;
* {{Link2Forum|Topic=24436|LinkText=Timestamp Firmware}} mit speziellen Anpassungen für HomeMatic. Bei HomeMatic ist das Timing der Telegramme entscheidend sonst kann es zu &amp;quot;MISSING ACK&amp;quot; bzw. &amp;quot;RESPONSE TIMEOUT:RegisterRead&amp;quot; u.ä. Meldungen kommen.&lt;br /&gt;
&lt;br /&gt;
Alternativ zu den [a]culfw-Firmwares gibt es [[SIGNALduino]] (zumindest auf manchen Hardware-Konstellationen umgeflashed direkt anwendbar und 1:1 lauffähig; inkl. normierter/kompatibler Weiterleitung/Dispatching auf die gleichen zentralen Geräte-Protokoll-Dekodier-Module, die auch von anderer Transceiver-Hardware/-Firmware - CUL etc. - ähnlich angebunden werden (sollen); somit Kommunikation mit vielen Funk-Komponenten auch dort idealerweise immer 1:1 funktionierend).&lt;br /&gt;
&lt;br /&gt;
Generell ist das Angebot an Speicherplatz auf dem im CUL verwendeten ATMega32U2 sehr eingeschränkt, wodurch Erweiterungen ohne Abstriche an anderer Stelle kaum mehr möglich sind. Es wird also die optimale CUL-Firmware für alle Zwecke nie geben, so dass man die Auswahl am konkreten Bedarf klären muss. Wer die Firmware selbst compiliert kann gezielt Funktionen die nicht benötigt werden weglassen und dafür ggf. Funktionen die sonst nicht eingefügt sind hinzufügen.&lt;br /&gt;
&lt;br /&gt;
== Sendefrequenz ==&lt;br /&gt;
Das CUL gibt es in Ausführungen für 868 und 433 MHz. &lt;br /&gt;
Die Sende- und Empfangsfrequenz des CUL sind in weiten Bereichen einstellbar, im &#039;&#039;SlowRF&#039;&#039; Mode auch durch direkte Befehle aus FHEM (im &#039;&#039;HomeMatic&#039;&#039; Mode derzeit nicht unterstützt). Der bauliche Unterschied der 868 und 433 MHz CULs ist ein auf das Frequenzband richtig abgestimmter HF-Eingangskreis inklusive Antennenlänge.&lt;br /&gt;
&lt;br /&gt;
Es ist durchaus möglich, ein 868 MHz CUL auf 433 MHz einzustellen. Da dann aber die HF-Eingangskreis-Abstimmung und Antennenlänge nicht korrekt sind, ist Empfangs- und Sendeleistung suboptimal, die Reichweite sinkt. Dennoch wird diese Möglichkeit des freien Einstellens durch das FHEM Intertechnomodul genutzt, da Intertechnokomponenten mit 433 MHz arbeiten. Dazu wird beim Senden eines Intertechno-Befehls die Frequenz eines 868 MHz CULs kurz umgestellt.&lt;br /&gt;
Besser ist aber die Nutzung eines dedizierten 433 MHz CUL für Intertechno.&lt;br /&gt;
&lt;br /&gt;
== Antenne ==&lt;br /&gt;
Der CUL ist mit RP-SMA-Stecker für die Antenne aber auch mit angelöteter Drahtantenne lieferbar.&lt;br /&gt;
Funktional besteht kein Unterschied: auch die &amp;quot;richtige&amp;quot; Antenne ist (in diesem Fall) nur ein Draht, jedoch  gummiummantelt und eventuell mit einem Knickgelenk und einem Schraubanschluss versehen, d.h. die Drahtantenne sieht nur unschön aus.&lt;br /&gt;
&lt;br /&gt;
Bei einer Antenne sind zwei Dinge auseinanderzuhalten: Einmal die Anpassung sowie die Abstrahlungscharakteristik. &lt;br /&gt;
* &#039;&#039;&#039;Anpassung&#039;&#039;&#039; Eine Antenne ist typischerweise für eine bestimmte Frequenz konstruiert. Wenn die Konstruktionsfrequenz nicht mit der Frequenz übereinstimmt, auf der die Antenne senden und empfangen soll, ist die Anpassung schlecht. Dies führt zu Verlusten bei der Übertragung. Typische Kennwerte für eine Anpassung sind das Stehwellenverhältnis (SWR) sowie die Impedanz. Beide Größen können per Messgerät bestimmt werden, inzwischen gibt es für 150 Euro entsprechende Geräte. Wer eine Antenne selbst konstruiert, sollte ein solches Gerät zumindest ausborgen, um seine Antenne zu bestimmen.&lt;br /&gt;
* &#039;&#039;&#039;Abstrahlung&#039;&#039;&#039; Es gibt mehrere Arten von Antennen, die sich in der Art der Strahlung unterscheiden. Richtantennen versuchen Signale nur in eine bestimmte Richtung zu versenden, Dipole versuchen in die gesamte Umgebung zu senden bzw zu empfangen. Während es bei Anpassung nur die Kategorien &amp;quot;gut&amp;quot; und &amp;quot;schlecht&amp;quot; gibt, ist bei der Abstrahlung eher auf &amp;quot;zweckmäßig&amp;quot; und &amp;quot;unzweckmäßig&amp;quot; zu achten.&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich hängen Abstrahlung und Antennengewinn zusammen. Die Energie, die eine (perfekt angepasste) Antenne strahlt, wird durch die Antennenkonstruktion weder verdoppelt oder halbiert, sondern nur gebündelt. Während ein Dipol in alle Richtungen abstrahlt, bündelt eine Richtantenne dieselbe Energie in eine bestimmte Richtung. Insofern muss man bei der Antennenkonstruktion überlegen, woher die Signale kommen bzw wohin sie gehen sollen. Jeder Antennengewinn geht einher mit einer Einschränkung bei der Sende/Empfangsrichtung, es sei denn, man verbessert die Anpassung der Antenne. &lt;br /&gt;
&lt;br /&gt;
Leider kann man auch bei gekauften Antennen nicht davon ausgehen, dass sie korrekt angepasst sind. Es gibt Berichte im Forum, wonach es insbesondere bei 433 MHz-Antennen eher ein Glücksspiel ist, ob man eine vernünftig angepasste Antenne bekommt. Daher kann es durchaus sein, dass eine Eigenbauantenne wesentlich bessere Werte liefert als eine käuflich erworbene. &lt;br /&gt;
&lt;br /&gt;
Eine zentrale Größe bei der Anpassung ist die Länge der Antenne. Wenn man einen Dipol verwendet, muss diese zweckmäßigerweise so groß sein wie ein Viertel der Wellenlänge (&amp;quot;Lambda/4&amp;quot;). Die sind bei 868 MHz ca. 8,6 Zentimeter. Antennenlängen die länger oder kürzer sind verschlechtern in der Regel die Anpassung. Daher ist eine z.B. 10 Zentimeter lange Antenne (obwohl länger) schlechter als 1/4 Lambda mit 8,6 Zentimeter.&lt;br /&gt;
&lt;br /&gt;
Weitere Informationen sind im {{Link2Forum|Topic=93021|LinkText=Antennenthread}} des Forums zu finden. &lt;br /&gt;
&lt;br /&gt;
Über besondere Antennenkonstruktionen (bitte nach Colinear, Jpole, Yagi suchen) oder Antennen die &amp;quot;Lambda/2&amp;quot; oder gar &amp;quot;Lambda&amp;quot; lang sind  (also ca. 17,2 bzw. 34,5 Zentimeter) kann ein höherer Gewinn erreicht werden. Einher geht aber gleichzeitig eine stärkere Richtwirkung der Antenne. Je kürzer die Antenne, desto kugelförmiger die Abstrahlung. Bei längeren Antennen wird die Abstrahlung mehr und mehr zylinderähnlich, also mit horizontaler Richtwirkung (und in die Richtung ist das Signal dann stärker, daher der Antennen&amp;quot;gewinn&amp;quot;).&lt;br /&gt;
Das hat auch Nachteile, speziell wenn man auch &amp;quot;nach oben&amp;quot; funken will. Besonders wenn man Antennen länger als eine λ/4 Antenne (8,6 Zentimeter) in einem mehretagigen Haus verwenden will, muss man diese daher in der Regel waagerecht/horizontal ausrichten, da alles was in Richtung der Spitze (und dem Fuss) der Antenne liegt schlecht empfangen wird.&lt;br /&gt;
&lt;br /&gt;
Daher: Je mehr Gewinn die Antenne aufweist, desto besser ist die Sende und Empfangsleistung, aber desto mehr Gedanken muss man sich um die Ausrichtung der Antenne machen, um alle Geräte zu empfangen / zu erreichen. &amp;quot;Mehr dB&amp;quot; und speziell &amp;quot;länger&amp;quot; ist also nicht automatisch besser. &lt;br /&gt;
&lt;br /&gt;
Zu beachten ist auch, dass die Sendeleistung der Module gesetzlich geregelt ist und Spezialantennen mit höherem Gewinn ggf. nur an Empfängern erlaubt sind.&lt;br /&gt;
&lt;br /&gt;
Falls man den CUL mit RP-SMA Stecker geordert hat, aber keine passend lange RP-SMA-Antenne verfügbar ist, kann (nur für erste Tests) auch eine abschraubbare Antenne für 802.11b/g WLAN-Geräte (2,4&amp;amp;nbsp;GHz) benutzt werden, so diese anschlusstechnisch auf den RP-SMA-Stecker des CUL passt (dies funktioniert zumindest mit FS20- und EM-Geräten). Deren Länge ist wie oben diskutiert aber nicht optimal, besser ist auf jeden Fall eine speziell auf den Einsatzzweck (Frequenz) abgestimmte Antenne.&lt;br /&gt;
&lt;br /&gt;
== Antennenlänge ==&lt;br /&gt;
Die genauen Antennenlängen sind praktisch schwer zu ermitteln, da auch Zuleitung auf dem CUL zugerechnet werden müssten und ggf Dämpfungen (also z.B. Durchführung der Antenne durch ein Gehäuse, oder gebogene Antennen) die Antennenlänge weiter beeinflussen. Gleichzeitig haben schon Abweichungen von wenigen Millimetern messbaren Einfluss. Die Antennenlänge ist daher immer nur ein Kompromiss.&lt;br /&gt;
&lt;br /&gt;
Exakt berechnet ohne Störeinflüsse wären folgende Antennenlängen nutzbar:&lt;br /&gt;
 868,35 MHz (z.B. HM, FS20, FHT …)&lt;br /&gt;
 1/4 Lambda = 8,63 Zentimeter &lt;br /&gt;
 1/2 Lambda = 17,26 Zentimeter &lt;br /&gt;
 1 Lambda = 34,52 Zentimeter  (Bereits sehr hohe Richtwirkung)&lt;br /&gt;
&lt;br /&gt;
433,92 MHz  (z.B. Intertechno …)&lt;br /&gt;
 1/4 Lambda = 17,27 Zentimeter &lt;br /&gt;
 1/2 Lambda = 34,54 Zentimeter &lt;br /&gt;
&lt;br /&gt;
Folgende Antennenlängen bieten sich praktisch an, diese sind immer etwas kürzer als die optimale Länge, dies wird z.T. durch Leiterlänge im CUL kompensiert.:&lt;br /&gt;
&lt;br /&gt;
 8,6 Zentimeter als 1/4 Lambda für 868,35 MHz&lt;br /&gt;
 17,2 Zentimeter als 1/2 Lambda für 868,35 MHz und zugleich 1/4 Lambda für 433,92 MHz&lt;br /&gt;
 34,5 Zentimeter als Lambda für 868,35 MHz und zugleich 1/2 Lambda für 433,92 MHz&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
&lt;br /&gt;
=== RF-Tuning ===&lt;br /&gt;
Im Gegensatz zu den original FHZ-Zentralen ist das CUL recht schmalbandig, d.h. die Sende- und Empfangsfrequenz wird genauer eingehalten als z.&amp;amp;nbsp;B. bei einer FHZ1x00PC. Dies kann im Zusammenhang mit den eher ungenauen Sendern (z.&amp;amp;nbsp;B. der FHT Raumregler) zu Empfangsproblemen führen. Es kann daher mitunter sinnvoll sein, die Sende- und Empfangsbandbreite des CUL etwas zu erhöhen. Dies senkt jedoch gleichzeitig die Empfindlichkeit.&lt;br /&gt;
&lt;br /&gt;
Bei Empfangsproblemen von z.&amp;amp;nbsp;B. HEM-Sensoren oder dem S300TH kann man folgendes testen:&lt;br /&gt;
&lt;br /&gt;
* Man kann die Frequenz des CUL auf genau 868,35 MHz einstellen. Standardmäßig ist hier aus Kompatibilitätsgründen 868,30 MHz eingestellt. Diese Einstellung wird fest im NVRAM gespeichert und braucht nur einmal vorgenommen zu werden.&lt;br /&gt;
*: &amp;lt;code&amp;gt;set CUL freq 868.350&amp;lt;/code&amp;gt;&lt;br /&gt;
* Es ist möglich die &amp;quot;decision boundary&amp;quot; zu vergrößern, frei beschrieben: die &amp;quot;Entscheidungsgrenze&amp;quot; ob die empfangene Signalflanke digital &amp;quot;0&amp;quot; oder &amp;quot;1&amp;quot; darstellte ({{Link2Forum|Topic=8572|Message=44388|LinkText=siehe Diskussion hier}}). Möglich sind die Werte &amp;quot;4&amp;quot;, &amp;quot;8&amp;quot; und &amp;quot;16&amp;quot;. Default-Einstellung ist hier &amp;quot;4&amp;quot;. Zur Steigerung der Empfangsqualität soll es hilfreich sein, hier &amp;quot;8&amp;quot; einzustellen. Mitunter bringt jedoch erst die Einstellung auf &amp;quot;16&amp;quot; signifikante Verbesserungen beim Empfang von S300TH-Sensoren.&lt;br /&gt;
*: &amp;lt;code&amp;gt;set CUL sens 8&amp;lt;/code&amp;gt;&lt;br /&gt;
* Oft hilft auch, die Bandbreite auf z.&amp;amp;nbsp;B. 464 kHz aufzuweiten.&lt;br /&gt;
*: &amp;lt;code&amp;gt;set CUL bWidth 464&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Selbstbau-/Bastelprojekte ==&lt;br /&gt;
Innerhalb der FHEM-Community werden mittlerweile diverse Bastelprojekte zum Selbstbau eines CUL betrieben. Eine Auswahl dieser Projekte:&lt;br /&gt;
* [[Selbstbau CUL]]&lt;br /&gt;
* [[FHEMduino]]&lt;br /&gt;
* [[SIGNALduino]]&lt;br /&gt;
* [[MapleCUN]] mit STM32 Mikrocontroller&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* Hersteller / Bezugsquelle für CUL: [http://www.busware.de/tiki-index.php?page=CUL busware.de]&lt;br /&gt;
* Google groups [https://groups.google.com/group/cul-fans/ CUL fans], mittlerweile durch das Board {{Link2Forum|Area=cul-fans}} im FHEM Forum ergänzt/ersetzt&lt;br /&gt;
* CUL commandref [https://fhem.de/commandref.html#CUL]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Interfaces]]&lt;br /&gt;
[[Kategorie:CUL|!]]&lt;br /&gt;
[[Kategorie:433MHz]]&lt;br /&gt;
[[Kategorie:868MHz]]&lt;/div&gt;</summary>
		<author><name>Soulman</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=CUL&amp;diff=40669</id>
		<title>CUL</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=CUL&amp;diff=40669"/>
		<updated>2026-01-05T18:51:14Z</updated>

		<summary type="html">&lt;p&gt;Soulman: /* Geräte, die an USB angeschlossen sind (CUL/CUN) */ Anbidung per by-ID ergänzt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein &#039;&#039;&#039;CUL&#039;&#039;&#039; (&#039;&#039;&#039;C&#039;&#039;&#039;C1101 &#039;&#039;&#039;U&#039;&#039;&#039;SB &#039;&#039;&#039;L&#039;&#039;&#039;ite) ist eine Radiofrequenz/USB-Schnittstelle bestehend aus einem USB-Dongle mit externer [[CUL Ausstattung|Antenne]]. Im USB-Stecker kann ein 8&amp;amp;nbsp;bit Atmel Prozessor die im ISM/SRD-Band empfangenen RF-Daten onboard vorverarbeiten. Je nach aufgespielter [[#FW|Firmware]] kann das CUL verschiedene 868MHz [[CUL HomeMatic und FS20|Protokolle]] empfangen und senden, insbesondere die FS20/FHT/S300/EM/HMS Protokollfamilien. Durch eine kurzzeitige Umschaltung auf 433&amp;amp;nbsp;MHz sind weitere Protokolle zugänglich, z.&amp;amp;nbsp;B. Intertechno, viele Baumarkt-Funksteckdosen.  &lt;br /&gt;
&lt;br /&gt;
== CUL HW ==&lt;br /&gt;
Im Zusammenhang mit diesem Artikel ist vor allem vom &amp;quot;echten&amp;quot; CUL die Rede, als dem USB Hardware-Dongle des Hersteller Busware. Es gibt aber diverse andere Hardware-Schnittstellen, die sich ebenfalls wie ein CUL verhalten, z.b. Netzwerkattached Module ([[CUN]]O), Module zum direkten Aufstecken auch einen Raspberry Pi ([[COC]]), und auf Arduino basierende Lösungen ([[SIGNALduino]]).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Einführung ==&lt;br /&gt;
Die Firmware (culfw) ist quelloffen.  Sie wird auch von verwandten Schnittstellen verwendet, siehe [[CUNO]] (RF+OneWire/LAN-Übergang), [[COC]] (RF+OneWire/Rasberrybus-Übergang), CSM usw.&lt;br /&gt;
&lt;br /&gt;
Im Umfeld von FS20/FHT/EM/S300/HMS (&amp;quot;[[Rfmode|rfmode]] - [[SlowRF]]&amp;quot;) werden die amplitudenmodulierten 1&amp;amp;nbsp;kHz breiten Signale per [[#FW|culfw]] direkt dekodiert und dann per USB weitergegeben.&lt;br /&gt;
&lt;br /&gt;
Das CUL kann mittels des &#039;&#039;&#039;[[CUL (Modul)|CUL Moduls]]&#039;&#039;&#039; (00_CUL.pm) von FHEM angesprochen und somit wie eine FHZ1X00PC verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Das CUL kann auch im HM-Mode als HomeMatic Zentrale alternativ zur CCU oder dem [[HMLAN Konfigurator]] betrieben werden. Bei CULs älter als Version&amp;amp;#160;3 ist jedoch der Speicher zu klein, um die Software für FS20/FHT/S300/EM/HMS und HomeMatic zugleich im Speicher zu halten, hier muss man sich beim [[CUL an einer Fritzbox 7390 flashen|Flashen]] der Firmware für eine Protokollfamilie entscheiden. Mit zwei CULs ist aber auch der Mischbetrieb an einem FHEM Hostrechner möglich. Es ist jedoch nicht angeraten, den CUL bei HM-Geräten zu verwenden, siehe {{Link2Forum|Topic=68145|LinkText=Link}}&lt;br /&gt;
&lt;br /&gt;
Ebenso gibt es ein Modul zur Ansteuerung der [[MAX]]! Heizungsteuerung. Auch hier ist ein Mischbetrieb (MAX! und z.&amp;amp;nbsp;B. FS20 gleichzeitig über ein CUL) obwohl technisch nicht unmöglich {{Link2Forum|Topic=10510|LinkText=nicht angeraten}}.&lt;br /&gt;
&lt;br /&gt;
Ferner ist der Einsatz eines CUL als [[RFR CUL]] für den &#039;&#039;SlowRF&#039;&#039; Mode (jedoch nicht für den &#039;&#039;HomeMatic&#039;&#039; Mode) möglich, um die Reichweite zu erhöhen. Die Verbindung erfolgt hierbei über Funk, sodass keine USB Verbindung zum FHEM Hostrechner erforderlich ist.&lt;br /&gt;
&lt;br /&gt;
Alle diese Modi sind in der Original-[[#FW|culfw]] enthalten und werden z.B. durch die Wahl des &#039;&#039;rfmode&#039;&#039; eingestellt.&lt;br /&gt;
&lt;br /&gt;
Obwohl die nominale Betriebsfrequenz der FHT- und FS20-Komponenten 868,35 MHz beträgt, ist bei aktuellen CUL-Firmwareversionen zum Betrieb mit FHEM die Frequenz  868,30 MHz vorgesehen. Dies hat sich als Kompromiss zum besseren Empfang von EM1000EM (Energiemonitor) Geräten bewährt, &#039;&#039;&#039;obwohl&#039;&#039;&#039; diese nominal mit 868,360 MHz arbeiten. Praktisch ist die Genauigkeit der Sendefrequenz der meisten &#039;&#039;SlowRF&#039;&#039; Geräte wegen der primitiven Sender sehr schlecht und kann deutlich von der nominalen Frequenz abweichen.&lt;br /&gt;
&lt;br /&gt;
Frequenz und Bandbreite können daher im &#039;&#039;SlowRF&#039;&#039; Mode frei angepasst und somit für die örtlichen Empfangsgegebenheiten optimiert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Definition in FHEM ==&lt;br /&gt;
Das CUL wird definiert mit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;define &amp;lt;name&amp;gt; CUL &amp;lt;device&amp;gt; &amp;lt;FHTID&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
als z.b.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;define myCUL CUL /dev/ttyUSB0 0000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Da FHT zur Heizungssterung kaum noch eine Rolle spielen dürfte ist die Vergabe der FHT-ID 0000 sinnvoll, da das CUL dann nicht auf FHT Communication achtet.&lt;br /&gt;
&lt;br /&gt;
Was &amp;lt;device&amp;gt; ist hängt von der Art des CUL ab:&lt;br /&gt;
=== Geräte, die an USB angeschlossen sind (CUL/CUN) ===&lt;br /&gt;
&amp;lt;device&amp;gt; gibt die serielle Schnittstelle an, mit der der CUL kommuniziert. Der Name der seriellen Schnittstelle hängt von der gewählten Distribution und USB-Treiber ab, unter Linux ist dies das Kernel Modul cdc_acm und üblicherweise wird die Schnittstelle /dev/ttyACM0 genannt. Wenn die Linux Distribution über kein Kernel Modul cdc_acm verfügt, dann kann die Schnittstelle über usbserial mit dem folgenden Befehl erzeugt werden:&lt;br /&gt;
modprobe usbserial vendor=0x03eb product=0x204b&lt;br /&gt;
In diesem Fall ist diese Schnittstelle dann wahrscheinlich /dev/ttyUSB0.&lt;br /&gt;
&lt;br /&gt;
Wenn der Name der Schnittstelle ein @ enthält, kann nachfolgend die verwendete Baudrate angegeben werden, z.B.: &lt;br /&gt;
&lt;br /&gt;
 /dev/ttyACM0@38400.&lt;br /&gt;
&lt;br /&gt;
Wenn mehrer CULs an einem System betreiben werden sollen, ist es besser die CULs &amp;quot;by-ID&amp;quot; einzubinden. Es kann nämlich ansonsten sein, dass nach einem Neustart die CULs in anderen Reihenfolge zugewiesen werden als bei der Einrichtung. Insbesondere wenn man CUL868 und CUL 433 zugleich betreibt ist das riskant, da falls die CULs sich vertauscht melden, 668 Schaltbefehle an das 433 CUL gehen und umgekehrt. Besser ist es dann die CULs an den USB Port anzustecken, dann mit &lt;br /&gt;
&lt;br /&gt;
 ls /dev/serial/by-id&lt;br /&gt;
&lt;br /&gt;
zu ermittlen wie sich diese melden, z.B.&lt;br /&gt;
 usb-busware.de_CUL868-if00  usb-SHK_NANO_CUL_433-if00-port0&lt;br /&gt;
&lt;br /&gt;
und diese dann mit&lt;br /&gt;
&lt;br /&gt;
 define CUL1 CUL /dev/serial/by-id/usb-SHK_NANO_CUL_433-if00-port0@38400 0000&lt;br /&gt;
 define CUL2 CUL /dev/serial/by-id/usb-busware.de_CUL868-if00@38400 1234&lt;br /&gt;
&lt;br /&gt;
anzubinden. Damit ist sichergestellt, das &amp;quot;CUL1&amp;quot; immer das 433Mhz CUL ist.&lt;br /&gt;
Dabei ist allerdings zu beachten, das original Busware CULs sich immer gleich melden.&lt;br /&gt;
Wenn man also z.b. mehrere Busware 868Mhz CULs einsetzen will, werden die sich alle mit &lt;br /&gt;
 usb-busware.de_CUL868-if00 &lt;br /&gt;
melden und sind nicht unterscheidbar, während nano CULs und ähnlich oft eigene Seriennummern haben.&lt;br /&gt;
&lt;br /&gt;
Wenn die Baudrate mit &amp;quot;directio&amp;quot; angegeben wird (z.B.: /dev/ttyACM0@directio), wird das Perl Modul Device::SerialPort nicht benötigt und FHEM öffnet die Schnittstelle mit einfachem Dateizugriff. Dies sollte dann funktionieren, wenn das Betriebssystem vernünftige Standardwerte für die serielle Schnittstelle verwendet, wie z.B. einige Linux Distributionen oder macOS.&lt;br /&gt;
&lt;br /&gt;
=== Geräte, die mit dem Netzwerk verbunden sind (CUN(O)) ===&lt;br /&gt;
&amp;lt;device&amp;gt; gibt die Hostadresse:Port des Gerätes an, z.B. 192.168.0.244:2323&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Weiteres in der commandref [https://fhem.de/commandref.html#CUL]&lt;br /&gt;
&lt;br /&gt;
== Hinweise zum Betrieb mit FHEM ==&lt;br /&gt;
&#039;&#039;&#039;Anmerkung:&#039;&#039;&#039; Nachfolgende Beispiele sind so wie dargestellt in die FHEM-Eingabezeile oder per Telnet auf FHEM zu übertragen und per &amp;lt;Taste&amp;gt;Enter&amp;lt;/Taste&amp;gt; abzuschicken (nicht &amp;quot;save&amp;quot; klicken); &#039;&#039;&#039;&#039;&#039;myCUL&#039;&#039;&#039;&#039;&#039; ist dabei nur ein Platzhalter und durch den Namen &#039;&#039;&#039;Ihres&#039;&#039;&#039; CUL zu ersetzen. &lt;br /&gt;
&lt;br /&gt;
* Ist Empfang eingeschaltet ?&lt;br /&gt;
*: &amp;lt;code&amp;gt; get myCUL raw C35&amp;lt;/code&amp;gt; (13 = ja, z.&amp;amp;nbsp;b.: C35 = 0D / 13)&lt;br /&gt;
* Auslesen der culfw Version:&lt;br /&gt;
*: &amp;lt;code&amp;gt;get myCUL raw V&amp;lt;/code&amp;gt;&lt;br /&gt;
* LED ausschalten (Achtung: Buchstabe l (L) vorweg für LED, keine Zahl 1)&lt;br /&gt;
*: &amp;lt;code&amp;gt;set myCUL raw l00&amp;lt;/code&amp;gt;&lt;br /&gt;
* LED einschalten&lt;br /&gt;
*: &amp;lt;code&amp;gt;set myCUL raw l01&amp;lt;/code&amp;gt; Blinkt bei Senden oder Empfangen von Paketen&lt;br /&gt;
* LED soll blinken (einmal in der Sekunde)&lt;br /&gt;
*: &amp;lt;code&amp;gt;set myCUL raw l02&amp;lt;/code&amp;gt;&lt;br /&gt;
* Reboot / Reset des CUL:&lt;br /&gt;
*: &amp;lt;code&amp;gt;set myCUL raw B00&amp;lt;/code&amp;gt; Andere Werte als 00 starten das CUL im Bootloader-Modus (=&amp;amp;gt; neue Firmware)&lt;br /&gt;
* Freie CUL Sendezeit ([[1% Regel]]):&lt;br /&gt;
*: &amp;lt;code&amp;gt;get myCUL raw X&amp;lt;/code&amp;gt; 2. Wert ist Sendezeit in 10ms Slots, ein FS20 Befehl braucht ca. 210ms (also 21 Slots), eine FHT Kommunikation wesentlich mehr. Alternativ auch &amp;lt;code&amp;gt;get myCUL credit10ms&amp;lt;/code&amp;gt; ergibt Sendezeit in 10ms Slots&lt;br /&gt;
* Freie Kapazität des FHT Buffers&lt;br /&gt;
*: &amp;lt;code&amp;gt; get myCUL raw T03&amp;lt;/code&amp;gt; Ergebnis Bytes in HEX. Leer = 4a&lt;br /&gt;
* Inhalt des FHT Buffers&lt;br /&gt;
*: &amp;lt;code&amp;gt; get myCUL raw T02&amp;lt;/code&amp;gt; (CUL V2 Buffer ist 74 Bytes groß, Platz für 14 bis 31 FHT Messages). Rückgabe n/a = Buffer ist leer&lt;br /&gt;
* Eingestellte [[Was_ist_der_Hauscode%3F|FHT-ID]]&lt;br /&gt;
*: &amp;lt;code&amp;gt; get myCUL raw T01&amp;lt;/code&amp;gt; &lt;br /&gt;
* Eingestellte Frequenz, Bandbreite etc. Ausgeben&lt;br /&gt;
*: &amp;lt;code&amp;gt; get myCUL ccconf&amp;lt;/code&amp;gt;. &amp;lt;br&amp;gt;Rückgabe z.&amp;amp;nbsp;B.: &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;myCUL ccconf =&amp;amp;gt; freq:868.300MHz bWidth:325kHz rAmpl:42dB sens:4dB&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* eingestelle Bandbreite erhöhen (z.B. auf 464 kHz, mehr hat meist keinen Sinn):&lt;br /&gt;
*:&amp;lt;code&amp;gt;set myCUL bWidth 464&amp;lt;/code&amp;gt;&lt;br /&gt;
* Einstellen der Sendestärke:&lt;br /&gt;
*: &amp;lt;code&amp;gt;set myCUL raw x09&amp;lt;/code&amp;gt; Einstellen der Sendeleistung.&lt;br /&gt;
&lt;br /&gt;
Gültige Werte für die Sendeleistung sind 00-09. Verwendet werden sollten nur die Werte 05-09, diese entsprechen&lt;br /&gt;
-10/-5/0/5/10 Sendeleistung in dB. Default ist x08 = +5dB. Bitte im Interesse von Nachbarn und der Abhörsicherheit den kleinsten problemlos funktionierenden Wert einstellen. Dies ist meistens x07 oder x08. Da speziell die Kommunikation mit den FHTs bidirektional ist, kann die Kommunikation durch höhere Werte oft nicht verbessert werden, da die FHTs selber dadurch nicht stärker senden. Besser versuchen, Lage und Antennenausrichtung des CUL zu verändern. &lt;br /&gt;
&lt;br /&gt;
Werte x00-x04 sind &#039;&#039;&#039;mit&#039;&#039;&#039; Ramping (&#039;&#039;sanfter&#039;&#039; Flankenanstieg anstatt Rechteck) und führen zum Verlust der Kommunikationsfähigkeit mit anderen CULs, z.&amp;amp;nbsp;B. [[RFR CUL]], da die CULs Rampingsignale nicht verstehen (FS20 / FHT und ähnliche Empfänger aber sehr wohl). &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Beim CUL im HomeMatic-Modus kann man (ohne Firmware-Modifikation) die Empfangs-/Sendeparameter &#039;&#039;&#039;nicht&#039;&#039;&#039; verstellen. Die üblichen freq/x09 etc. haben hier keine Wirkung ({{Link2Forum|Topic=10203|Message=57191|LinkText=Quelle}}).&lt;br /&gt;
&lt;br /&gt;
Weiterhin kann man zunehmend mehr Debuggingoutput auf dem CUL einschalten mit&amp;amp;#160;:&lt;br /&gt;
* &amp;lt;code&amp;gt; set CUL1 raw X61&amp;lt;/code&amp;gt; Communication wird im Detail angezeigt&lt;br /&gt;
* &amp;lt;code&amp;gt;set CUL1 raw X25&amp;lt;/code&amp;gt; auch checksum Fehler / unerkannte Protokolle werden gemeldet&lt;br /&gt;
* &amp;lt;code&amp;gt;set CUL1 raw X2F&amp;lt;/code&amp;gt; alle empfangenen Flanken werden gemeldet&lt;br /&gt;
* &amp;lt;code&amp;gt;set CUL1 raw X80&amp;lt;/code&amp;gt; RSSI / Signalstärke jeder Flanke wird gemeldet&lt;br /&gt;
* &amp;lt;code&amp;gt;set CUL1 raw X21&amp;lt;/code&amp;gt; normal Modus&lt;br /&gt;
&lt;br /&gt;
Achtung: Auf Groß- und Kleinschreibung des &amp;quot;x,X&amp;quot; achten!&lt;br /&gt;
&lt;br /&gt;
Die kompletten Kommandos mit Erklärung für CUL sind in der [http://culfw.de/commandref.html commandref] zu finden.&lt;br /&gt;
&lt;br /&gt;
== Versionen ==&lt;br /&gt;
Das CUL gibt es in mehreren Versionen, die sich überwiegend in Prozessor und Speicherkonfiguration unterscheiden.&lt;br /&gt;
&lt;br /&gt;
* CUL V1 - AT90USB162 Prozessor, 0,5 kB RAM, 16 kB Flashmemory, 0,5 kB EEPROM. Einsatzfähigkeit unbekannt (aber vermutlich wie V2). Wird nicht mehr hergestellt.&lt;br /&gt;
* CUL V2 - AT90USB162 Prozessor, 0,5 kB RAM, 16 kB Flashmemory, 0,5 kB EEPROM. Einsatzfähig. Der Flashspeicher ist jedoch zu klein für eine culfw (CUL Firmware), die Code für &#039;&#039;SlowRF&#039;&#039; Geräte und zugleich &#039;&#039;HomeMatic&#039;&#039; Geräte enthält. Es muss also vor dem Flashen der Firmware zwischen zwei jeweils reduzierten Versionen gewählt werden. Da ein CUL ohnehin nicht beide Sendemodi &#039;&#039;&#039;zeitgleich&#039;&#039;&#039; betreiben kann, ist dies keine wirkliche Einschränkung. Wird nicht mehr hergestellt.&lt;br /&gt;
* CUL V3 - ATMega32U4 Prozessor, 2,5 kB RAM, 32 kB Flashmemory, 1 kB EEPROM). Voll einsatzfähig.&lt;br /&gt;
* CUL V4 - ATMega32U2 Prozessor, 1 kB RAM, 32 kB Flashmemory, 1 kB EEPROM. Voll einsatzfähig. Genaugenommen ein &amp;quot;Sparmodell&amp;quot; des V3, um Lieferengpässe des ATMega32U4 Prozessors zu umgehen. Der reduzierte RAM-Speicher verursacht (zumindest gegenwärtig) beim Betrieb mit culfw und FHEM keine Einschränkungen oder Nachteile. Achtung: Flashen des CULv4 setzt DFU-Programmer 0.5.4 oder höher voraus.&lt;br /&gt;
&lt;br /&gt;
Die für die aktuellen Modelle lieferbare Abschirmung ist in der Regel nicht notwendig.&lt;br /&gt;
&lt;br /&gt;
== Firmware {{Anker|FW}} ==&lt;br /&gt;
Die für den CUL und verwandte Hardware wie [[CUN]] und CUR im Zusammenhang mit FHEM überwiegend eingesetzte Firmware culfw findet sich auf der&lt;br /&gt;
* [http://culfw.de CUL Firmware Homepage]&lt;br /&gt;
Dort kann die jeweils aktuelle Version nachgesehen und heruntergeladen werden.&lt;br /&gt;
Alte Stände, Version für Entwickler und ganz aktuelle Änderungen findet man auf der&lt;br /&gt;
* [https://sourceforge.net/projects/culfw/ Sourceforge Projektseite der culfw]&lt;br /&gt;
Hier kann man sich z.B. mit&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
svn co svn://svn.code.sf.net/p/culfw/code/trunk/culfw&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
die aktuelle Version laden.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich gibt es [&amp;quot;leider&amp;quot;...!?] folgende Forks der originalen culfw mit dortigen speziellen Anpassungen/Abweichungen:&lt;br /&gt;
* [https://github.com/heliflieger/a-culfw Alternative culfw for cul devices] auf GitHub und im {{Link2Forum|Topic=35064|LinkText=Forum}} mit Anpassungen unter anderem für InterTechno. Hier könnte es aber zu Funktionseinschränkungen bei anderen Protokollen kommen. In dieser Version ist auch ein Portierung auf ARM-Prozessoren enthalten (siehe {{Link2Forum|Topic=38404|LinkText=Forum}}) mit der die CUL-Firmware auch auf dem HM-CFG-USB-2 und dem [[MAX]] Cube betrieben werden kann.&lt;br /&gt;
* {{Link2Forum|Topic=24436|LinkText=Timestamp Firmware}} mit speziellen Anpassungen für HomeMatic. Bei HomeMatic ist das Timing der Telegramme entscheidend sonst kann es zu &amp;quot;MISSING ACK&amp;quot; bzw. &amp;quot;RESPONSE TIMEOUT:RegisterRead&amp;quot; u.ä. Meldungen kommen.&lt;br /&gt;
&lt;br /&gt;
Alternativ zu den [a]culfw-Firmwares gibt es [[SIGNALduino]] (zumindest auf manchen Hardware-Konstellationen umgeflashed direkt anwendbar und 1:1 lauffähig; inkl. normierter/kompatibler Weiterleitung/Dispatching auf die gleichen zentralen Geräte-Protokoll-Dekodier-Module, die auch von anderer Transceiver-Hardware/-Firmware - CUL etc. - ähnlich angebunden werden (sollen); somit Kommunikation mit vielen Funk-Komponenten auch dort idealerweise immer 1:1 funktionierend).&lt;br /&gt;
&lt;br /&gt;
Generell ist das Angebot an Speicherplatz auf dem im CUL verwendeten ATMega32U2 sehr eingeschränkt, wodurch Erweiterungen ohne Abstriche an anderer Stelle kaum mehr möglich sind. Es wird also die optimale CUL-Firmware für alle Zwecke nie geben, so dass man die Auswahl am konkreten Bedarf klären muss. Wer die Firmware selbst compiliert kann gezielt Funktionen die nicht benötigt werden weglassen und dafür ggf. Funktionen die sonst nicht eingefügt sind hinzufügen.&lt;br /&gt;
&lt;br /&gt;
== Sendefrequenz ==&lt;br /&gt;
Das CUL gibt es in Ausführungen für 868 und 433 MHz. &lt;br /&gt;
Die Sende- und Empfangsfrequenz des CUL sind in weiten Bereichen einstellbar, im &#039;&#039;SlowRF&#039;&#039; Mode auch durch direkte Befehle aus FHEM (im &#039;&#039;HomeMatic&#039;&#039; Mode derzeit nicht unterstützt). Der bauliche Unterschied der 868 und 433 MHz CULs ist ein auf das Frequenzband richtig abgestimmter HF-Eingangskreis inklusive Antennenlänge.&lt;br /&gt;
&lt;br /&gt;
Es ist durchaus möglich, ein 868 MHz CUL auf 433 MHz einzustellen. Da dann aber die HF-Eingangskreis-Abstimmung und Antennenlänge nicht korrekt sind, ist Empfangs- und Sendeleistung suboptimal, die Reichweite sinkt. Dennoch wird diese Möglichkeit des freien Einstellens durch das FHEM Intertechnomodul genutzt, da Intertechnokomponenten mit 433 MHz arbeiten. Dazu wird beim Senden eines Intertechno-Befehls die Frequenz eines 868 MHz CULs kurz umgestellt.&lt;br /&gt;
Besser ist aber die Nutzung eines dedizierten 433 MHz CUL für Intertechno.&lt;br /&gt;
&lt;br /&gt;
== Antenne ==&lt;br /&gt;
Der CUL ist mit RP-SMA-Stecker für die Antenne aber auch mit angelöteter Drahtantenne lieferbar.&lt;br /&gt;
Funktional besteht kein Unterschied: auch die &amp;quot;richtige&amp;quot; Antenne ist (in diesem Fall) nur ein Draht, jedoch  gummiummantelt und eventuell mit einem Knickgelenk und einem Schraubanschluss versehen, d.h. die Drahtantenne sieht nur unschön aus.&lt;br /&gt;
&lt;br /&gt;
Bei einer Antenne sind zwei Dinge auseinanderzuhalten: Einmal die Anpassung sowie die Abstrahlungscharakteristik. &lt;br /&gt;
* &#039;&#039;&#039;Anpassung&#039;&#039;&#039; Eine Antenne ist typischerweise für eine bestimmte Frequenz konstruiert. Wenn die Konstruktionsfrequenz nicht mit der Frequenz übereinstimmt, auf der die Antenne senden und empfangen soll, ist die Anpassung schlecht. Dies führt zu Verlusten bei der Übertragung. Typische Kennwerte für eine Anpassung sind das Stehwellenverhältnis (SWR) sowie die Impedanz. Beide Größen können per Messgerät bestimmt werden, inzwischen gibt es für 150 Euro entsprechende Geräte. Wer eine Antenne selbst konstruiert, sollte ein solches Gerät zumindest ausborgen, um seine Antenne zu bestimmen.&lt;br /&gt;
* &#039;&#039;&#039;Abstrahlung&#039;&#039;&#039; Es gibt mehrere Arten von Antennen, die sich in der Art der Strahlung unterscheiden. Richtantennen versuchen Signale nur in eine bestimmte Richtung zu versenden, Dipole versuchen in die gesamte Umgebung zu senden bzw zu empfangen. Während es bei Anpassung nur die Kategorien &amp;quot;gut&amp;quot; und &amp;quot;schlecht&amp;quot; gibt, ist bei der Abstrahlung eher auf &amp;quot;zweckmäßig&amp;quot; und &amp;quot;unzweckmäßig&amp;quot; zu achten.&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich hängen Abstrahlung und Antennengewinn zusammen. Die Energie, die eine (perfekt angepasste) Antenne strahlt, wird durch die Antennenkonstruktion weder verdoppelt oder halbiert, sondern nur gebündelt. Während ein Dipol in alle Richtungen abstrahlt, bündelt eine Richtantenne dieselbe Energie in eine bestimmte Richtung. Insofern muss man bei der Antennenkonstruktion überlegen, woher die Signale kommen bzw wohin sie gehen sollen. Jeder Antennengewinn geht einher mit einer Einschränkung bei der Sende/Empfangsrichtung, es sei denn, man verbessert die Anpassung der Antenne. &lt;br /&gt;
&lt;br /&gt;
Leider kann man auch bei gekauften Antennen nicht davon ausgehen, dass sie korrekt angepasst sind. Es gibt Berichte im Forum, wonach es insbesondere bei 433 MHz-Antennen eher ein Glücksspiel ist, ob man eine vernünftig angepasste Antenne bekommt. Daher kann es durchaus sein, dass eine Eigenbauantenne wesentlich bessere Werte liefert als eine käuflich erworbene. &lt;br /&gt;
&lt;br /&gt;
Eine zentrale Größe bei der Anpassung ist die Länge der Antenne. Wenn man einen Dipol verwendet, muss diese zweckmäßigerweise so groß sein wie ein Viertel der Wellenlänge (&amp;quot;Lambda/4&amp;quot;). Die sind bei 868 MHz ca. 8,6 Zentimeter. Antennenlängen die länger oder kürzer sind verschlechtern in der Regel die Anpassung. Daher ist eine z.B. 10 Zentimeter lange Antenne (obwohl länger) schlechter als 1/4 Lambda mit 8,6 Zentimeter.&lt;br /&gt;
&lt;br /&gt;
Weitere Informationen sind im {{Link2Forum|Topic=93021|LinkText=Antennenthread}} des Forums zu finden. &lt;br /&gt;
&lt;br /&gt;
Über besondere Antennenkonstruktionen (bitte nach Colinear, Jpole, Yagi suchen) oder Antennen die &amp;quot;Lambda/2&amp;quot; oder gar &amp;quot;Lambda&amp;quot; lang sind  (also ca. 17,2 bzw. 34,5 Zentimeter) kann ein höherer Gewinn erreicht werden. Einher geht aber gleichzeitig eine stärkere Richtwirkung der Antenne. Je kürzer die Antenne, desto kugelförmiger die Abstrahlung. Bei längeren Antennen wird die Abstrahlung mehr und mehr zylinderähnlich, also mit horizontaler Richtwirkung (und in die Richtung ist das Signal dann stärker, daher der Antennen&amp;quot;gewinn&amp;quot;).&lt;br /&gt;
Das hat auch Nachteile, speziell wenn man auch &amp;quot;nach oben&amp;quot; funken will. Besonders wenn man Antennen länger als eine λ/4 Antenne (8,6 Zentimeter) in einem mehretagigen Haus verwenden will, muss man diese daher in der Regel waagerecht/horizontal ausrichten, da alles was in Richtung der Spitze (und dem Fuss) der Antenne liegt schlecht empfangen wird.&lt;br /&gt;
&lt;br /&gt;
Daher: Je mehr Gewinn die Antenne aufweist, desto besser ist die Sende und Empfangsleistung, aber desto mehr Gedanken muss man sich um die Ausrichtung der Antenne machen, um alle Geräte zu empfangen / zu erreichen. &amp;quot;Mehr dB&amp;quot; und speziell &amp;quot;länger&amp;quot; ist also nicht automatisch besser. &lt;br /&gt;
&lt;br /&gt;
Zu beachten ist auch, dass die Sendeleistung der Module gesetzlich geregelt ist und Spezialantennen mit höherem Gewinn ggf. nur an Empfängern erlaubt sind.&lt;br /&gt;
&lt;br /&gt;
Falls man den CUL mit RP-SMA Stecker geordert hat, aber keine passend lange RP-SMA-Antenne verfügbar ist, kann (nur für erste Tests) auch eine abschraubbare Antenne für 802.11b/g WLAN-Geräte (2,4&amp;amp;nbsp;GHz) benutzt werden, so diese anschlusstechnisch auf den RP-SMA-Stecker des CUL passt (dies funktioniert zumindest mit FS20- und EM-Geräten). Deren Länge ist wie oben diskutiert aber nicht optimal, besser ist auf jeden Fall eine speziell auf den Einsatzzweck (Frequenz) abgestimmte Antenne.&lt;br /&gt;
&lt;br /&gt;
== Antennenlänge ==&lt;br /&gt;
Die genauen Antennenlängen sind praktisch schwer zu ermitteln, da auch Zuleitung auf dem CUL zugerechnet werden müssten und ggf Dämpfungen (also z.B. Durchführung der Antenne durch ein Gehäuse, oder gebogene Antennen) die Antennenlänge weiter beeinflussen. Gleichzeitig haben schon Abweichungen von wenigen Millimetern messbaren Einfluss. Die Antennenlänge ist daher immer nur ein Kompromiss.&lt;br /&gt;
&lt;br /&gt;
Exakt berechnet ohne Störeinflüsse wären folgende Antennenlängen nutzbar:&lt;br /&gt;
 868,35 MHz (z.B. HM, FS20, FHT …)&lt;br /&gt;
 1/4 Lambda = 8,63 Zentimeter &lt;br /&gt;
 1/2 Lambda = 17,26 Zentimeter &lt;br /&gt;
 1 Lambda = 34,52 Zentimeter  (Bereits sehr hohe Richtwirkung)&lt;br /&gt;
&lt;br /&gt;
433,92 MHz  (z.B. Intertechno …)&lt;br /&gt;
 1/4 Lambda = 17,27 Zentimeter &lt;br /&gt;
 1/2 Lambda = 34,54 Zentimeter &lt;br /&gt;
&lt;br /&gt;
Folgende Antennenlängen bieten sich praktisch an, diese sind immer etwas kürzer als die optimale Länge, dies wird z.T. durch Leiterlänge im CUL kompensiert.:&lt;br /&gt;
&lt;br /&gt;
 8,6 Zentimeter als 1/4 Lambda für 868,35 MHz&lt;br /&gt;
 17,2 Zentimeter als 1/2 Lambda für 868,35 MHz und zugleich 1/4 Lambda für 433,92 MHz&lt;br /&gt;
 34,5 Zentimeter als Lambda für 868,35 MHz und zugleich 1/2 Lambda für 433,92 MHz&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
&lt;br /&gt;
=== RF-Tuning ===&lt;br /&gt;
Im Gegensatz zu den original FHZ-Zentralen ist das CUL recht schmalbandig, d.h. die Sende- und Empfangsfrequenz wird genauer eingehalten als z.&amp;amp;nbsp;B. bei einer FHZ1x00PC. Dies kann im Zusammenhang mit den eher ungenauen Sendern (z.&amp;amp;nbsp;B. der FHT Raumregler) zu Empfangsproblemen führen. Es kann daher mitunter sinnvoll sein, die Sende- und Empfangsbandbreite des CUL etwas zu erhöhen. Dies senkt jedoch gleichzeitig die Empfindlichkeit.&lt;br /&gt;
&lt;br /&gt;
Bei Empfangsproblemen von z.&amp;amp;nbsp;B. HEM-Sensoren oder dem S300TH kann man folgendes testen:&lt;br /&gt;
&lt;br /&gt;
* Man kann die Frequenz des CUL auf genau 868,35 MHz einstellen. Standardmäßig ist hier aus Kompatibilitätsgründen 868,30 MHz eingestellt. Diese Einstellung wird fest im NVRAM gespeichert und braucht nur einmal vorgenommen zu werden.&lt;br /&gt;
*: &amp;lt;code&amp;gt;set CUL freq 868.350&amp;lt;/code&amp;gt;&lt;br /&gt;
* Es ist möglich die &amp;quot;decision boundary&amp;quot; zu vergrößern, frei beschrieben: die &amp;quot;Entscheidungsgrenze&amp;quot; ob die empfangene Signalflanke digital &amp;quot;0&amp;quot; oder &amp;quot;1&amp;quot; darstellte ({{Link2Forum|Topic=8572|Message=44388|LinkText=siehe Diskussion hier}}). Möglich sind die Werte &amp;quot;4&amp;quot;, &amp;quot;8&amp;quot; und &amp;quot;16&amp;quot;. Default-Einstellung ist hier &amp;quot;4&amp;quot;. Zur Steigerung der Empfangsqualität soll es hilfreich sein, hier &amp;quot;8&amp;quot; einzustellen. Mitunter bringt jedoch erst die Einstellung auf &amp;quot;16&amp;quot; signifikante Verbesserungen beim Empfang von S300TH-Sensoren.&lt;br /&gt;
*: &amp;lt;code&amp;gt;set CUL sens 8&amp;lt;/code&amp;gt;&lt;br /&gt;
* Oft hilft auch, die Bandbreite auf z.&amp;amp;nbsp;B. 464 kHz aufzuweiten.&lt;br /&gt;
*: &amp;lt;code&amp;gt;set CUL bWidth 464&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Selbstbau-/Bastelprojekte ==&lt;br /&gt;
Innerhalb der FHEM-Community werden mittlerweile diverse Bastelprojekte zum Selbstbau eines CUL betrieben. Eine Auswahl dieser Projekte:&lt;br /&gt;
* [[Selbstbau CUL]]&lt;br /&gt;
* [[FHEMduino]]&lt;br /&gt;
* [[SIGNALduino]]&lt;br /&gt;
* [[MapleCUN]] mit STM32 Mikrocontroller&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* Hersteller / Bezugsquelle für CUL: [http://www.busware.de/tiki-index.php?page=CUL busware.de]&lt;br /&gt;
* Google groups [https://groups.google.com/group/cul-fans/ CUL fans], mittlerweile durch das Board {{Link2Forum|Area=cul-fans}} im FHEM Forum ergänzt/ersetzt&lt;br /&gt;
* CUL commandref [https://fhem.de/commandref.html#CUL]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Interfaces]]&lt;br /&gt;
[[Kategorie:CUL|!]]&lt;br /&gt;
[[Kategorie:433MHz]]&lt;br /&gt;
[[Kategorie:868MHz]]&lt;/div&gt;</summary>
		<author><name>Soulman</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=CUL&amp;diff=40668</id>
		<title>CUL</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=CUL&amp;diff=40668"/>
		<updated>2026-01-05T18:49:50Z</updated>

		<summary type="html">&lt;p&gt;Soulman: /* Geräte, die an USB angeschlossen sind (CUL/CUN) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein &#039;&#039;&#039;CUL&#039;&#039;&#039; (&#039;&#039;&#039;C&#039;&#039;&#039;C1101 &#039;&#039;&#039;U&#039;&#039;&#039;SB &#039;&#039;&#039;L&#039;&#039;&#039;ite) ist eine Radiofrequenz/USB-Schnittstelle bestehend aus einem USB-Dongle mit externer [[CUL Ausstattung|Antenne]]. Im USB-Stecker kann ein 8&amp;amp;nbsp;bit Atmel Prozessor die im ISM/SRD-Band empfangenen RF-Daten onboard vorverarbeiten. Je nach aufgespielter [[#FW|Firmware]] kann das CUL verschiedene 868MHz [[CUL HomeMatic und FS20|Protokolle]] empfangen und senden, insbesondere die FS20/FHT/S300/EM/HMS Protokollfamilien. Durch eine kurzzeitige Umschaltung auf 433&amp;amp;nbsp;MHz sind weitere Protokolle zugänglich, z.&amp;amp;nbsp;B. Intertechno, viele Baumarkt-Funksteckdosen.  &lt;br /&gt;
&lt;br /&gt;
== CUL HW ==&lt;br /&gt;
Im Zusammenhang mit diesem Artikel ist vor allem vom &amp;quot;echten&amp;quot; CUL die Rede, als dem USB Hardware-Dongle des Hersteller Busware. Es gibt aber diverse andere Hardware-Schnittstellen, die sich ebenfalls wie ein CUL verhalten, z.b. Netzwerkattached Module ([[CUN]]O), Module zum direkten Aufstecken auch einen Raspberry Pi ([[COC]]), und auf Arduino basierende Lösungen ([[SIGNALduino]]).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Einführung ==&lt;br /&gt;
Die Firmware (culfw) ist quelloffen.  Sie wird auch von verwandten Schnittstellen verwendet, siehe [[CUNO]] (RF+OneWire/LAN-Übergang), [[COC]] (RF+OneWire/Rasberrybus-Übergang), CSM usw.&lt;br /&gt;
&lt;br /&gt;
Im Umfeld von FS20/FHT/EM/S300/HMS (&amp;quot;[[Rfmode|rfmode]] - [[SlowRF]]&amp;quot;) werden die amplitudenmodulierten 1&amp;amp;nbsp;kHz breiten Signale per [[#FW|culfw]] direkt dekodiert und dann per USB weitergegeben.&lt;br /&gt;
&lt;br /&gt;
Das CUL kann mittels des &#039;&#039;&#039;[[CUL (Modul)|CUL Moduls]]&#039;&#039;&#039; (00_CUL.pm) von FHEM angesprochen und somit wie eine FHZ1X00PC verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Das CUL kann auch im HM-Mode als HomeMatic Zentrale alternativ zur CCU oder dem [[HMLAN Konfigurator]] betrieben werden. Bei CULs älter als Version&amp;amp;#160;3 ist jedoch der Speicher zu klein, um die Software für FS20/FHT/S300/EM/HMS und HomeMatic zugleich im Speicher zu halten, hier muss man sich beim [[CUL an einer Fritzbox 7390 flashen|Flashen]] der Firmware für eine Protokollfamilie entscheiden. Mit zwei CULs ist aber auch der Mischbetrieb an einem FHEM Hostrechner möglich. Es ist jedoch nicht angeraten, den CUL bei HM-Geräten zu verwenden, siehe {{Link2Forum|Topic=68145|LinkText=Link}}&lt;br /&gt;
&lt;br /&gt;
Ebenso gibt es ein Modul zur Ansteuerung der [[MAX]]! Heizungsteuerung. Auch hier ist ein Mischbetrieb (MAX! und z.&amp;amp;nbsp;B. FS20 gleichzeitig über ein CUL) obwohl technisch nicht unmöglich {{Link2Forum|Topic=10510|LinkText=nicht angeraten}}.&lt;br /&gt;
&lt;br /&gt;
Ferner ist der Einsatz eines CUL als [[RFR CUL]] für den &#039;&#039;SlowRF&#039;&#039; Mode (jedoch nicht für den &#039;&#039;HomeMatic&#039;&#039; Mode) möglich, um die Reichweite zu erhöhen. Die Verbindung erfolgt hierbei über Funk, sodass keine USB Verbindung zum FHEM Hostrechner erforderlich ist.&lt;br /&gt;
&lt;br /&gt;
Alle diese Modi sind in der Original-[[#FW|culfw]] enthalten und werden z.B. durch die Wahl des &#039;&#039;rfmode&#039;&#039; eingestellt.&lt;br /&gt;
&lt;br /&gt;
Obwohl die nominale Betriebsfrequenz der FHT- und FS20-Komponenten 868,35 MHz beträgt, ist bei aktuellen CUL-Firmwareversionen zum Betrieb mit FHEM die Frequenz  868,30 MHz vorgesehen. Dies hat sich als Kompromiss zum besseren Empfang von EM1000EM (Energiemonitor) Geräten bewährt, &#039;&#039;&#039;obwohl&#039;&#039;&#039; diese nominal mit 868,360 MHz arbeiten. Praktisch ist die Genauigkeit der Sendefrequenz der meisten &#039;&#039;SlowRF&#039;&#039; Geräte wegen der primitiven Sender sehr schlecht und kann deutlich von der nominalen Frequenz abweichen.&lt;br /&gt;
&lt;br /&gt;
Frequenz und Bandbreite können daher im &#039;&#039;SlowRF&#039;&#039; Mode frei angepasst und somit für die örtlichen Empfangsgegebenheiten optimiert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Definition in FHEM ==&lt;br /&gt;
Das CUL wird definiert mit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;define &amp;lt;name&amp;gt; CUL &amp;lt;device&amp;gt; &amp;lt;FHTID&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
als z.b.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;define myCUL CUL /dev/ttyUSB0 0000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Da FHT zur Heizungssterung kaum noch eine Rolle spielen dürfte ist die Vergabe der FHT-ID 0000 sinnvoll, da das CUL dann nicht auf FHT Communication achtet.&lt;br /&gt;
&lt;br /&gt;
Was &amp;lt;device&amp;gt; ist hängt von der Art des CUL ab:&lt;br /&gt;
=== Geräte, die an USB angeschlossen sind (CUL/CUN) ===&lt;br /&gt;
&amp;lt;device&amp;gt; gibt die serielle Schnittstelle an, mit der der CUL kommuniziert. Der Name der seriellen Schnittstelle hängt von der gewählten Distribution und USB-Treiber ab, unter Linux ist dies das Kernel Modul cdc_acm und üblicherweise wird die Schnittstelle /dev/ttyACM0 genannt. Wenn die Linux Distribution über kein Kernel Modul cdc_acm verfügt, dann kann die Schnittstelle über usbserial mit dem folgenden Befehl erzeugt werden:&lt;br /&gt;
modprobe usbserial vendor=0x03eb product=0x204b&lt;br /&gt;
In diesem Fall ist diese Schnittstelle dann wahrscheinlich /dev/ttyUSB0.&lt;br /&gt;
&lt;br /&gt;
Wenn der Name der Schnittstelle ein @ enthält, kann nachfolgend die verwendete Baudrate angegeben werden, z.B.: &lt;br /&gt;
&lt;br /&gt;
/dev/ttyACM0@38400.&lt;br /&gt;
&lt;br /&gt;
Wenn mehrer CULs an einem System betreiben werden sollen, ist es besser die CULs &amp;quot;by-ID&amp;quot; einzubinden. Es kann nämlich ansonsten sein, dass nach einem Neustart die CULs in anderen Reihenfolge zugewiesen werden als bei der Einrichtung. Insbesondere wenn man CUL868 und CUL 433 zugleich betreibt ist das riskant, da falls die CULs sich vertauscht melden, 668 Schaltbefehle an das 433 CUL gehen und umgekehrt. Besser ist es dann die CULs an den USB Port anzustecken, dann mit &lt;br /&gt;
&lt;br /&gt;
 ls /dev/serial/by-id&lt;br /&gt;
&lt;br /&gt;
zu ermittlen wie sich diese melden, z.B.&lt;br /&gt;
 usb-busware.de_CUL868-if00  usb-SHK_NANO_CUL_433-if00-port0&lt;br /&gt;
&lt;br /&gt;
und diese dann mit&lt;br /&gt;
&lt;br /&gt;
 define CUL1 CUL /dev/serial/by-id/usb-SHK_NANO_CUL_433-if00-port0@38400 0000&lt;br /&gt;
 define CUL2 CUL /dev/serial/by-id/usb-busware.de_CUL868-if00@38400 1234&lt;br /&gt;
&lt;br /&gt;
anzubinden. Damit ist sichergestellt, das &amp;quot;CUL1&amp;quot; immer das 433Mhz CUL ist.&lt;br /&gt;
Dabei ist allerdings zu beachten, das original Busware CULs sich immer gleich melden.&lt;br /&gt;
Wenn man also z.b. mehrere Busware 868Mhz CULs einsetzen will, werden die sich alle mit &lt;br /&gt;
 usb-busware.de_CUL868-if00 &lt;br /&gt;
melden und sind nicht unterscheidbar, während nano CULs und ähnlich oft eigene Seriennummern haben.&lt;br /&gt;
&lt;br /&gt;
Wenn die Baudrate mit &amp;quot;directio&amp;quot; angegeben wird (z.B.: /dev/ttyACM0@directio), wird das Perl Modul Device::SerialPort nicht benötigt und FHEM öffnet die Schnittstelle mit einfachem Dateizugriff. Dies sollte dann funktionieren, wenn das Betriebssystem vernünftige Standardwerte für die serielle Schnittstelle verwendet, wie z.B. einige Linux Distributionen oder macOS.&lt;br /&gt;
&lt;br /&gt;
=== Geräte, die mit dem Netzwerk verbunden sind (CUN(O)) ===&lt;br /&gt;
&amp;lt;device&amp;gt; gibt die Hostadresse:Port des Gerätes an, z.B. 192.168.0.244:2323&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Weiteres in der commandref [https://fhem.de/commandref.html#CUL]&lt;br /&gt;
&lt;br /&gt;
== Hinweise zum Betrieb mit FHEM ==&lt;br /&gt;
&#039;&#039;&#039;Anmerkung:&#039;&#039;&#039; Nachfolgende Beispiele sind so wie dargestellt in die FHEM-Eingabezeile oder per Telnet auf FHEM zu übertragen und per &amp;lt;Taste&amp;gt;Enter&amp;lt;/Taste&amp;gt; abzuschicken (nicht &amp;quot;save&amp;quot; klicken); &#039;&#039;&#039;&#039;&#039;myCUL&#039;&#039;&#039;&#039;&#039; ist dabei nur ein Platzhalter und durch den Namen &#039;&#039;&#039;Ihres&#039;&#039;&#039; CUL zu ersetzen. &lt;br /&gt;
&lt;br /&gt;
* Ist Empfang eingeschaltet ?&lt;br /&gt;
*: &amp;lt;code&amp;gt; get myCUL raw C35&amp;lt;/code&amp;gt; (13 = ja, z.&amp;amp;nbsp;b.: C35 = 0D / 13)&lt;br /&gt;
* Auslesen der culfw Version:&lt;br /&gt;
*: &amp;lt;code&amp;gt;get myCUL raw V&amp;lt;/code&amp;gt;&lt;br /&gt;
* LED ausschalten (Achtung: Buchstabe l (L) vorweg für LED, keine Zahl 1)&lt;br /&gt;
*: &amp;lt;code&amp;gt;set myCUL raw l00&amp;lt;/code&amp;gt;&lt;br /&gt;
* LED einschalten&lt;br /&gt;
*: &amp;lt;code&amp;gt;set myCUL raw l01&amp;lt;/code&amp;gt; Blinkt bei Senden oder Empfangen von Paketen&lt;br /&gt;
* LED soll blinken (einmal in der Sekunde)&lt;br /&gt;
*: &amp;lt;code&amp;gt;set myCUL raw l02&amp;lt;/code&amp;gt;&lt;br /&gt;
* Reboot / Reset des CUL:&lt;br /&gt;
*: &amp;lt;code&amp;gt;set myCUL raw B00&amp;lt;/code&amp;gt; Andere Werte als 00 starten das CUL im Bootloader-Modus (=&amp;amp;gt; neue Firmware)&lt;br /&gt;
* Freie CUL Sendezeit ([[1% Regel]]):&lt;br /&gt;
*: &amp;lt;code&amp;gt;get myCUL raw X&amp;lt;/code&amp;gt; 2. Wert ist Sendezeit in 10ms Slots, ein FS20 Befehl braucht ca. 210ms (also 21 Slots), eine FHT Kommunikation wesentlich mehr. Alternativ auch &amp;lt;code&amp;gt;get myCUL credit10ms&amp;lt;/code&amp;gt; ergibt Sendezeit in 10ms Slots&lt;br /&gt;
* Freie Kapazität des FHT Buffers&lt;br /&gt;
*: &amp;lt;code&amp;gt; get myCUL raw T03&amp;lt;/code&amp;gt; Ergebnis Bytes in HEX. Leer = 4a&lt;br /&gt;
* Inhalt des FHT Buffers&lt;br /&gt;
*: &amp;lt;code&amp;gt; get myCUL raw T02&amp;lt;/code&amp;gt; (CUL V2 Buffer ist 74 Bytes groß, Platz für 14 bis 31 FHT Messages). Rückgabe n/a = Buffer ist leer&lt;br /&gt;
* Eingestellte [[Was_ist_der_Hauscode%3F|FHT-ID]]&lt;br /&gt;
*: &amp;lt;code&amp;gt; get myCUL raw T01&amp;lt;/code&amp;gt; &lt;br /&gt;
* Eingestellte Frequenz, Bandbreite etc. Ausgeben&lt;br /&gt;
*: &amp;lt;code&amp;gt; get myCUL ccconf&amp;lt;/code&amp;gt;. &amp;lt;br&amp;gt;Rückgabe z.&amp;amp;nbsp;B.: &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;myCUL ccconf =&amp;amp;gt; freq:868.300MHz bWidth:325kHz rAmpl:42dB sens:4dB&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* eingestelle Bandbreite erhöhen (z.B. auf 464 kHz, mehr hat meist keinen Sinn):&lt;br /&gt;
*:&amp;lt;code&amp;gt;set myCUL bWidth 464&amp;lt;/code&amp;gt;&lt;br /&gt;
* Einstellen der Sendestärke:&lt;br /&gt;
*: &amp;lt;code&amp;gt;set myCUL raw x09&amp;lt;/code&amp;gt; Einstellen der Sendeleistung.&lt;br /&gt;
&lt;br /&gt;
Gültige Werte für die Sendeleistung sind 00-09. Verwendet werden sollten nur die Werte 05-09, diese entsprechen&lt;br /&gt;
-10/-5/0/5/10 Sendeleistung in dB. Default ist x08 = +5dB. Bitte im Interesse von Nachbarn und der Abhörsicherheit den kleinsten problemlos funktionierenden Wert einstellen. Dies ist meistens x07 oder x08. Da speziell die Kommunikation mit den FHTs bidirektional ist, kann die Kommunikation durch höhere Werte oft nicht verbessert werden, da die FHTs selber dadurch nicht stärker senden. Besser versuchen, Lage und Antennenausrichtung des CUL zu verändern. &lt;br /&gt;
&lt;br /&gt;
Werte x00-x04 sind &#039;&#039;&#039;mit&#039;&#039;&#039; Ramping (&#039;&#039;sanfter&#039;&#039; Flankenanstieg anstatt Rechteck) und führen zum Verlust der Kommunikationsfähigkeit mit anderen CULs, z.&amp;amp;nbsp;B. [[RFR CUL]], da die CULs Rampingsignale nicht verstehen (FS20 / FHT und ähnliche Empfänger aber sehr wohl). &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Beim CUL im HomeMatic-Modus kann man (ohne Firmware-Modifikation) die Empfangs-/Sendeparameter &#039;&#039;&#039;nicht&#039;&#039;&#039; verstellen. Die üblichen freq/x09 etc. haben hier keine Wirkung ({{Link2Forum|Topic=10203|Message=57191|LinkText=Quelle}}).&lt;br /&gt;
&lt;br /&gt;
Weiterhin kann man zunehmend mehr Debuggingoutput auf dem CUL einschalten mit&amp;amp;#160;:&lt;br /&gt;
* &amp;lt;code&amp;gt; set CUL1 raw X61&amp;lt;/code&amp;gt; Communication wird im Detail angezeigt&lt;br /&gt;
* &amp;lt;code&amp;gt;set CUL1 raw X25&amp;lt;/code&amp;gt; auch checksum Fehler / unerkannte Protokolle werden gemeldet&lt;br /&gt;
* &amp;lt;code&amp;gt;set CUL1 raw X2F&amp;lt;/code&amp;gt; alle empfangenen Flanken werden gemeldet&lt;br /&gt;
* &amp;lt;code&amp;gt;set CUL1 raw X80&amp;lt;/code&amp;gt; RSSI / Signalstärke jeder Flanke wird gemeldet&lt;br /&gt;
* &amp;lt;code&amp;gt;set CUL1 raw X21&amp;lt;/code&amp;gt; normal Modus&lt;br /&gt;
&lt;br /&gt;
Achtung: Auf Groß- und Kleinschreibung des &amp;quot;x,X&amp;quot; achten!&lt;br /&gt;
&lt;br /&gt;
Die kompletten Kommandos mit Erklärung für CUL sind in der [http://culfw.de/commandref.html commandref] zu finden.&lt;br /&gt;
&lt;br /&gt;
== Versionen ==&lt;br /&gt;
Das CUL gibt es in mehreren Versionen, die sich überwiegend in Prozessor und Speicherkonfiguration unterscheiden.&lt;br /&gt;
&lt;br /&gt;
* CUL V1 - AT90USB162 Prozessor, 0,5 kB RAM, 16 kB Flashmemory, 0,5 kB EEPROM. Einsatzfähigkeit unbekannt (aber vermutlich wie V2). Wird nicht mehr hergestellt.&lt;br /&gt;
* CUL V2 - AT90USB162 Prozessor, 0,5 kB RAM, 16 kB Flashmemory, 0,5 kB EEPROM. Einsatzfähig. Der Flashspeicher ist jedoch zu klein für eine culfw (CUL Firmware), die Code für &#039;&#039;SlowRF&#039;&#039; Geräte und zugleich &#039;&#039;HomeMatic&#039;&#039; Geräte enthält. Es muss also vor dem Flashen der Firmware zwischen zwei jeweils reduzierten Versionen gewählt werden. Da ein CUL ohnehin nicht beide Sendemodi &#039;&#039;&#039;zeitgleich&#039;&#039;&#039; betreiben kann, ist dies keine wirkliche Einschränkung. Wird nicht mehr hergestellt.&lt;br /&gt;
* CUL V3 - ATMega32U4 Prozessor, 2,5 kB RAM, 32 kB Flashmemory, 1 kB EEPROM). Voll einsatzfähig.&lt;br /&gt;
* CUL V4 - ATMega32U2 Prozessor, 1 kB RAM, 32 kB Flashmemory, 1 kB EEPROM. Voll einsatzfähig. Genaugenommen ein &amp;quot;Sparmodell&amp;quot; des V3, um Lieferengpässe des ATMega32U4 Prozessors zu umgehen. Der reduzierte RAM-Speicher verursacht (zumindest gegenwärtig) beim Betrieb mit culfw und FHEM keine Einschränkungen oder Nachteile. Achtung: Flashen des CULv4 setzt DFU-Programmer 0.5.4 oder höher voraus.&lt;br /&gt;
&lt;br /&gt;
Die für die aktuellen Modelle lieferbare Abschirmung ist in der Regel nicht notwendig.&lt;br /&gt;
&lt;br /&gt;
== Firmware {{Anker|FW}} ==&lt;br /&gt;
Die für den CUL und verwandte Hardware wie [[CUN]] und CUR im Zusammenhang mit FHEM überwiegend eingesetzte Firmware culfw findet sich auf der&lt;br /&gt;
* [http://culfw.de CUL Firmware Homepage]&lt;br /&gt;
Dort kann die jeweils aktuelle Version nachgesehen und heruntergeladen werden.&lt;br /&gt;
Alte Stände, Version für Entwickler und ganz aktuelle Änderungen findet man auf der&lt;br /&gt;
* [https://sourceforge.net/projects/culfw/ Sourceforge Projektseite der culfw]&lt;br /&gt;
Hier kann man sich z.B. mit&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
svn co svn://svn.code.sf.net/p/culfw/code/trunk/culfw&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
die aktuelle Version laden.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich gibt es [&amp;quot;leider&amp;quot;...!?] folgende Forks der originalen culfw mit dortigen speziellen Anpassungen/Abweichungen:&lt;br /&gt;
* [https://github.com/heliflieger/a-culfw Alternative culfw for cul devices] auf GitHub und im {{Link2Forum|Topic=35064|LinkText=Forum}} mit Anpassungen unter anderem für InterTechno. Hier könnte es aber zu Funktionseinschränkungen bei anderen Protokollen kommen. In dieser Version ist auch ein Portierung auf ARM-Prozessoren enthalten (siehe {{Link2Forum|Topic=38404|LinkText=Forum}}) mit der die CUL-Firmware auch auf dem HM-CFG-USB-2 und dem [[MAX]] Cube betrieben werden kann.&lt;br /&gt;
* {{Link2Forum|Topic=24436|LinkText=Timestamp Firmware}} mit speziellen Anpassungen für HomeMatic. Bei HomeMatic ist das Timing der Telegramme entscheidend sonst kann es zu &amp;quot;MISSING ACK&amp;quot; bzw. &amp;quot;RESPONSE TIMEOUT:RegisterRead&amp;quot; u.ä. Meldungen kommen.&lt;br /&gt;
&lt;br /&gt;
Alternativ zu den [a]culfw-Firmwares gibt es [[SIGNALduino]] (zumindest auf manchen Hardware-Konstellationen umgeflashed direkt anwendbar und 1:1 lauffähig; inkl. normierter/kompatibler Weiterleitung/Dispatching auf die gleichen zentralen Geräte-Protokoll-Dekodier-Module, die auch von anderer Transceiver-Hardware/-Firmware - CUL etc. - ähnlich angebunden werden (sollen); somit Kommunikation mit vielen Funk-Komponenten auch dort idealerweise immer 1:1 funktionierend).&lt;br /&gt;
&lt;br /&gt;
Generell ist das Angebot an Speicherplatz auf dem im CUL verwendeten ATMega32U2 sehr eingeschränkt, wodurch Erweiterungen ohne Abstriche an anderer Stelle kaum mehr möglich sind. Es wird also die optimale CUL-Firmware für alle Zwecke nie geben, so dass man die Auswahl am konkreten Bedarf klären muss. Wer die Firmware selbst compiliert kann gezielt Funktionen die nicht benötigt werden weglassen und dafür ggf. Funktionen die sonst nicht eingefügt sind hinzufügen.&lt;br /&gt;
&lt;br /&gt;
== Sendefrequenz ==&lt;br /&gt;
Das CUL gibt es in Ausführungen für 868 und 433 MHz. &lt;br /&gt;
Die Sende- und Empfangsfrequenz des CUL sind in weiten Bereichen einstellbar, im &#039;&#039;SlowRF&#039;&#039; Mode auch durch direkte Befehle aus FHEM (im &#039;&#039;HomeMatic&#039;&#039; Mode derzeit nicht unterstützt). Der bauliche Unterschied der 868 und 433 MHz CULs ist ein auf das Frequenzband richtig abgestimmter HF-Eingangskreis inklusive Antennenlänge.&lt;br /&gt;
&lt;br /&gt;
Es ist durchaus möglich, ein 868 MHz CUL auf 433 MHz einzustellen. Da dann aber die HF-Eingangskreis-Abstimmung und Antennenlänge nicht korrekt sind, ist Empfangs- und Sendeleistung suboptimal, die Reichweite sinkt. Dennoch wird diese Möglichkeit des freien Einstellens durch das FHEM Intertechnomodul genutzt, da Intertechnokomponenten mit 433 MHz arbeiten. Dazu wird beim Senden eines Intertechno-Befehls die Frequenz eines 868 MHz CULs kurz umgestellt.&lt;br /&gt;
Besser ist aber die Nutzung eines dedizierten 433 MHz CUL für Intertechno.&lt;br /&gt;
&lt;br /&gt;
== Antenne ==&lt;br /&gt;
Der CUL ist mit RP-SMA-Stecker für die Antenne aber auch mit angelöteter Drahtantenne lieferbar.&lt;br /&gt;
Funktional besteht kein Unterschied: auch die &amp;quot;richtige&amp;quot; Antenne ist (in diesem Fall) nur ein Draht, jedoch  gummiummantelt und eventuell mit einem Knickgelenk und einem Schraubanschluss versehen, d.h. die Drahtantenne sieht nur unschön aus.&lt;br /&gt;
&lt;br /&gt;
Bei einer Antenne sind zwei Dinge auseinanderzuhalten: Einmal die Anpassung sowie die Abstrahlungscharakteristik. &lt;br /&gt;
* &#039;&#039;&#039;Anpassung&#039;&#039;&#039; Eine Antenne ist typischerweise für eine bestimmte Frequenz konstruiert. Wenn die Konstruktionsfrequenz nicht mit der Frequenz übereinstimmt, auf der die Antenne senden und empfangen soll, ist die Anpassung schlecht. Dies führt zu Verlusten bei der Übertragung. Typische Kennwerte für eine Anpassung sind das Stehwellenverhältnis (SWR) sowie die Impedanz. Beide Größen können per Messgerät bestimmt werden, inzwischen gibt es für 150 Euro entsprechende Geräte. Wer eine Antenne selbst konstruiert, sollte ein solches Gerät zumindest ausborgen, um seine Antenne zu bestimmen.&lt;br /&gt;
* &#039;&#039;&#039;Abstrahlung&#039;&#039;&#039; Es gibt mehrere Arten von Antennen, die sich in der Art der Strahlung unterscheiden. Richtantennen versuchen Signale nur in eine bestimmte Richtung zu versenden, Dipole versuchen in die gesamte Umgebung zu senden bzw zu empfangen. Während es bei Anpassung nur die Kategorien &amp;quot;gut&amp;quot; und &amp;quot;schlecht&amp;quot; gibt, ist bei der Abstrahlung eher auf &amp;quot;zweckmäßig&amp;quot; und &amp;quot;unzweckmäßig&amp;quot; zu achten.&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich hängen Abstrahlung und Antennengewinn zusammen. Die Energie, die eine (perfekt angepasste) Antenne strahlt, wird durch die Antennenkonstruktion weder verdoppelt oder halbiert, sondern nur gebündelt. Während ein Dipol in alle Richtungen abstrahlt, bündelt eine Richtantenne dieselbe Energie in eine bestimmte Richtung. Insofern muss man bei der Antennenkonstruktion überlegen, woher die Signale kommen bzw wohin sie gehen sollen. Jeder Antennengewinn geht einher mit einer Einschränkung bei der Sende/Empfangsrichtung, es sei denn, man verbessert die Anpassung der Antenne. &lt;br /&gt;
&lt;br /&gt;
Leider kann man auch bei gekauften Antennen nicht davon ausgehen, dass sie korrekt angepasst sind. Es gibt Berichte im Forum, wonach es insbesondere bei 433 MHz-Antennen eher ein Glücksspiel ist, ob man eine vernünftig angepasste Antenne bekommt. Daher kann es durchaus sein, dass eine Eigenbauantenne wesentlich bessere Werte liefert als eine käuflich erworbene. &lt;br /&gt;
&lt;br /&gt;
Eine zentrale Größe bei der Anpassung ist die Länge der Antenne. Wenn man einen Dipol verwendet, muss diese zweckmäßigerweise so groß sein wie ein Viertel der Wellenlänge (&amp;quot;Lambda/4&amp;quot;). Die sind bei 868 MHz ca. 8,6 Zentimeter. Antennenlängen die länger oder kürzer sind verschlechtern in der Regel die Anpassung. Daher ist eine z.B. 10 Zentimeter lange Antenne (obwohl länger) schlechter als 1/4 Lambda mit 8,6 Zentimeter.&lt;br /&gt;
&lt;br /&gt;
Weitere Informationen sind im {{Link2Forum|Topic=93021|LinkText=Antennenthread}} des Forums zu finden. &lt;br /&gt;
&lt;br /&gt;
Über besondere Antennenkonstruktionen (bitte nach Colinear, Jpole, Yagi suchen) oder Antennen die &amp;quot;Lambda/2&amp;quot; oder gar &amp;quot;Lambda&amp;quot; lang sind  (also ca. 17,2 bzw. 34,5 Zentimeter) kann ein höherer Gewinn erreicht werden. Einher geht aber gleichzeitig eine stärkere Richtwirkung der Antenne. Je kürzer die Antenne, desto kugelförmiger die Abstrahlung. Bei längeren Antennen wird die Abstrahlung mehr und mehr zylinderähnlich, also mit horizontaler Richtwirkung (und in die Richtung ist das Signal dann stärker, daher der Antennen&amp;quot;gewinn&amp;quot;).&lt;br /&gt;
Das hat auch Nachteile, speziell wenn man auch &amp;quot;nach oben&amp;quot; funken will. Besonders wenn man Antennen länger als eine λ/4 Antenne (8,6 Zentimeter) in einem mehretagigen Haus verwenden will, muss man diese daher in der Regel waagerecht/horizontal ausrichten, da alles was in Richtung der Spitze (und dem Fuss) der Antenne liegt schlecht empfangen wird.&lt;br /&gt;
&lt;br /&gt;
Daher: Je mehr Gewinn die Antenne aufweist, desto besser ist die Sende und Empfangsleistung, aber desto mehr Gedanken muss man sich um die Ausrichtung der Antenne machen, um alle Geräte zu empfangen / zu erreichen. &amp;quot;Mehr dB&amp;quot; und speziell &amp;quot;länger&amp;quot; ist also nicht automatisch besser. &lt;br /&gt;
&lt;br /&gt;
Zu beachten ist auch, dass die Sendeleistung der Module gesetzlich geregelt ist und Spezialantennen mit höherem Gewinn ggf. nur an Empfängern erlaubt sind.&lt;br /&gt;
&lt;br /&gt;
Falls man den CUL mit RP-SMA Stecker geordert hat, aber keine passend lange RP-SMA-Antenne verfügbar ist, kann (nur für erste Tests) auch eine abschraubbare Antenne für 802.11b/g WLAN-Geräte (2,4&amp;amp;nbsp;GHz) benutzt werden, so diese anschlusstechnisch auf den RP-SMA-Stecker des CUL passt (dies funktioniert zumindest mit FS20- und EM-Geräten). Deren Länge ist wie oben diskutiert aber nicht optimal, besser ist auf jeden Fall eine speziell auf den Einsatzzweck (Frequenz) abgestimmte Antenne.&lt;br /&gt;
&lt;br /&gt;
== Antennenlänge ==&lt;br /&gt;
Die genauen Antennenlängen sind praktisch schwer zu ermitteln, da auch Zuleitung auf dem CUL zugerechnet werden müssten und ggf Dämpfungen (also z.B. Durchführung der Antenne durch ein Gehäuse, oder gebogene Antennen) die Antennenlänge weiter beeinflussen. Gleichzeitig haben schon Abweichungen von wenigen Millimetern messbaren Einfluss. Die Antennenlänge ist daher immer nur ein Kompromiss.&lt;br /&gt;
&lt;br /&gt;
Exakt berechnet ohne Störeinflüsse wären folgende Antennenlängen nutzbar:&lt;br /&gt;
 868,35 MHz (z.B. HM, FS20, FHT …)&lt;br /&gt;
 1/4 Lambda = 8,63 Zentimeter &lt;br /&gt;
 1/2 Lambda = 17,26 Zentimeter &lt;br /&gt;
 1 Lambda = 34,52 Zentimeter  (Bereits sehr hohe Richtwirkung)&lt;br /&gt;
&lt;br /&gt;
433,92 MHz  (z.B. Intertechno …)&lt;br /&gt;
 1/4 Lambda = 17,27 Zentimeter &lt;br /&gt;
 1/2 Lambda = 34,54 Zentimeter &lt;br /&gt;
&lt;br /&gt;
Folgende Antennenlängen bieten sich praktisch an, diese sind immer etwas kürzer als die optimale Länge, dies wird z.T. durch Leiterlänge im CUL kompensiert.:&lt;br /&gt;
&lt;br /&gt;
 8,6 Zentimeter als 1/4 Lambda für 868,35 MHz&lt;br /&gt;
 17,2 Zentimeter als 1/2 Lambda für 868,35 MHz und zugleich 1/4 Lambda für 433,92 MHz&lt;br /&gt;
 34,5 Zentimeter als Lambda für 868,35 MHz und zugleich 1/2 Lambda für 433,92 MHz&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
&lt;br /&gt;
=== RF-Tuning ===&lt;br /&gt;
Im Gegensatz zu den original FHZ-Zentralen ist das CUL recht schmalbandig, d.h. die Sende- und Empfangsfrequenz wird genauer eingehalten als z.&amp;amp;nbsp;B. bei einer FHZ1x00PC. Dies kann im Zusammenhang mit den eher ungenauen Sendern (z.&amp;amp;nbsp;B. der FHT Raumregler) zu Empfangsproblemen führen. Es kann daher mitunter sinnvoll sein, die Sende- und Empfangsbandbreite des CUL etwas zu erhöhen. Dies senkt jedoch gleichzeitig die Empfindlichkeit.&lt;br /&gt;
&lt;br /&gt;
Bei Empfangsproblemen von z.&amp;amp;nbsp;B. HEM-Sensoren oder dem S300TH kann man folgendes testen:&lt;br /&gt;
&lt;br /&gt;
* Man kann die Frequenz des CUL auf genau 868,35 MHz einstellen. Standardmäßig ist hier aus Kompatibilitätsgründen 868,30 MHz eingestellt. Diese Einstellung wird fest im NVRAM gespeichert und braucht nur einmal vorgenommen zu werden.&lt;br /&gt;
*: &amp;lt;code&amp;gt;set CUL freq 868.350&amp;lt;/code&amp;gt;&lt;br /&gt;
* Es ist möglich die &amp;quot;decision boundary&amp;quot; zu vergrößern, frei beschrieben: die &amp;quot;Entscheidungsgrenze&amp;quot; ob die empfangene Signalflanke digital &amp;quot;0&amp;quot; oder &amp;quot;1&amp;quot; darstellte ({{Link2Forum|Topic=8572|Message=44388|LinkText=siehe Diskussion hier}}). Möglich sind die Werte &amp;quot;4&amp;quot;, &amp;quot;8&amp;quot; und &amp;quot;16&amp;quot;. Default-Einstellung ist hier &amp;quot;4&amp;quot;. Zur Steigerung der Empfangsqualität soll es hilfreich sein, hier &amp;quot;8&amp;quot; einzustellen. Mitunter bringt jedoch erst die Einstellung auf &amp;quot;16&amp;quot; signifikante Verbesserungen beim Empfang von S300TH-Sensoren.&lt;br /&gt;
*: &amp;lt;code&amp;gt;set CUL sens 8&amp;lt;/code&amp;gt;&lt;br /&gt;
* Oft hilft auch, die Bandbreite auf z.&amp;amp;nbsp;B. 464 kHz aufzuweiten.&lt;br /&gt;
*: &amp;lt;code&amp;gt;set CUL bWidth 464&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Selbstbau-/Bastelprojekte ==&lt;br /&gt;
Innerhalb der FHEM-Community werden mittlerweile diverse Bastelprojekte zum Selbstbau eines CUL betrieben. Eine Auswahl dieser Projekte:&lt;br /&gt;
* [[Selbstbau CUL]]&lt;br /&gt;
* [[FHEMduino]]&lt;br /&gt;
* [[SIGNALduino]]&lt;br /&gt;
* [[MapleCUN]] mit STM32 Mikrocontroller&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* Hersteller / Bezugsquelle für CUL: [http://www.busware.de/tiki-index.php?page=CUL busware.de]&lt;br /&gt;
* Google groups [https://groups.google.com/group/cul-fans/ CUL fans], mittlerweile durch das Board {{Link2Forum|Area=cul-fans}} im FHEM Forum ergänzt/ersetzt&lt;br /&gt;
* CUL commandref [https://fhem.de/commandref.html#CUL]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Interfaces]]&lt;br /&gt;
[[Kategorie:CUL|!]]&lt;br /&gt;
[[Kategorie:433MHz]]&lt;br /&gt;
[[Kategorie:868MHz]]&lt;/div&gt;</summary>
		<author><name>Soulman</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=CUL&amp;diff=40667</id>
		<title>CUL</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=CUL&amp;diff=40667"/>
		<updated>2026-01-05T18:49:08Z</updated>

		<summary type="html">&lt;p&gt;Soulman: /* Geräte, die an USB angeschlossen sind (CUL/CUN) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein &#039;&#039;&#039;CUL&#039;&#039;&#039; (&#039;&#039;&#039;C&#039;&#039;&#039;C1101 &#039;&#039;&#039;U&#039;&#039;&#039;SB &#039;&#039;&#039;L&#039;&#039;&#039;ite) ist eine Radiofrequenz/USB-Schnittstelle bestehend aus einem USB-Dongle mit externer [[CUL Ausstattung|Antenne]]. Im USB-Stecker kann ein 8&amp;amp;nbsp;bit Atmel Prozessor die im ISM/SRD-Band empfangenen RF-Daten onboard vorverarbeiten. Je nach aufgespielter [[#FW|Firmware]] kann das CUL verschiedene 868MHz [[CUL HomeMatic und FS20|Protokolle]] empfangen und senden, insbesondere die FS20/FHT/S300/EM/HMS Protokollfamilien. Durch eine kurzzeitige Umschaltung auf 433&amp;amp;nbsp;MHz sind weitere Protokolle zugänglich, z.&amp;amp;nbsp;B. Intertechno, viele Baumarkt-Funksteckdosen.  &lt;br /&gt;
&lt;br /&gt;
== CUL HW ==&lt;br /&gt;
Im Zusammenhang mit diesem Artikel ist vor allem vom &amp;quot;echten&amp;quot; CUL die Rede, als dem USB Hardware-Dongle des Hersteller Busware. Es gibt aber diverse andere Hardware-Schnittstellen, die sich ebenfalls wie ein CUL verhalten, z.b. Netzwerkattached Module ([[CUN]]O), Module zum direkten Aufstecken auch einen Raspberry Pi ([[COC]]), und auf Arduino basierende Lösungen ([[SIGNALduino]]).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Einführung ==&lt;br /&gt;
Die Firmware (culfw) ist quelloffen.  Sie wird auch von verwandten Schnittstellen verwendet, siehe [[CUNO]] (RF+OneWire/LAN-Übergang), [[COC]] (RF+OneWire/Rasberrybus-Übergang), CSM usw.&lt;br /&gt;
&lt;br /&gt;
Im Umfeld von FS20/FHT/EM/S300/HMS (&amp;quot;[[Rfmode|rfmode]] - [[SlowRF]]&amp;quot;) werden die amplitudenmodulierten 1&amp;amp;nbsp;kHz breiten Signale per [[#FW|culfw]] direkt dekodiert und dann per USB weitergegeben.&lt;br /&gt;
&lt;br /&gt;
Das CUL kann mittels des &#039;&#039;&#039;[[CUL (Modul)|CUL Moduls]]&#039;&#039;&#039; (00_CUL.pm) von FHEM angesprochen und somit wie eine FHZ1X00PC verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Das CUL kann auch im HM-Mode als HomeMatic Zentrale alternativ zur CCU oder dem [[HMLAN Konfigurator]] betrieben werden. Bei CULs älter als Version&amp;amp;#160;3 ist jedoch der Speicher zu klein, um die Software für FS20/FHT/S300/EM/HMS und HomeMatic zugleich im Speicher zu halten, hier muss man sich beim [[CUL an einer Fritzbox 7390 flashen|Flashen]] der Firmware für eine Protokollfamilie entscheiden. Mit zwei CULs ist aber auch der Mischbetrieb an einem FHEM Hostrechner möglich. Es ist jedoch nicht angeraten, den CUL bei HM-Geräten zu verwenden, siehe {{Link2Forum|Topic=68145|LinkText=Link}}&lt;br /&gt;
&lt;br /&gt;
Ebenso gibt es ein Modul zur Ansteuerung der [[MAX]]! Heizungsteuerung. Auch hier ist ein Mischbetrieb (MAX! und z.&amp;amp;nbsp;B. FS20 gleichzeitig über ein CUL) obwohl technisch nicht unmöglich {{Link2Forum|Topic=10510|LinkText=nicht angeraten}}.&lt;br /&gt;
&lt;br /&gt;
Ferner ist der Einsatz eines CUL als [[RFR CUL]] für den &#039;&#039;SlowRF&#039;&#039; Mode (jedoch nicht für den &#039;&#039;HomeMatic&#039;&#039; Mode) möglich, um die Reichweite zu erhöhen. Die Verbindung erfolgt hierbei über Funk, sodass keine USB Verbindung zum FHEM Hostrechner erforderlich ist.&lt;br /&gt;
&lt;br /&gt;
Alle diese Modi sind in der Original-[[#FW|culfw]] enthalten und werden z.B. durch die Wahl des &#039;&#039;rfmode&#039;&#039; eingestellt.&lt;br /&gt;
&lt;br /&gt;
Obwohl die nominale Betriebsfrequenz der FHT- und FS20-Komponenten 868,35 MHz beträgt, ist bei aktuellen CUL-Firmwareversionen zum Betrieb mit FHEM die Frequenz  868,30 MHz vorgesehen. Dies hat sich als Kompromiss zum besseren Empfang von EM1000EM (Energiemonitor) Geräten bewährt, &#039;&#039;&#039;obwohl&#039;&#039;&#039; diese nominal mit 868,360 MHz arbeiten. Praktisch ist die Genauigkeit der Sendefrequenz der meisten &#039;&#039;SlowRF&#039;&#039; Geräte wegen der primitiven Sender sehr schlecht und kann deutlich von der nominalen Frequenz abweichen.&lt;br /&gt;
&lt;br /&gt;
Frequenz und Bandbreite können daher im &#039;&#039;SlowRF&#039;&#039; Mode frei angepasst und somit für die örtlichen Empfangsgegebenheiten optimiert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Definition in FHEM ==&lt;br /&gt;
Das CUL wird definiert mit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;define &amp;lt;name&amp;gt; CUL &amp;lt;device&amp;gt; &amp;lt;FHTID&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
als z.b.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;define myCUL CUL /dev/ttyUSB0 0000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Da FHT zur Heizungssterung kaum noch eine Rolle spielen dürfte ist die Vergabe der FHT-ID 0000 sinnvoll, da das CUL dann nicht auf FHT Communication achtet.&lt;br /&gt;
&lt;br /&gt;
Was &amp;lt;device&amp;gt; ist hängt von der Art des CUL ab:&lt;br /&gt;
=== Geräte, die an USB angeschlossen sind (CUL/CUN) ===&lt;br /&gt;
&amp;lt;device&amp;gt; gibt die serielle Schnittstelle an, mit der der CUL kommuniziert. Der Name der seriellen Schnittstelle hängt von der gewählten Distribution und USB-Treiber ab, unter Linux ist dies das Kernel Modul cdc_acm und üblicherweise wird die Schnittstelle /dev/ttyACM0 genannt. Wenn die Linux Distribution über kein Kernel Modul cdc_acm verfügt, dann kann die Schnittstelle über usbserial mit dem folgenden Befehl erzeugt werden:&lt;br /&gt;
modprobe usbserial vendor=0x03eb product=0x204b&lt;br /&gt;
In diesem Fall ist diese Schnittstelle dann wahrscheinlich /dev/ttyUSB0.&lt;br /&gt;
&lt;br /&gt;
Wenn der Name der Schnittstelle ein @ enthält, kann nachfolgend die verwendete Baudrate angegeben werden, z.B.: /dev/ttyACM0@38400.&lt;br /&gt;
&lt;br /&gt;
Wenn mehrer CULs an einem System betreiben werden sollen, ist es besser die CULs &amp;quot;by-ID&amp;quot; einzubinden. Es kann nämlich ansonsten sein, dass nach einem Neustart die CULs in anderen Reihenfolge zugewiesen werden als bei der Einrichtung. Insbesondere wenn man CUL868 und CUL 433 zugleich betreibt ist das riskant, da falls die CULs sich vertauscht melden, 668 Schaltbefehle an das 433 CUL gehen und umgekehrt. Besser ist es dann die CULs an den USB Port anzustecken, dann mit &lt;br /&gt;
&lt;br /&gt;
 ls /dev/serial/by-id&lt;br /&gt;
&lt;br /&gt;
zu ermittlen wie sich diese melden, z.B.&lt;br /&gt;
 usb-busware.de_CUL868-if00  usb-SHK_NANO_CUL_433-if00-port0&lt;br /&gt;
&lt;br /&gt;
und diese dann mit&lt;br /&gt;
&lt;br /&gt;
 define CUL1 CUL /dev/serial/by-id/usb-SHK_NANO_CUL_433-if00-port0@38400 0000&lt;br /&gt;
 define CUL2 CUL /dev/serial/by-id/usb-busware.de_CUL868-if00@38400 1234&lt;br /&gt;
&lt;br /&gt;
anzubinden. Damit ist sichergestellt, das &amp;quot;CUL1&amp;quot; immer das 433Mhz CUL ist.&lt;br /&gt;
Dabei ist allerdings zu beachten, das original Busware CULs sich immer gleich melden.&lt;br /&gt;
Wenn man also z.b. mehrere Busware 868Mhz CULs einsetzen will, werden die sich alle mit &lt;br /&gt;
 usb-busware.de_CUL868-if00 &lt;br /&gt;
melden und sind nicht unterscheidbar, während nano CULs und ähnlich oft eigene Seriennummern haben.&lt;br /&gt;
&lt;br /&gt;
Wenn die Baudrate mit &amp;quot;directio&amp;quot; angegeben wird (z.B.: /dev/ttyACM0@directio), wird das Perl Modul Device::SerialPort nicht benötigt und FHEM öffnet die Schnittstelle mit einfachem Dateizugriff. Dies sollte dann funktionieren, wenn das Betriebssystem vernünftige Standardwerte für die serielle Schnittstelle verwendet, wie z.B. einige Linux Distributionen oder macOS.&lt;br /&gt;
&lt;br /&gt;
=== Geräte, die mit dem Netzwerk verbunden sind (CUN(O)) ===&lt;br /&gt;
&amp;lt;device&amp;gt; gibt die Hostadresse:Port des Gerätes an, z.B. 192.168.0.244:2323&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Weiteres in der commandref [https://fhem.de/commandref.html#CUL]&lt;br /&gt;
&lt;br /&gt;
== Hinweise zum Betrieb mit FHEM ==&lt;br /&gt;
&#039;&#039;&#039;Anmerkung:&#039;&#039;&#039; Nachfolgende Beispiele sind so wie dargestellt in die FHEM-Eingabezeile oder per Telnet auf FHEM zu übertragen und per &amp;lt;Taste&amp;gt;Enter&amp;lt;/Taste&amp;gt; abzuschicken (nicht &amp;quot;save&amp;quot; klicken); &#039;&#039;&#039;&#039;&#039;myCUL&#039;&#039;&#039;&#039;&#039; ist dabei nur ein Platzhalter und durch den Namen &#039;&#039;&#039;Ihres&#039;&#039;&#039; CUL zu ersetzen. &lt;br /&gt;
&lt;br /&gt;
* Ist Empfang eingeschaltet ?&lt;br /&gt;
*: &amp;lt;code&amp;gt; get myCUL raw C35&amp;lt;/code&amp;gt; (13 = ja, z.&amp;amp;nbsp;b.: C35 = 0D / 13)&lt;br /&gt;
* Auslesen der culfw Version:&lt;br /&gt;
*: &amp;lt;code&amp;gt;get myCUL raw V&amp;lt;/code&amp;gt;&lt;br /&gt;
* LED ausschalten (Achtung: Buchstabe l (L) vorweg für LED, keine Zahl 1)&lt;br /&gt;
*: &amp;lt;code&amp;gt;set myCUL raw l00&amp;lt;/code&amp;gt;&lt;br /&gt;
* LED einschalten&lt;br /&gt;
*: &amp;lt;code&amp;gt;set myCUL raw l01&amp;lt;/code&amp;gt; Blinkt bei Senden oder Empfangen von Paketen&lt;br /&gt;
* LED soll blinken (einmal in der Sekunde)&lt;br /&gt;
*: &amp;lt;code&amp;gt;set myCUL raw l02&amp;lt;/code&amp;gt;&lt;br /&gt;
* Reboot / Reset des CUL:&lt;br /&gt;
*: &amp;lt;code&amp;gt;set myCUL raw B00&amp;lt;/code&amp;gt; Andere Werte als 00 starten das CUL im Bootloader-Modus (=&amp;amp;gt; neue Firmware)&lt;br /&gt;
* Freie CUL Sendezeit ([[1% Regel]]):&lt;br /&gt;
*: &amp;lt;code&amp;gt;get myCUL raw X&amp;lt;/code&amp;gt; 2. Wert ist Sendezeit in 10ms Slots, ein FS20 Befehl braucht ca. 210ms (also 21 Slots), eine FHT Kommunikation wesentlich mehr. Alternativ auch &amp;lt;code&amp;gt;get myCUL credit10ms&amp;lt;/code&amp;gt; ergibt Sendezeit in 10ms Slots&lt;br /&gt;
* Freie Kapazität des FHT Buffers&lt;br /&gt;
*: &amp;lt;code&amp;gt; get myCUL raw T03&amp;lt;/code&amp;gt; Ergebnis Bytes in HEX. Leer = 4a&lt;br /&gt;
* Inhalt des FHT Buffers&lt;br /&gt;
*: &amp;lt;code&amp;gt; get myCUL raw T02&amp;lt;/code&amp;gt; (CUL V2 Buffer ist 74 Bytes groß, Platz für 14 bis 31 FHT Messages). Rückgabe n/a = Buffer ist leer&lt;br /&gt;
* Eingestellte [[Was_ist_der_Hauscode%3F|FHT-ID]]&lt;br /&gt;
*: &amp;lt;code&amp;gt; get myCUL raw T01&amp;lt;/code&amp;gt; &lt;br /&gt;
* Eingestellte Frequenz, Bandbreite etc. Ausgeben&lt;br /&gt;
*: &amp;lt;code&amp;gt; get myCUL ccconf&amp;lt;/code&amp;gt;. &amp;lt;br&amp;gt;Rückgabe z.&amp;amp;nbsp;B.: &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;myCUL ccconf =&amp;amp;gt; freq:868.300MHz bWidth:325kHz rAmpl:42dB sens:4dB&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* eingestelle Bandbreite erhöhen (z.B. auf 464 kHz, mehr hat meist keinen Sinn):&lt;br /&gt;
*:&amp;lt;code&amp;gt;set myCUL bWidth 464&amp;lt;/code&amp;gt;&lt;br /&gt;
* Einstellen der Sendestärke:&lt;br /&gt;
*: &amp;lt;code&amp;gt;set myCUL raw x09&amp;lt;/code&amp;gt; Einstellen der Sendeleistung.&lt;br /&gt;
&lt;br /&gt;
Gültige Werte für die Sendeleistung sind 00-09. Verwendet werden sollten nur die Werte 05-09, diese entsprechen&lt;br /&gt;
-10/-5/0/5/10 Sendeleistung in dB. Default ist x08 = +5dB. Bitte im Interesse von Nachbarn und der Abhörsicherheit den kleinsten problemlos funktionierenden Wert einstellen. Dies ist meistens x07 oder x08. Da speziell die Kommunikation mit den FHTs bidirektional ist, kann die Kommunikation durch höhere Werte oft nicht verbessert werden, da die FHTs selber dadurch nicht stärker senden. Besser versuchen, Lage und Antennenausrichtung des CUL zu verändern. &lt;br /&gt;
&lt;br /&gt;
Werte x00-x04 sind &#039;&#039;&#039;mit&#039;&#039;&#039; Ramping (&#039;&#039;sanfter&#039;&#039; Flankenanstieg anstatt Rechteck) und führen zum Verlust der Kommunikationsfähigkeit mit anderen CULs, z.&amp;amp;nbsp;B. [[RFR CUL]], da die CULs Rampingsignale nicht verstehen (FS20 / FHT und ähnliche Empfänger aber sehr wohl). &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Beim CUL im HomeMatic-Modus kann man (ohne Firmware-Modifikation) die Empfangs-/Sendeparameter &#039;&#039;&#039;nicht&#039;&#039;&#039; verstellen. Die üblichen freq/x09 etc. haben hier keine Wirkung ({{Link2Forum|Topic=10203|Message=57191|LinkText=Quelle}}).&lt;br /&gt;
&lt;br /&gt;
Weiterhin kann man zunehmend mehr Debuggingoutput auf dem CUL einschalten mit&amp;amp;#160;:&lt;br /&gt;
* &amp;lt;code&amp;gt; set CUL1 raw X61&amp;lt;/code&amp;gt; Communication wird im Detail angezeigt&lt;br /&gt;
* &amp;lt;code&amp;gt;set CUL1 raw X25&amp;lt;/code&amp;gt; auch checksum Fehler / unerkannte Protokolle werden gemeldet&lt;br /&gt;
* &amp;lt;code&amp;gt;set CUL1 raw X2F&amp;lt;/code&amp;gt; alle empfangenen Flanken werden gemeldet&lt;br /&gt;
* &amp;lt;code&amp;gt;set CUL1 raw X80&amp;lt;/code&amp;gt; RSSI / Signalstärke jeder Flanke wird gemeldet&lt;br /&gt;
* &amp;lt;code&amp;gt;set CUL1 raw X21&amp;lt;/code&amp;gt; normal Modus&lt;br /&gt;
&lt;br /&gt;
Achtung: Auf Groß- und Kleinschreibung des &amp;quot;x,X&amp;quot; achten!&lt;br /&gt;
&lt;br /&gt;
Die kompletten Kommandos mit Erklärung für CUL sind in der [http://culfw.de/commandref.html commandref] zu finden.&lt;br /&gt;
&lt;br /&gt;
== Versionen ==&lt;br /&gt;
Das CUL gibt es in mehreren Versionen, die sich überwiegend in Prozessor und Speicherkonfiguration unterscheiden.&lt;br /&gt;
&lt;br /&gt;
* CUL V1 - AT90USB162 Prozessor, 0,5 kB RAM, 16 kB Flashmemory, 0,5 kB EEPROM. Einsatzfähigkeit unbekannt (aber vermutlich wie V2). Wird nicht mehr hergestellt.&lt;br /&gt;
* CUL V2 - AT90USB162 Prozessor, 0,5 kB RAM, 16 kB Flashmemory, 0,5 kB EEPROM. Einsatzfähig. Der Flashspeicher ist jedoch zu klein für eine culfw (CUL Firmware), die Code für &#039;&#039;SlowRF&#039;&#039; Geräte und zugleich &#039;&#039;HomeMatic&#039;&#039; Geräte enthält. Es muss also vor dem Flashen der Firmware zwischen zwei jeweils reduzierten Versionen gewählt werden. Da ein CUL ohnehin nicht beide Sendemodi &#039;&#039;&#039;zeitgleich&#039;&#039;&#039; betreiben kann, ist dies keine wirkliche Einschränkung. Wird nicht mehr hergestellt.&lt;br /&gt;
* CUL V3 - ATMega32U4 Prozessor, 2,5 kB RAM, 32 kB Flashmemory, 1 kB EEPROM). Voll einsatzfähig.&lt;br /&gt;
* CUL V4 - ATMega32U2 Prozessor, 1 kB RAM, 32 kB Flashmemory, 1 kB EEPROM. Voll einsatzfähig. Genaugenommen ein &amp;quot;Sparmodell&amp;quot; des V3, um Lieferengpässe des ATMega32U4 Prozessors zu umgehen. Der reduzierte RAM-Speicher verursacht (zumindest gegenwärtig) beim Betrieb mit culfw und FHEM keine Einschränkungen oder Nachteile. Achtung: Flashen des CULv4 setzt DFU-Programmer 0.5.4 oder höher voraus.&lt;br /&gt;
&lt;br /&gt;
Die für die aktuellen Modelle lieferbare Abschirmung ist in der Regel nicht notwendig.&lt;br /&gt;
&lt;br /&gt;
== Firmware {{Anker|FW}} ==&lt;br /&gt;
Die für den CUL und verwandte Hardware wie [[CUN]] und CUR im Zusammenhang mit FHEM überwiegend eingesetzte Firmware culfw findet sich auf der&lt;br /&gt;
* [http://culfw.de CUL Firmware Homepage]&lt;br /&gt;
Dort kann die jeweils aktuelle Version nachgesehen und heruntergeladen werden.&lt;br /&gt;
Alte Stände, Version für Entwickler und ganz aktuelle Änderungen findet man auf der&lt;br /&gt;
* [https://sourceforge.net/projects/culfw/ Sourceforge Projektseite der culfw]&lt;br /&gt;
Hier kann man sich z.B. mit&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
svn co svn://svn.code.sf.net/p/culfw/code/trunk/culfw&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
die aktuelle Version laden.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich gibt es [&amp;quot;leider&amp;quot;...!?] folgende Forks der originalen culfw mit dortigen speziellen Anpassungen/Abweichungen:&lt;br /&gt;
* [https://github.com/heliflieger/a-culfw Alternative culfw for cul devices] auf GitHub und im {{Link2Forum|Topic=35064|LinkText=Forum}} mit Anpassungen unter anderem für InterTechno. Hier könnte es aber zu Funktionseinschränkungen bei anderen Protokollen kommen. In dieser Version ist auch ein Portierung auf ARM-Prozessoren enthalten (siehe {{Link2Forum|Topic=38404|LinkText=Forum}}) mit der die CUL-Firmware auch auf dem HM-CFG-USB-2 und dem [[MAX]] Cube betrieben werden kann.&lt;br /&gt;
* {{Link2Forum|Topic=24436|LinkText=Timestamp Firmware}} mit speziellen Anpassungen für HomeMatic. Bei HomeMatic ist das Timing der Telegramme entscheidend sonst kann es zu &amp;quot;MISSING ACK&amp;quot; bzw. &amp;quot;RESPONSE TIMEOUT:RegisterRead&amp;quot; u.ä. Meldungen kommen.&lt;br /&gt;
&lt;br /&gt;
Alternativ zu den [a]culfw-Firmwares gibt es [[SIGNALduino]] (zumindest auf manchen Hardware-Konstellationen umgeflashed direkt anwendbar und 1:1 lauffähig; inkl. normierter/kompatibler Weiterleitung/Dispatching auf die gleichen zentralen Geräte-Protokoll-Dekodier-Module, die auch von anderer Transceiver-Hardware/-Firmware - CUL etc. - ähnlich angebunden werden (sollen); somit Kommunikation mit vielen Funk-Komponenten auch dort idealerweise immer 1:1 funktionierend).&lt;br /&gt;
&lt;br /&gt;
Generell ist das Angebot an Speicherplatz auf dem im CUL verwendeten ATMega32U2 sehr eingeschränkt, wodurch Erweiterungen ohne Abstriche an anderer Stelle kaum mehr möglich sind. Es wird also die optimale CUL-Firmware für alle Zwecke nie geben, so dass man die Auswahl am konkreten Bedarf klären muss. Wer die Firmware selbst compiliert kann gezielt Funktionen die nicht benötigt werden weglassen und dafür ggf. Funktionen die sonst nicht eingefügt sind hinzufügen.&lt;br /&gt;
&lt;br /&gt;
== Sendefrequenz ==&lt;br /&gt;
Das CUL gibt es in Ausführungen für 868 und 433 MHz. &lt;br /&gt;
Die Sende- und Empfangsfrequenz des CUL sind in weiten Bereichen einstellbar, im &#039;&#039;SlowRF&#039;&#039; Mode auch durch direkte Befehle aus FHEM (im &#039;&#039;HomeMatic&#039;&#039; Mode derzeit nicht unterstützt). Der bauliche Unterschied der 868 und 433 MHz CULs ist ein auf das Frequenzband richtig abgestimmter HF-Eingangskreis inklusive Antennenlänge.&lt;br /&gt;
&lt;br /&gt;
Es ist durchaus möglich, ein 868 MHz CUL auf 433 MHz einzustellen. Da dann aber die HF-Eingangskreis-Abstimmung und Antennenlänge nicht korrekt sind, ist Empfangs- und Sendeleistung suboptimal, die Reichweite sinkt. Dennoch wird diese Möglichkeit des freien Einstellens durch das FHEM Intertechnomodul genutzt, da Intertechnokomponenten mit 433 MHz arbeiten. Dazu wird beim Senden eines Intertechno-Befehls die Frequenz eines 868 MHz CULs kurz umgestellt.&lt;br /&gt;
Besser ist aber die Nutzung eines dedizierten 433 MHz CUL für Intertechno.&lt;br /&gt;
&lt;br /&gt;
== Antenne ==&lt;br /&gt;
Der CUL ist mit RP-SMA-Stecker für die Antenne aber auch mit angelöteter Drahtantenne lieferbar.&lt;br /&gt;
Funktional besteht kein Unterschied: auch die &amp;quot;richtige&amp;quot; Antenne ist (in diesem Fall) nur ein Draht, jedoch  gummiummantelt und eventuell mit einem Knickgelenk und einem Schraubanschluss versehen, d.h. die Drahtantenne sieht nur unschön aus.&lt;br /&gt;
&lt;br /&gt;
Bei einer Antenne sind zwei Dinge auseinanderzuhalten: Einmal die Anpassung sowie die Abstrahlungscharakteristik. &lt;br /&gt;
* &#039;&#039;&#039;Anpassung&#039;&#039;&#039; Eine Antenne ist typischerweise für eine bestimmte Frequenz konstruiert. Wenn die Konstruktionsfrequenz nicht mit der Frequenz übereinstimmt, auf der die Antenne senden und empfangen soll, ist die Anpassung schlecht. Dies führt zu Verlusten bei der Übertragung. Typische Kennwerte für eine Anpassung sind das Stehwellenverhältnis (SWR) sowie die Impedanz. Beide Größen können per Messgerät bestimmt werden, inzwischen gibt es für 150 Euro entsprechende Geräte. Wer eine Antenne selbst konstruiert, sollte ein solches Gerät zumindest ausborgen, um seine Antenne zu bestimmen.&lt;br /&gt;
* &#039;&#039;&#039;Abstrahlung&#039;&#039;&#039; Es gibt mehrere Arten von Antennen, die sich in der Art der Strahlung unterscheiden. Richtantennen versuchen Signale nur in eine bestimmte Richtung zu versenden, Dipole versuchen in die gesamte Umgebung zu senden bzw zu empfangen. Während es bei Anpassung nur die Kategorien &amp;quot;gut&amp;quot; und &amp;quot;schlecht&amp;quot; gibt, ist bei der Abstrahlung eher auf &amp;quot;zweckmäßig&amp;quot; und &amp;quot;unzweckmäßig&amp;quot; zu achten.&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich hängen Abstrahlung und Antennengewinn zusammen. Die Energie, die eine (perfekt angepasste) Antenne strahlt, wird durch die Antennenkonstruktion weder verdoppelt oder halbiert, sondern nur gebündelt. Während ein Dipol in alle Richtungen abstrahlt, bündelt eine Richtantenne dieselbe Energie in eine bestimmte Richtung. Insofern muss man bei der Antennenkonstruktion überlegen, woher die Signale kommen bzw wohin sie gehen sollen. Jeder Antennengewinn geht einher mit einer Einschränkung bei der Sende/Empfangsrichtung, es sei denn, man verbessert die Anpassung der Antenne. &lt;br /&gt;
&lt;br /&gt;
Leider kann man auch bei gekauften Antennen nicht davon ausgehen, dass sie korrekt angepasst sind. Es gibt Berichte im Forum, wonach es insbesondere bei 433 MHz-Antennen eher ein Glücksspiel ist, ob man eine vernünftig angepasste Antenne bekommt. Daher kann es durchaus sein, dass eine Eigenbauantenne wesentlich bessere Werte liefert als eine käuflich erworbene. &lt;br /&gt;
&lt;br /&gt;
Eine zentrale Größe bei der Anpassung ist die Länge der Antenne. Wenn man einen Dipol verwendet, muss diese zweckmäßigerweise so groß sein wie ein Viertel der Wellenlänge (&amp;quot;Lambda/4&amp;quot;). Die sind bei 868 MHz ca. 8,6 Zentimeter. Antennenlängen die länger oder kürzer sind verschlechtern in der Regel die Anpassung. Daher ist eine z.B. 10 Zentimeter lange Antenne (obwohl länger) schlechter als 1/4 Lambda mit 8,6 Zentimeter.&lt;br /&gt;
&lt;br /&gt;
Weitere Informationen sind im {{Link2Forum|Topic=93021|LinkText=Antennenthread}} des Forums zu finden. &lt;br /&gt;
&lt;br /&gt;
Über besondere Antennenkonstruktionen (bitte nach Colinear, Jpole, Yagi suchen) oder Antennen die &amp;quot;Lambda/2&amp;quot; oder gar &amp;quot;Lambda&amp;quot; lang sind  (also ca. 17,2 bzw. 34,5 Zentimeter) kann ein höherer Gewinn erreicht werden. Einher geht aber gleichzeitig eine stärkere Richtwirkung der Antenne. Je kürzer die Antenne, desto kugelförmiger die Abstrahlung. Bei längeren Antennen wird die Abstrahlung mehr und mehr zylinderähnlich, also mit horizontaler Richtwirkung (und in die Richtung ist das Signal dann stärker, daher der Antennen&amp;quot;gewinn&amp;quot;).&lt;br /&gt;
Das hat auch Nachteile, speziell wenn man auch &amp;quot;nach oben&amp;quot; funken will. Besonders wenn man Antennen länger als eine λ/4 Antenne (8,6 Zentimeter) in einem mehretagigen Haus verwenden will, muss man diese daher in der Regel waagerecht/horizontal ausrichten, da alles was in Richtung der Spitze (und dem Fuss) der Antenne liegt schlecht empfangen wird.&lt;br /&gt;
&lt;br /&gt;
Daher: Je mehr Gewinn die Antenne aufweist, desto besser ist die Sende und Empfangsleistung, aber desto mehr Gedanken muss man sich um die Ausrichtung der Antenne machen, um alle Geräte zu empfangen / zu erreichen. &amp;quot;Mehr dB&amp;quot; und speziell &amp;quot;länger&amp;quot; ist also nicht automatisch besser. &lt;br /&gt;
&lt;br /&gt;
Zu beachten ist auch, dass die Sendeleistung der Module gesetzlich geregelt ist und Spezialantennen mit höherem Gewinn ggf. nur an Empfängern erlaubt sind.&lt;br /&gt;
&lt;br /&gt;
Falls man den CUL mit RP-SMA Stecker geordert hat, aber keine passend lange RP-SMA-Antenne verfügbar ist, kann (nur für erste Tests) auch eine abschraubbare Antenne für 802.11b/g WLAN-Geräte (2,4&amp;amp;nbsp;GHz) benutzt werden, so diese anschlusstechnisch auf den RP-SMA-Stecker des CUL passt (dies funktioniert zumindest mit FS20- und EM-Geräten). Deren Länge ist wie oben diskutiert aber nicht optimal, besser ist auf jeden Fall eine speziell auf den Einsatzzweck (Frequenz) abgestimmte Antenne.&lt;br /&gt;
&lt;br /&gt;
== Antennenlänge ==&lt;br /&gt;
Die genauen Antennenlängen sind praktisch schwer zu ermitteln, da auch Zuleitung auf dem CUL zugerechnet werden müssten und ggf Dämpfungen (also z.B. Durchführung der Antenne durch ein Gehäuse, oder gebogene Antennen) die Antennenlänge weiter beeinflussen. Gleichzeitig haben schon Abweichungen von wenigen Millimetern messbaren Einfluss. Die Antennenlänge ist daher immer nur ein Kompromiss.&lt;br /&gt;
&lt;br /&gt;
Exakt berechnet ohne Störeinflüsse wären folgende Antennenlängen nutzbar:&lt;br /&gt;
 868,35 MHz (z.B. HM, FS20, FHT …)&lt;br /&gt;
 1/4 Lambda = 8,63 Zentimeter &lt;br /&gt;
 1/2 Lambda = 17,26 Zentimeter &lt;br /&gt;
 1 Lambda = 34,52 Zentimeter  (Bereits sehr hohe Richtwirkung)&lt;br /&gt;
&lt;br /&gt;
433,92 MHz  (z.B. Intertechno …)&lt;br /&gt;
 1/4 Lambda = 17,27 Zentimeter &lt;br /&gt;
 1/2 Lambda = 34,54 Zentimeter &lt;br /&gt;
&lt;br /&gt;
Folgende Antennenlängen bieten sich praktisch an, diese sind immer etwas kürzer als die optimale Länge, dies wird z.T. durch Leiterlänge im CUL kompensiert.:&lt;br /&gt;
&lt;br /&gt;
 8,6 Zentimeter als 1/4 Lambda für 868,35 MHz&lt;br /&gt;
 17,2 Zentimeter als 1/2 Lambda für 868,35 MHz und zugleich 1/4 Lambda für 433,92 MHz&lt;br /&gt;
 34,5 Zentimeter als Lambda für 868,35 MHz und zugleich 1/2 Lambda für 433,92 MHz&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
&lt;br /&gt;
=== RF-Tuning ===&lt;br /&gt;
Im Gegensatz zu den original FHZ-Zentralen ist das CUL recht schmalbandig, d.h. die Sende- und Empfangsfrequenz wird genauer eingehalten als z.&amp;amp;nbsp;B. bei einer FHZ1x00PC. Dies kann im Zusammenhang mit den eher ungenauen Sendern (z.&amp;amp;nbsp;B. der FHT Raumregler) zu Empfangsproblemen führen. Es kann daher mitunter sinnvoll sein, die Sende- und Empfangsbandbreite des CUL etwas zu erhöhen. Dies senkt jedoch gleichzeitig die Empfindlichkeit.&lt;br /&gt;
&lt;br /&gt;
Bei Empfangsproblemen von z.&amp;amp;nbsp;B. HEM-Sensoren oder dem S300TH kann man folgendes testen:&lt;br /&gt;
&lt;br /&gt;
* Man kann die Frequenz des CUL auf genau 868,35 MHz einstellen. Standardmäßig ist hier aus Kompatibilitätsgründen 868,30 MHz eingestellt. Diese Einstellung wird fest im NVRAM gespeichert und braucht nur einmal vorgenommen zu werden.&lt;br /&gt;
*: &amp;lt;code&amp;gt;set CUL freq 868.350&amp;lt;/code&amp;gt;&lt;br /&gt;
* Es ist möglich die &amp;quot;decision boundary&amp;quot; zu vergrößern, frei beschrieben: die &amp;quot;Entscheidungsgrenze&amp;quot; ob die empfangene Signalflanke digital &amp;quot;0&amp;quot; oder &amp;quot;1&amp;quot; darstellte ({{Link2Forum|Topic=8572|Message=44388|LinkText=siehe Diskussion hier}}). Möglich sind die Werte &amp;quot;4&amp;quot;, &amp;quot;8&amp;quot; und &amp;quot;16&amp;quot;. Default-Einstellung ist hier &amp;quot;4&amp;quot;. Zur Steigerung der Empfangsqualität soll es hilfreich sein, hier &amp;quot;8&amp;quot; einzustellen. Mitunter bringt jedoch erst die Einstellung auf &amp;quot;16&amp;quot; signifikante Verbesserungen beim Empfang von S300TH-Sensoren.&lt;br /&gt;
*: &amp;lt;code&amp;gt;set CUL sens 8&amp;lt;/code&amp;gt;&lt;br /&gt;
* Oft hilft auch, die Bandbreite auf z.&amp;amp;nbsp;B. 464 kHz aufzuweiten.&lt;br /&gt;
*: &amp;lt;code&amp;gt;set CUL bWidth 464&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Selbstbau-/Bastelprojekte ==&lt;br /&gt;
Innerhalb der FHEM-Community werden mittlerweile diverse Bastelprojekte zum Selbstbau eines CUL betrieben. Eine Auswahl dieser Projekte:&lt;br /&gt;
* [[Selbstbau CUL]]&lt;br /&gt;
* [[FHEMduino]]&lt;br /&gt;
* [[SIGNALduino]]&lt;br /&gt;
* [[MapleCUN]] mit STM32 Mikrocontroller&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* Hersteller / Bezugsquelle für CUL: [http://www.busware.de/tiki-index.php?page=CUL busware.de]&lt;br /&gt;
* Google groups [https://groups.google.com/group/cul-fans/ CUL fans], mittlerweile durch das Board {{Link2Forum|Area=cul-fans}} im FHEM Forum ergänzt/ersetzt&lt;br /&gt;
* CUL commandref [https://fhem.de/commandref.html#CUL]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Interfaces]]&lt;br /&gt;
[[Kategorie:CUL|!]]&lt;br /&gt;
[[Kategorie:433MHz]]&lt;br /&gt;
[[Kategorie:868MHz]]&lt;/div&gt;</summary>
		<author><name>Soulman</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=AT_zu_einem_absoluten_Datum_ausf%C3%BChren&amp;diff=40553</id>
		<title>AT zu einem absoluten Datum ausführen</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=AT_zu_einem_absoluten_Datum_ausf%C3%BChren&amp;diff=40553"/>
		<updated>2025-12-19T22:49:31Z</updated>

		<summary type="html">&lt;p&gt;Soulman: Diverse Edits zusammengefasst&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mit dem Befehl [[at]] können in FHEM Aktionen zu einem definierten Zeitpunkt ausgeführt werden:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define morgens_Licht_an at *07:15:00 set Licht1 on&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Es können relative und absolute Uhrzeiten, sowie ein bestimmtes Datum definiert werden.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Licht_25_Januar_an at 2011-01-25T07:15:00 set Licht1 on&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Ausführung kann an Bedingungen geknüpft sein, wie z.b. bestimmte Wochentage oder nur am Wochenende:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define morgens_Licht_Wochenende at *07:15:00 {if (!($we)) {fhem(&amp;quot;set Licht1 on&amp;quot;)} }&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Theoretisch kann auf die selbe Art kann auch auf ein Ausführungsdatum geprüft werden.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Licht_25_Januar_an at *07:15:00 {if($year==2011 &amp;amp;amp;&amp;amp;amp; $month==1 &amp;amp;amp;&amp;amp;amp; $mday==25) {fhem(&amp;quot;set Licht1 on&amp;quot;)} }&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
In diesem Fall wird täglich um 7:15 Uhr geprüft, ob der 25. Januar 2011 ist und falls ja, wird die Aktion ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Da dieser Fall nur einmal zutrifft, ist es sinnvoll, die Aktion nach Auslösung zu löschen, damit nicht nach dem 25. Januar 2011 weiter täglich geprüft wird, ob das Datum nochmal auftritt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;define Licht_25_Januar_an at *07:15:00 {if($year==2011 &amp;amp;amp;&amp;amp;amp; $month==1 &amp;amp;amp;&amp;amp;amp; $mday==25) \&lt;br /&gt;
{fhem (&amp;quot;set Licht1 on; delete Licht_25_Januar_an&amp;quot;} }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich erfordert die Lösung, täglich bei Erreichen der gewünschten Uhrzeit zu prüfen ob der richtige Tag erreicht wurde, mehr Code und ist auch Perfomanceseitig ungünstiger. Das dies als Lösung des Problems gelegentlich empfohlen wird, basiert auf der verbreiteten, aber falschen Annahme, dass als Zeitpunkt kein bestimmtes Datum definiert werden könne.&lt;br /&gt;
&lt;br /&gt;
Siehe auch  &lt;br /&gt;
* [[At]]&lt;br /&gt;
* [[Trick_der_Woche#Januar_2018]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Code Snippets]]&lt;/div&gt;</summary>
		<author><name>Soulman</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=FS20_Allgemein&amp;diff=39775</id>
		<title>FS20 Allgemein</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=FS20_Allgemein&amp;diff=39775"/>
		<updated>2024-12-27T15:33:15Z</updated>

		<summary type="html">&lt;p&gt;Soulman: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Allgemeine Informationen, die für alle FS20 Geräte im Zusammenhang mit FHEM  Gültigkeit haben.&lt;br /&gt;
== ON/OFF Befehle mit Time Parameter ==&lt;br /&gt;
=== Einführung ===&lt;br /&gt;
Viele FS20 Geräte lassen sich für eine bestimmte Zeitdauer schalten, die Schaltzeit kann beim Befehl bereits mitgegeben werden, das Gerät verwaltet die Zeit eigenständig, es muss also kein Ausschaltbefehl (bzw. Einschaltbefehl) mehr gesendet werden, um den vorherigen Zustand wieder herzustellen (es handelt sich hier &#039;&#039;&#039;nicht&#039;&#039;&#039; um die in FS20 Empfängern einstellbare Timer-Funktion, die (Ein-)Schaltzeiten zwischen einer Sekunde und 4,5 Stunden ermöglicht). &lt;br /&gt;
Ein erneutes Senden eines for-timer Befehls löscht die alte Zeit und beginnt von vorne an zu zählen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Mögliche Zeiten ===&lt;br /&gt;
&lt;br /&gt;
Die on/off-for... Befehle in FHEM  ([http://fhem.de/commandref.html#FS20 Command Reference, FS20]) unterstützen einen optionalen &#039;&#039;&#039;time&#039;&#039;&#039; Parameter. Der Wert wird in Sekunden angegeben, erlaubt Nachkommastellen (als Dezimaltrenner ist der Punkt zu verwenden, anderenfalls bekommt man von FHEM  die Meldung &amp;quot;Bad time spec&amp;quot;), wird aber letztendlich immer in einen der folgenden (112) Werte umgesetzt. FHEM  rundet immer auf den nächsthöheren möglichen Wert auf (siehe Beispiele unter der Tabelle).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:right&amp;quot;&lt;br /&gt;
! Sekunden !! Zeitdauer !! Sekunden !! Zeitdauer !! Sekunden !! Zeitdauer !! Sekunden !! Zeitdauer !! Sekunden !! Zeitdauer&lt;br /&gt;
|-&lt;br /&gt;
| 0,25 || 0:00:00,25 || 2,25 || 0:00:02,25 || 4,5 || 0:00:04,50 || 9 || 0:00:09,00 || 18 || 0:00:18,00&lt;br /&gt;
|-&lt;br /&gt;
| 0,5 || 0:00:00,50 || 2,5 || 0:00:02,50 || 5 || 0:00:05,00 || 10 || 0:00:10,00 || 20 || 0:00:20,00&lt;br /&gt;
|-&lt;br /&gt;
| 0,75 || 0:00:00,75 || 2,75 || 0:00:02,75 || 5,5 || 0:00:05,50 || 11 || 0:00:11,00 || 22 || 0:00:22,00&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0:00:01,00 || 3 || 0:00:03,00 || 6 || 0:00:06,00 || 12 || 0:00:12,00 || 24 || 0:00:24,00&lt;br /&gt;
|-&lt;br /&gt;
| 1,25 || 0:00:01,25 || 3,25 || 0:00:03,25 || 6,5 || 0:00:06,50 || 13 || 0:00:13,00 || 26 || 0:00:26,00&lt;br /&gt;
|-&lt;br /&gt;
| 1,5 || 0:00:01,50 || 3,5 || 0:00:03,50 || 7 || 0:00:07,00 || 14 || 0:00:14,00 || 28 || 0:00:28,00&lt;br /&gt;
|-&lt;br /&gt;
| 1,75 || 0:00:01,75 || 3,75 || 0:00:03,75 || 7,5 || 0:00:07,50 || 15 || 0:00:15,00 || 30 || 0:00:30,00&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 0:00:02,00 || 4 || 0:00:04,00 || 8 || 0:00:08,00 || 16 || 0:00:16,00 || 32 || 0:00:32,00&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || || || || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| 36 || 0:00:36,00 || 72 || 0:01:12,00 || 144 || 0:02:24,00 || 288 || 0:04:48,00 || 576 || 0:09:36,00&lt;br /&gt;
|-&lt;br /&gt;
| 40 || 0:00:40,00 || 80 || 0:01:20,00 || 160 || 0:02:40,00 || 320 || 0:05:20,00 || 640 || 0:10:40,00&lt;br /&gt;
|-&lt;br /&gt;
| 44 || 0:00:44,00 || 88 || 0:01:28,00 || 176 || 0:02:56,00 || 352 || 0:05:52,00 || 704 || 0:11:44,00&lt;br /&gt;
|-&lt;br /&gt;
| 48 || 0:00:48,00 || 96 || 0:01:36,00 || 192 || 0:03:12,00 || 384 || 0:06:24,00 || 768 || 0:12:48,00&lt;br /&gt;
|-&lt;br /&gt;
| 52 || 0:00:52,00 || 104 || 0:01:44,00 || 208 || 0:03:28,00 || 416 || 0:06:56,00 || 832 || 0:13:52,00&lt;br /&gt;
|-&lt;br /&gt;
| 56 || 0:00:56,00 || 112 || 0:01:52,00 || 224 || 0:03:44,00 || 448 || 0:07:28,00 || 896 || 0:14:56,00&lt;br /&gt;
|-&lt;br /&gt;
| 60 || 0:01:00,00 || 120 || 0:02:00,00 || 240 || 0:04:00,00 || 480 || 0:08:00,00 || 960 || 0:16:00,00&lt;br /&gt;
|-&lt;br /&gt;
| 64 || 0:01:04,00 || 128 || 0:02:08,00 || 256 || 0:04:16,00 || 512 || 0:08:32,00 || 1024 || 0:17:04,00&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || || || || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| 1152 || 0:19:12,00 || 2304 || 0:38:24,00 || 4608 || 1:16:48,00 || 9216 || 2:33:36,00 || ||&lt;br /&gt;
|-&lt;br /&gt;
| 1280 || 0:21:20,00 || 2560 || 0:42:40,00 || 5120 || 1:25:20,00 || 10240 || 2:50:40,00 || ||&lt;br /&gt;
|-&lt;br /&gt;
| 1408 || 0:23:28,00 || 2816 || 0:46:56,00 || 5632 || 1:33:52,00 || 11264 || 3:07:44,00 || ||&lt;br /&gt;
|-&lt;br /&gt;
| 1536 || 0:25:36,00 || 3072 || 0:51:12,00 || 6144 || 1:42:24,00 || 12288 || 3:24:48,00 || ||&lt;br /&gt;
|-&lt;br /&gt;
| 1664 || 0:27:44,00 || 3328 || 0:55:28,00 || 6656 || 1:50:56,00 || 13312 || 3:41:52,00 || ||&lt;br /&gt;
|-&lt;br /&gt;
| 1792 || 0:29:52,00 || 3584 || 0:59:44,00 || 7168 || 1:59:28,00 || 14336 || 3:58:56,00 || ||&lt;br /&gt;
|-&lt;br /&gt;
| 1920 || 0:32:00,00 || 3840 || 1:04:00,00 || 7680 || 2:08:00,00 || 15360 || 4:16:00,00 || ||&lt;br /&gt;
|-&lt;br /&gt;
| 2048 || 0:34:08,00 || 4096 || 1:08:16,00 || 8192 || 2:16:32,00 || 0 || 0 || ||&lt;br /&gt;
|}&lt;br /&gt;
Beispiele und die Ausgabe im FHEM  log:&lt;br /&gt;
&lt;br /&gt;
 define TestDev_2 at *12:52 set TestDev on-for-timer 0,27  &#039;&#039;&#039;-&amp;gt; Bad time spec (Komma statt Punkt)&#039;&#039;&#039;&lt;br /&gt;
 define TestDev_1 at *13:23 set TestDev on-for-timer 16000 &#039;&#039;&#039;-&amp;gt; Specified timeout too large, max is 15360&#039;&#039;&#039; &lt;br /&gt;
 define TestDev_2 at *13:24 set TestDev on-for-timer 2.6   &#039;&#039;&#039;-&amp;gt; TestDev: changing timeout to 2.75 from 2.6&#039;&#039;&#039; &lt;br /&gt;
 define TestDev_2 at *13:24 set TestDev on-for-timer 81    &#039;&#039;&#039;-&amp;gt; TestDev: changing timeout to 88 from 81&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Einsatzmöglichkeiten ===&lt;br /&gt;
Im Gegensatz zu HM unterstützt FS20 den Timer auch bei OFF Befehlen. Damit lassen sich neben dem offensichtlichen Nutzen auch zwei Probleme lösen:&lt;br /&gt;
&lt;br /&gt;
1. Erhöhung der Zuverlässigkeit bei Ausschaltung kritischer Systeme. Schaltet man Beispielsweise mittels FHEM und einem FS20 Aktor eine Heizung aus, so garantiert die Verwendung von &lt;br /&gt;
 off-for-timer 15360&lt;br /&gt;
dass die Heizung auch wieder einschaltet, selbst wenn es später zu Funkstörungen kommen sollte. Sollte hingegen der  off-for-timer 15360 nicht korrekt empfangen werden, geht die Heizung gar nicht erst aus, was ggf. die bessere Option darstellt. &lt;br /&gt;
Längere Auschaltzeiten als 4,5 Stunden können durch erneutes senden eines  off-for-timer  kurz vor Ablauf des Timers realisiert werden.&lt;br /&gt;
&lt;br /&gt;
2. Es kommt offenbar unter ungünstigen Bedingungen vor, dass bestimmte Befehle (on oder off) von einem FS20 Aktor nicht gut empfangen werden, der jeweilige Gegenteilige Befehl aber wohl. Machmal kann man sich dann helfen, indem man einen Aktor ausschliesslich durch den gegenteiligen Befehl steuert. FS20 Aktoren lassen sich z.B. AUSschalten in dem man &lt;br /&gt;
 on-for-timer 0.25&lt;br /&gt;
sendet, bzw EINschalten indem man&lt;br /&gt;
 off-for-timer 0.25&lt;br /&gt;
sendet.&lt;br /&gt;
&lt;br /&gt;
== Gerätetimer setzen / löschen ==&lt;br /&gt;
Zumindest bei einigen FS20 Geräten läßt sich auch der interne Gerätetimer über FHEM setzen. Dieser Timer wird vom Gerät dann bei normalen ON Befehlen berücksichtigt. &lt;br /&gt;
:&amp;lt;code&amp;gt;set schalterZwei timer 16 &amp;lt;/code&amp;gt; -&amp;gt; Timer von Gerät &#039;&#039;&#039;schalterZwei&#039;&#039;&#039; wird auf 16 Sekunden gesetzt&lt;br /&gt;
Theoretisch lässt sich der timer auch wieder auschalten mit:&lt;br /&gt;
:&amp;lt;code&amp;gt;set schalterEins timer 0 &amp;lt;/code&amp;gt; -&amp;gt; Timer von Gerät &#039;&#039;&#039;schalterEins&#039;&#039;&#039; wird deaktiviert / gelöscht&lt;br /&gt;
jedoch scheint dies nicht bei allen Geräten einwandfrei zu funktionieren. Ggf. Mehrmals versuchen.&lt;br /&gt;
&lt;br /&gt;
Für folgende Geräte funktioniert der &amp;lt;code&amp;gt;set xxx timer&amp;lt;/code&amp;gt; Befehl definitiv: &lt;br /&gt;
* [[FS20 RSU Rolladenschalter (Unterputz)]], &lt;br /&gt;
* FS20 SM4, &lt;br /&gt;
* [[FS20 SU Unterputz-Funk-Schalter]].&lt;br /&gt;
* FS20 ST-4&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- {{Todo|List of devices needs to be extended/completed; please add source of information on the FS20 discussion page}} --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sobald der Timer in einem FS20 Geräte gesetzt wird, schaltet auch der Befehel&lt;br /&gt;
:&amp;lt;code&amp;gt;set schalterZwei on &amp;lt;/code&amp;gt;&lt;br /&gt;
das Gerät nur für 16 Sekunden an.&lt;br /&gt;
&lt;br /&gt;
== FS20 Adressumrechnung ==&lt;br /&gt;
Die direkte Einstellung der Codierung an FS20 und Homematic-Fernbedienungen erfolgt laut ELV Bedienungsanleitungen nur mit den Zahlen 1 bis 4. Das heißt, der Code basiert auf dem &amp;quot;Quaternärzahlensystem&amp;quot; (Vierersystem, Zahlensystem mit Basis 4 [0...3]). Dabei werden den für die Codierung verwendeten Tasten aber nicht die Zahlen 0...3 sondern 1...4 (pseudoquaternär) zugewiesen.&lt;br /&gt;
&lt;br /&gt;
Obwohl FHEM die pseudoquaternäre Schreibweise unterstützt, kann es notwendig sein, die Adressen in hex umzurechnen (Zahlensystem mit Basis 16 [0...F], Kennzeichnung durch vorangestelltes &amp;quot;0x&amp;quot;). Anhand der folgenden Tabelle kann zwischen beiden Darstellungsarten umgerechnet werden:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center&amp;quot;&lt;br /&gt;
! 1x quad !! 2x quad !! 3x quad !! 4x quad&lt;br /&gt;
|-&lt;br /&gt;
| 11 = 0x0 || 12 = 0x1 || 13 = 0x2 || 14 = 0x3&lt;br /&gt;
|-&lt;br /&gt;
| 21 = 0x4 || 22 = 0x5 || 23 = 0x6 || 24 = 0x7&lt;br /&gt;
|- &lt;br /&gt;
| 31 = 0x8 || 32 = 0x9 || 33 = 0xA || 34 = 0xB&lt;br /&gt;
|-&lt;br /&gt;
| 41 = 0xC || 42 = 0xD || 43 = 0xE || 44 = 0xF&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Beispiel:&#039;&#039; [[Was ist der Hauscode?|Hauscode]] nach ELV (pseudoquaternär) &amp;quot;43 21 12 34&amp;quot; ergibt nach FHEM  (hexadezimal) &amp;quot;E 4 1 B&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Einen automatischen Umrechner findet man auch unter [https://www.homematic-inside.de/praxis/tools/fs20converter www.homematic-inside.de]&lt;br /&gt;
&lt;br /&gt;
Da FHEM beide Schreibweisen unterstützt, hat Verwendung der pseudoquaternärern Schreibweise auch innerhalb FHEM den Vorteil, die notwendigen Tastendrücke zur Einrichtung des FS20 Hauscodes direkt ablesbar zu machen.&lt;br /&gt;
&lt;br /&gt;
== FS20 Adressierungsschema (Vorschlag) ==&lt;br /&gt;
=== &amp;quot;klassisches&amp;quot; Schema ===&lt;br /&gt;
Bei der Adressierung der Geräte können verschiedene Adressgruppen und -bereiche eingerichtet werden. Der Einfachheit halber (weil man an den Geräten keine Hex-Werte einstellen kann) erfolgt die Erklärung anhand der Pseudoquarternärzahlen.&lt;br /&gt;
Eine gute Erklärung ist auch hier zu finden: Serie im ELV Journal, Teil 4 {{DocLink|elv|/bilder/journal/2007_01/14/fs20_system_teil4.pdf}}.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Bezeichnung !! Schema !! Beispiel&lt;br /&gt;
|-&lt;br /&gt;
| Hauscode || xxxx xxxx || 4332 3221&lt;br /&gt;
|-&lt;br /&gt;
| Gerätecode || yyyy || 1111&lt;br /&gt;
|-&lt;br /&gt;
| Funktionsgruppe || 44aa || 4411 bis 4443&lt;br /&gt;
|-&lt;br /&gt;
| Lokaler Master || bb44 || 1144 bis 4344&lt;br /&gt;
|-&lt;br /&gt;
| Globaler Master || 4444 || 4444&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Mit Hilfe dieser Adressgruppen kann man jetzt sein System entwerfen:&lt;br /&gt;
&lt;br /&gt;
Hauscode festlegen:&lt;br /&gt;
* s.o. 4332 3221&lt;br /&gt;
&lt;br /&gt;
Funktionsgruppen festlegen:&lt;br /&gt;
* 4411: Deckenleuchten&lt;br /&gt;
* 4412: Rolläden&lt;br /&gt;
&lt;br /&gt;
Lokale Master festlegen:&lt;br /&gt;
* 1144: Flur&lt;br /&gt;
* 1244: Esszimmer&lt;br /&gt;
* 1344: Wohnzimmer&lt;br /&gt;
* 1444: Schlafzimmer&lt;br /&gt;
&lt;br /&gt;
Globaler Master &lt;br /&gt;
* ist fest auf 4444&lt;br /&gt;
&lt;br /&gt;
Einzeladressen festlegen: Aus Gründen der Übersichtlichkeit werden die Lokalen Master-Adressen im vorderen Teil verwendet. Dies ist für die Funktion &#039;&#039;&#039;nicht&#039;&#039;&#039; erforderlich.:&lt;br /&gt;
* 1311: Stereoanlage Wohnzimmer&lt;br /&gt;
* 1312: Deckenlampe Wohnzimmer&lt;br /&gt;
* 1112: Steckdose Flur&lt;br /&gt;
* 1244: Deckenlampe Esszimmer&lt;br /&gt;
* 1411: Deckenlampe Schlafzimmer&lt;br /&gt;
usw.&lt;br /&gt;
&lt;br /&gt;
Somit bekommt jeder Aktor &#039;&#039;&#039;bis zu vier&#039;&#039;&#039; Adresszuweisungen zusätzlich zum Hauscode. Die Sensoren hingegen bekommen &#039;&#039;&#039;nur eine&#039;&#039;&#039; Adresse zusätzlich zum Hauscode zugewiesen. Nun können alle Aktoren nach belieben geschaltet werden: &lt;br /&gt;
* mit 4411 alle Deckenleuchten im Haus&lt;br /&gt;
* mit 1312 nur die Deckenlampe im Wohnzimmer&lt;br /&gt;
* mit 1344 sowohl Deckenlampe als auch Stereoanlage&lt;br /&gt;
* mit 4444 alle Geräte (bei denen diese Adresse einprogrammiert ist)&lt;br /&gt;
&lt;br /&gt;
=== Alternatives Schema===&lt;br /&gt;
Das normale oben beschriebene Herangehen entfaltet seine Vorteile vor allem bei Nutzung von lokalen Masteradressen und Funktionsgruppen, die das Schalten vieler Komponenten mit nur einem Befehl ermöglicht, sowie wenn FS20 Komponenten durch Fernsteuerungen direkt (quasi an FHEM vorbei) gesteuert werden sollen.&lt;br /&gt;
Kann man auf dieses Feature verzichten - z.B. weil es in FHEM auch anders abgebildet werden kann - sind auch andere Adressschemata möglich.&lt;br /&gt;
&lt;br /&gt;
Gerade im Umfeld von FHEM mit Nutzung von [[CUL]] oder ähnlichen Funkschnittstellen (im Gegensatz zu ELV Zentralen wie FHZ1000) kann man den Hauscode nämlich auch nur als bloßen Adressbestandteil auffassen und in einer Installation mehrere Hauscodes verwenden. &lt;br /&gt;
&lt;br /&gt;
Dadurch könnte man diverse funktional unterscheidbare Komponenten jeweils mit eigenen Hauscodes versehen, z.b.: Alle Lichtaktoren Hauscode 4332 3221, alle Aktoren im Aussenbereich 4332 3222, alle Rolladenaktoren 4332 3223  etc. &lt;br /&gt;
&lt;br /&gt;
In solchen Installationen kann die globale Masteradresse die Funktion des lokalen Masters übernehmen: Mit Adresse 4444 und Hauscode 4332 3221 liesse sich im Beispiel alles Licht zugleich Ausschalten, ohne dass die Aktoren im Aussenbereich oder Rolladen betroffen wären.&lt;br /&gt;
&lt;br /&gt;
Da FS20 je Hauscode &amp;quot;nur&amp;quot; 254 Adressen kennt, kann die &amp;quot;klassische&amp;quot; Adressierung mit Funktionsgruppen und Lokalen Mastern durchaus aufwendige Planung erfordern, um den Adressbereich sinnvoll einzuteilen. Die Verwendung mehrerer Hauscodes erfordert meistens weniger Planung.&lt;br /&gt;
&lt;br /&gt;
In diesem alternative Schema können FS20 Fernbedienungen allerdings nur eingeschränkt zur &#039;&#039;&#039;Direkt&#039;&#039;&#039;steuerung von FS20 Komponenten verwendet werden, da jede Fernbedienung einen Hauscode für alle Kanäle/Tasten verwendet.&lt;br /&gt;
Gerade in solchen Installationen ist es also sinnvoll, Fernbedienungen nicht den Komponenten direkt zuzuordnen, sondern damit Aktionen über FHEM mittels &amp;lt;code&amp;gt;define…notify&amp;lt;/code&amp;gt; auszulösen.&lt;br /&gt;
&lt;br /&gt;
== FS20 - Probleme durch LTE ==&lt;br /&gt;
Ende 2012 tauchten die ersten Meldungen in den Medien auf, dass FS20-Empfänger Probleme durch den LTE-Ausbau bekommen. Erste Problemschilderungen tauchten bereits Ende 2011 in einigen Foren auf (z.B. [http://www.lte-anbieter.info/lte-forum/threads/128-LTE-und-Haussteuerung hier]).&lt;br /&gt;
&lt;br /&gt;
Zur weiteren Informationen sei auf die folgenden Artikel verwiesen:&lt;br /&gt;
&lt;br /&gt;
* [http://www.heise.de/ct/artikel/Hausautomationssystem-ELV-FS20-Probleme-mit-LTE-Routern-1758453.html heise.de]&lt;br /&gt;
* [http://www.elv.de/nicht-lte-stoerfest.html elv.de]&lt;br /&gt;
&lt;br /&gt;
Betroffen von diesen Problemen sollen insbesondere FS20-Geräte &#039;&#039;&#039;älterer&#039;&#039;&#039; Bauart sein, da deren Empfangsteil zu breitbandig sei.&lt;br /&gt;
&lt;br /&gt;
Unter [ftp://ftp.heise.de/pub/ct/listings/1226-025.zip Textdatei] findet sich eine &#039;&#039;Liste der vom LTE-Problem betroffenen FS20-Geräte&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Für Bastler gibt es einen [https://www.heise.de/ct/ausgabe/2017-21-FS20-Schalter-Dimmer-und-Interfaces-LTE-sicher-machen-3837756.html Artikel in CT 2017/21, S. 152], wo ein Austausch des jeweiligen Empfangsbausteins (durch z. B. den ELV RX868SH-DV, ca. 13 €) beschrieben wird.&lt;br /&gt;
&lt;br /&gt;
== FS20 - Abgekündigt ==&lt;br /&gt;
Das FS320 System ist inzwischen als veraltet zu betrachten. Es hat wegen einiger Features die es sonst kaum gibt (z.b. off-for-timer) durchaus noch  Vorteile, ist aber insbesondere wegen fehlender Verschlüsselung und fehlendem Rückkanal kaum noch zeitgemäss. Ähnlich dem InterTechno 433 mhz Funksystem (&amp;quot;Baumarktfunkdosen&amp;quot;), kann jeder, der einen FS20 Fernbedienung hat und in Funkreichweite ist, prinzipiell alle Komponenten einer Installation steuern. Als Neugeräte sind aktuell (2024) nur noch Restbestände erhältlich.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
ELV (Journal) Serie über das FS20 System in der Praxis:&lt;br /&gt;
* Teil 1 {{DocLink|elv|/bilder/journal/2006_04/01/fs20_system_teil1.pdf}} - Einleitung&lt;br /&gt;
* Teil 2 {{DocLink|elv|/bilder/journal/2006_05/18/fs20_system_teil2.pdf}} - Installationsbeispiel Unterputzschalter&lt;br /&gt;
* Teil 3 {{DocLink|elv|/bilder/journal/2006_06/03/fs20_system_teil3.pdf}} - Beleuchtungssteuerung durch Verknüpfung von Komponenten&lt;br /&gt;
* Teil 4 {{DocLink|elv|/bilder/journal/2007_01/14/fs20_system_teil4.pdf}} - Planung und Einrichtung eines Haussteuerungssystems&lt;br /&gt;
* Teil 5 {{DocLink|elv|/bilder/journal/2007_04/13/fs20_system_teil5.pdf}} - Rollladensteuerung&lt;br /&gt;
* Teil 6 {{DocLink|elv|/bilder/journal/2007_05/04/fs20_system_teil6.pdf}} - Kameraüberwachung + Dokumentation einer FS20 Installation&lt;br /&gt;
* Teil 7 {{DocLink|elv|/bilder/journal/2007_06/03/fs20_system_teil7.pdf}} - Rollladensteuerung mit &amp;quot;homeputer Studio&amp;quot;&lt;br /&gt;
* Teil 8 {{DocLink|elv|/bilder/journal/2008_01/04/fs20_system_teil8.pdf}} - Makroprogrammierung (mit &amp;quot;homeputer Studio&amp;quot;) &lt;br /&gt;
* Teil 9 {{DocLink|elv|/bilder/journal/2008_02/05/fs20_system_teil9.pdf}} - FS20 Audio Komponenten&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:FS20 Components|Allgemein]]&lt;/div&gt;</summary>
		<author><name>Soulman</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=FS20_Allgemein&amp;diff=39774</id>
		<title>FS20 Allgemein</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=FS20_Allgemein&amp;diff=39774"/>
		<updated>2024-12-27T15:21:45Z</updated>

		<summary type="html">&lt;p&gt;Soulman: /* Gerätetimer setzen / löschen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Allgemeine Informationen, die für alle FS20 Geräte im Zusammenhang mit FHEM  Gültigkeit haben.&lt;br /&gt;
== ON/OFF Befehle mit Time Parameter ==&lt;br /&gt;
=== Einführung ===&lt;br /&gt;
Viele FS20 Geräte lassen sich für eine bestimmte Zeitdauer schalten, die Schaltzeit kann beim Befehl bereits mitgegeben werden, das Gerät verwaltet die Zeit eigenständig, es muss also kein Ausschaltbefehl (bzw. Einschaltbefehl) mehr gesendet werden, um den vorherigen Zustand wieder herzustellen (es handelt sich hier &#039;&#039;&#039;nicht&#039;&#039;&#039; um die in FS20 Empfängern einstellbare Timer-Funktion, die (Ein-)Schaltzeiten zwischen einer Sekunde und 4,5 Stunden ermöglicht). &lt;br /&gt;
Ein erneutes Senden eines for-timer Befehls löscht die alte Zeit und beginnt von vorne an zu zählen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Mögliche Zeiten ===&lt;br /&gt;
&lt;br /&gt;
Die on/off-for... Befehle in FHEM  ([http://fhem.de/commandref.html#FS20 Command Reference, FS20]) unterstützen einen optionalen &#039;&#039;&#039;time&#039;&#039;&#039; Parameter. Der Wert wird in Sekunden angegeben, erlaubt Nachkommastellen (als Dezimaltrenner ist der Punkt zu verwenden, anderenfalls bekommt man von FHEM  die Meldung &amp;quot;Bad time spec&amp;quot;), wird aber letztendlich immer in einen der folgenden (112) Werte umgesetzt. FHEM  rundet immer auf den nächsthöheren möglichen Wert auf (siehe Beispiele unter der Tabelle).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:right&amp;quot;&lt;br /&gt;
! Sekunden !! Zeitdauer !! Sekunden !! Zeitdauer !! Sekunden !! Zeitdauer !! Sekunden !! Zeitdauer !! Sekunden !! Zeitdauer&lt;br /&gt;
|-&lt;br /&gt;
| 0,25 || 0:00:00,25 || 2,25 || 0:00:02,25 || 4,5 || 0:00:04,50 || 9 || 0:00:09,00 || 18 || 0:00:18,00&lt;br /&gt;
|-&lt;br /&gt;
| 0,5 || 0:00:00,50 || 2,5 || 0:00:02,50 || 5 || 0:00:05,00 || 10 || 0:00:10,00 || 20 || 0:00:20,00&lt;br /&gt;
|-&lt;br /&gt;
| 0,75 || 0:00:00,75 || 2,75 || 0:00:02,75 || 5,5 || 0:00:05,50 || 11 || 0:00:11,00 || 22 || 0:00:22,00&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0:00:01,00 || 3 || 0:00:03,00 || 6 || 0:00:06,00 || 12 || 0:00:12,00 || 24 || 0:00:24,00&lt;br /&gt;
|-&lt;br /&gt;
| 1,25 || 0:00:01,25 || 3,25 || 0:00:03,25 || 6,5 || 0:00:06,50 || 13 || 0:00:13,00 || 26 || 0:00:26,00&lt;br /&gt;
|-&lt;br /&gt;
| 1,5 || 0:00:01,50 || 3,5 || 0:00:03,50 || 7 || 0:00:07,00 || 14 || 0:00:14,00 || 28 || 0:00:28,00&lt;br /&gt;
|-&lt;br /&gt;
| 1,75 || 0:00:01,75 || 3,75 || 0:00:03,75 || 7,5 || 0:00:07,50 || 15 || 0:00:15,00 || 30 || 0:00:30,00&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 0:00:02,00 || 4 || 0:00:04,00 || 8 || 0:00:08,00 || 16 || 0:00:16,00 || 32 || 0:00:32,00&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || || || || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| 36 || 0:00:36,00 || 72 || 0:01:12,00 || 144 || 0:02:24,00 || 288 || 0:04:48,00 || 576 || 0:09:36,00&lt;br /&gt;
|-&lt;br /&gt;
| 40 || 0:00:40,00 || 80 || 0:01:20,00 || 160 || 0:02:40,00 || 320 || 0:05:20,00 || 640 || 0:10:40,00&lt;br /&gt;
|-&lt;br /&gt;
| 44 || 0:00:44,00 || 88 || 0:01:28,00 || 176 || 0:02:56,00 || 352 || 0:05:52,00 || 704 || 0:11:44,00&lt;br /&gt;
|-&lt;br /&gt;
| 48 || 0:00:48,00 || 96 || 0:01:36,00 || 192 || 0:03:12,00 || 384 || 0:06:24,00 || 768 || 0:12:48,00&lt;br /&gt;
|-&lt;br /&gt;
| 52 || 0:00:52,00 || 104 || 0:01:44,00 || 208 || 0:03:28,00 || 416 || 0:06:56,00 || 832 || 0:13:52,00&lt;br /&gt;
|-&lt;br /&gt;
| 56 || 0:00:56,00 || 112 || 0:01:52,00 || 224 || 0:03:44,00 || 448 || 0:07:28,00 || 896 || 0:14:56,00&lt;br /&gt;
|-&lt;br /&gt;
| 60 || 0:01:00,00 || 120 || 0:02:00,00 || 240 || 0:04:00,00 || 480 || 0:08:00,00 || 960 || 0:16:00,00&lt;br /&gt;
|-&lt;br /&gt;
| 64 || 0:01:04,00 || 128 || 0:02:08,00 || 256 || 0:04:16,00 || 512 || 0:08:32,00 || 1024 || 0:17:04,00&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || || || || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| 1152 || 0:19:12,00 || 2304 || 0:38:24,00 || 4608 || 1:16:48,00 || 9216 || 2:33:36,00 || ||&lt;br /&gt;
|-&lt;br /&gt;
| 1280 || 0:21:20,00 || 2560 || 0:42:40,00 || 5120 || 1:25:20,00 || 10240 || 2:50:40,00 || ||&lt;br /&gt;
|-&lt;br /&gt;
| 1408 || 0:23:28,00 || 2816 || 0:46:56,00 || 5632 || 1:33:52,00 || 11264 || 3:07:44,00 || ||&lt;br /&gt;
|-&lt;br /&gt;
| 1536 || 0:25:36,00 || 3072 || 0:51:12,00 || 6144 || 1:42:24,00 || 12288 || 3:24:48,00 || ||&lt;br /&gt;
|-&lt;br /&gt;
| 1664 || 0:27:44,00 || 3328 || 0:55:28,00 || 6656 || 1:50:56,00 || 13312 || 3:41:52,00 || ||&lt;br /&gt;
|-&lt;br /&gt;
| 1792 || 0:29:52,00 || 3584 || 0:59:44,00 || 7168 || 1:59:28,00 || 14336 || 3:58:56,00 || ||&lt;br /&gt;
|-&lt;br /&gt;
| 1920 || 0:32:00,00 || 3840 || 1:04:00,00 || 7680 || 2:08:00,00 || 15360 || 4:16:00,00 || ||&lt;br /&gt;
|-&lt;br /&gt;
| 2048 || 0:34:08,00 || 4096 || 1:08:16,00 || 8192 || 2:16:32,00 || 0 || 0 || ||&lt;br /&gt;
|}&lt;br /&gt;
Beispiele und die Ausgabe im FHEM  log:&lt;br /&gt;
&lt;br /&gt;
 define TestDev_2 at *12:52 set TestDev on-for-timer 0,27  &#039;&#039;&#039;-&amp;gt; Bad time spec (Komma statt Punkt)&#039;&#039;&#039;&lt;br /&gt;
 define TestDev_1 at *13:23 set TestDev on-for-timer 16000 &#039;&#039;&#039;-&amp;gt; Specified timeout too large, max is 15360&#039;&#039;&#039; &lt;br /&gt;
 define TestDev_2 at *13:24 set TestDev on-for-timer 2.6   &#039;&#039;&#039;-&amp;gt; TestDev: changing timeout to 2.75 from 2.6&#039;&#039;&#039; &lt;br /&gt;
 define TestDev_2 at *13:24 set TestDev on-for-timer 81    &#039;&#039;&#039;-&amp;gt; TestDev: changing timeout to 88 from 81&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Einsatzmöglichkeiten ===&lt;br /&gt;
Im Gegensatz zu HM unterstützt FS20 den Timer auch bei OFF Befehlen. Damit lassen sich neben dem offensichtlichen Nutzen auch zwei Probleme lösen:&lt;br /&gt;
&lt;br /&gt;
1. Erhöhung der Zuverlässigkeit bei Ausschaltung kritischer Systeme. Schaltet man Beispielsweise mittels FHEM und einem FS20 Aktor eine Heizung aus, so garantiert die Verwendung von &lt;br /&gt;
 off-for-timer 15360&lt;br /&gt;
dass die Heizung auch wieder einschaltet, selbst wenn es später zu Funkstörungen kommen sollte. Sollte hingegen der  off-for-timer 15360 nicht korrekt empfangen werden, geht die Heizung gar nicht erst aus, was ggf. die bessere Option darstellt. &lt;br /&gt;
Längere Auschaltzeiten als 4,5 Stunden können durch erneutes senden eines  off-for-timer  kurz vor Ablauf des Timers realisiert werden.&lt;br /&gt;
&lt;br /&gt;
2. Es kommt offenbar unter ungünstigen Bedingungen vor, dass bestimmte Befehle (on oder off) von einem FS20 Aktor nicht gut empfangen werden, der jeweilige Gegenteilige Befehl aber wohl. Machmal kann man sich dann helfen, indem man einen Aktor ausschliesslich durch den gegenteiligen Befehl steuert. FS20 Aktoren lassen sich z.B. AUSschalten in dem man &lt;br /&gt;
 on-for-timer 0.25&lt;br /&gt;
sendet, bzw EINschalten indem man&lt;br /&gt;
 off-for-timer 0.25&lt;br /&gt;
sendet.&lt;br /&gt;
&lt;br /&gt;
== Gerätetimer setzen / löschen ==&lt;br /&gt;
Zumindest bei einigen FS20 Geräten läßt sich auch der interne Gerätetimer über FHEM setzen. Dieser Timer wird vom Gerät dann bei normalen ON Befehlen berücksichtigt. &lt;br /&gt;
:&amp;lt;code&amp;gt;set schalterZwei timer 16 &amp;lt;/code&amp;gt; -&amp;gt; Timer von Gerät &#039;&#039;&#039;schalterZwei&#039;&#039;&#039; wird auf 16 Sekunden gesetzt&lt;br /&gt;
Theoretisch lässt sich der timer auch wieder auschalten mit:&lt;br /&gt;
:&amp;lt;code&amp;gt;set schalterEins timer 0 &amp;lt;/code&amp;gt; -&amp;gt; Timer von Gerät &#039;&#039;&#039;schalterEins&#039;&#039;&#039; wird deaktiviert / gelöscht&lt;br /&gt;
jedoch scheint dies nicht bei allen Geräten einwandfrei zu funktionieren. Ggf. Mehrmals versuchen.&lt;br /&gt;
&lt;br /&gt;
Für folgende Geräte funktioniert der &amp;lt;code&amp;gt;set xxx timer&amp;lt;/code&amp;gt; Befehl definitiv: &lt;br /&gt;
* [[FS20 RSU Rolladenschalter (Unterputz)]], &lt;br /&gt;
* FS20 SM4, &lt;br /&gt;
* [[FS20 SU Unterputz-Funk-Schalter]].&lt;br /&gt;
* FS20 ST-4&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- {{Todo|List of devices needs to be extended/completed; please add source of information on the FS20 discussion page}} --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sobald der Timer in einem FS20 Geräte gesetzt wird, schaltet auch der Befehel&lt;br /&gt;
:&amp;lt;code&amp;gt;set schalterZwei on &amp;lt;/code&amp;gt;&lt;br /&gt;
das Gerät nur für 16 Sekunden an.&lt;br /&gt;
&lt;br /&gt;
== FS20 Adressumrechnung ==&lt;br /&gt;
Die direkte Einstellung der Codierung an FS20 und Homematic-Fernbedienungen erfolgt laut ELV Bedienungsanleitungen nur mit den Zahlen 1 bis 4. Das heißt, der Code basiert auf dem &amp;quot;Quaternärzahlensystem&amp;quot; (Vierersystem, Zahlensystem mit Basis 4 [0...3]). Dabei werden den für die Codierung verwendeten Tasten aber nicht die Zahlen 0...3 sondern 1...4 (pseudoquaternär) zugewiesen.&lt;br /&gt;
&lt;br /&gt;
Obwohl FHEM die pseudoquaternäre Schreibweise unterstützt, kann es notwendig sein, die Adressen in hex umzurechnen (Zahlensystem mit Basis 16 [0...F], Kennzeichnung durch vorangestelltes &amp;quot;0x&amp;quot;). Anhand der folgenden Tabelle kann zwischen beiden Darstellungsarten umgerechnet werden:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center&amp;quot;&lt;br /&gt;
! 1x quad !! 2x quad !! 3x quad !! 4x quad&lt;br /&gt;
|-&lt;br /&gt;
| 11 = 0x0 || 12 = 0x1 || 13 = 0x2 || 14 = 0x3&lt;br /&gt;
|-&lt;br /&gt;
| 21 = 0x4 || 22 = 0x5 || 23 = 0x6 || 24 = 0x7&lt;br /&gt;
|- &lt;br /&gt;
| 31 = 0x8 || 32 = 0x9 || 33 = 0xA || 34 = 0xB&lt;br /&gt;
|-&lt;br /&gt;
| 41 = 0xC || 42 = 0xD || 43 = 0xE || 44 = 0xF&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Beispiel:&#039;&#039; [[Was ist der Hauscode?|Hauscode]] nach ELV (pseudoquaternär) &amp;quot;43 21 12 34&amp;quot; ergibt nach FHEM  (hexadezimal) &amp;quot;E 4 1 B&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Einen automatischen Umrechner findet man auch unter [https://www.homematic-inside.de/praxis/tools/fs20converter www.homematic-inside.de]&lt;br /&gt;
&lt;br /&gt;
Da FHEM beide Schreibweisen unterstützt, hat Verwendung der pseudoquaternärern Schreibweise auch innerhalb FHEM den Vorteil, die notwendigen Tastendrücke zur Einrichtung des FS20 Hauscodes direkt ablesbar zu machen.&lt;br /&gt;
&lt;br /&gt;
== FS20 Adressierungsschema (Vorschlag) ==&lt;br /&gt;
=== &amp;quot;klassisches&amp;quot; Schema ===&lt;br /&gt;
Bei der Adressierung der Geräte können verschiedene Adressgruppen und -bereiche eingerichtet werden. Der Einfachheit halber (weil man an den Geräten keine Hex-Werte einstellen kann) erfolgt die Erklärung anhand der Pseudoquarternärzahlen.&lt;br /&gt;
Eine gute Erklärung ist auch hier zu finden: Serie im ELV Journal, Teil 4 {{DocLink|elv|/bilder/journal/2007_01/14/fs20_system_teil4.pdf}}.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Bezeichnung !! Schema !! Beispiel&lt;br /&gt;
|-&lt;br /&gt;
| Hauscode || xxxx xxxx || 4332 3221&lt;br /&gt;
|-&lt;br /&gt;
| Gerätecode || yyyy || 1111&lt;br /&gt;
|-&lt;br /&gt;
| Funktionsgruppe || 44aa || 4411 bis 4443&lt;br /&gt;
|-&lt;br /&gt;
| Lokaler Master || bb44 || 1144 bis 4344&lt;br /&gt;
|-&lt;br /&gt;
| Globaler Master || 4444 || 4444&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Mit Hilfe dieser Adressgruppen kann man jetzt sein System entwerfen:&lt;br /&gt;
&lt;br /&gt;
Hauscode festlegen:&lt;br /&gt;
* s.o. 4332 3221&lt;br /&gt;
&lt;br /&gt;
Funktionsgruppen festlegen:&lt;br /&gt;
* 4411: Deckenleuchten&lt;br /&gt;
* 4412: Rolläden&lt;br /&gt;
&lt;br /&gt;
Lokale Master festlegen:&lt;br /&gt;
* 1144: Flur&lt;br /&gt;
* 1244: Esszimmer&lt;br /&gt;
* 1344: Wohnzimmer&lt;br /&gt;
* 1444: Schlafzimmer&lt;br /&gt;
&lt;br /&gt;
Globaler Master &lt;br /&gt;
* ist fest auf 4444&lt;br /&gt;
&lt;br /&gt;
Einzeladressen festlegen: Aus Gründen der Übersichtlichkeit werden die Lokalen Master-Adressen im vorderen Teil verwendet. Dies ist für die Funktion &#039;&#039;&#039;nicht&#039;&#039;&#039; erforderlich.:&lt;br /&gt;
* 1311: Stereoanlage Wohnzimmer&lt;br /&gt;
* 1312: Deckenlampe Wohnzimmer&lt;br /&gt;
* 1112: Steckdose Flur&lt;br /&gt;
* 1244: Deckenlampe Esszimmer&lt;br /&gt;
* 1411: Deckenlampe Schlafzimmer&lt;br /&gt;
usw.&lt;br /&gt;
&lt;br /&gt;
Somit bekommt jeder Aktor &#039;&#039;&#039;bis zu vier&#039;&#039;&#039; Adresszuweisungen zusätzlich zum Hauscode. Die Sensoren hingegen bekommen &#039;&#039;&#039;nur eine&#039;&#039;&#039; Adresse zusätzlich zum Hauscode zugewiesen. Nun können alle Aktoren nach belieben geschaltet werden: &lt;br /&gt;
* mit 4411 alle Deckenleuchten im Haus&lt;br /&gt;
* mit 1312 nur die Deckenlampe im Wohnzimmer&lt;br /&gt;
* mit 1344 sowohl Deckenlampe als auch Stereoanlage&lt;br /&gt;
* mit 4444 alle Geräte (bei denen diese Adresse einprogrammiert ist)&lt;br /&gt;
&lt;br /&gt;
=== Alternatives Schema===&lt;br /&gt;
Das normale oben beschriebene Herangehen entfaltet seine Vorteile vor allem bei Nutzung von lokalen Masteradressen und Funktionsgruppen, die das Schalten vieler Komponenten mit nur einem Befehl ermöglicht, sowie wenn FS20 Komponenten durch Fernsteuerungen direkt (quasi an FHEM vorbei) gesteuert werden sollen.&lt;br /&gt;
Kann man auf dieses Feature verzichten - z.B. weil es in FHEM auch anders abgebildet werden kann - sind auch andere Adressschemata möglich.&lt;br /&gt;
&lt;br /&gt;
Gerade im Umfeld von FHEM mit Nutzung von [[CUL]] oder ähnlichen Funkschnittstellen (im Gegensatz zu ELV Zentralen wie FHZ1000) kann man den Hauscode nämlich auch nur als bloßen Adressbestandteil auffassen und in einer Installation mehrere Hauscodes verwenden. &lt;br /&gt;
&lt;br /&gt;
Dadurch könnte man diverse funktional unterscheidbare Komponenten jeweils mit eigenen Hauscodes versehen, z.b.: Alle Lichtaktoren Hauscode 4332 3221, alle Aktoren im Aussenbereich 4332 3222, alle Rolladenaktoren 4332 3223  etc. &lt;br /&gt;
&lt;br /&gt;
In solchen Installationen kann die globale Masteradresse die Funktion des lokalen Masters übernehmen: Mit Adresse 4444 und Hauscode 4332 3221 liesse sich im Beispiel alles Licht zugleich Ausschalten, ohne dass die Aktoren im Aussenbereich oder Rolladen betroffen wären.&lt;br /&gt;
&lt;br /&gt;
Da FS20 je Hauscode &amp;quot;nur&amp;quot; 254 Adressen kennt, kann die &amp;quot;klassische&amp;quot; Adressierung mit Funktionsgruppen und Lokalen Mastern durchaus aufwendige Planung erfordern, um den Adressbereich sinnvoll einzuteilen. Die Verwendung mehrerer Hauscodes erfordert meistens weniger Planung.&lt;br /&gt;
&lt;br /&gt;
In diesem alternative Schema können FS20 Fernbedienungen allerdings nur eingeschränkt zur &#039;&#039;&#039;Direkt&#039;&#039;&#039;steuerung von FS20 Komponenten verwendet werden, da jede Fernbedienung einen Hauscode für alle Kanäle/Tasten verwendet.&lt;br /&gt;
Gerade in solchen Installationen ist es also sinnvoll, Fernbedienungen nicht den Komponenten direkt zuzuordnen, sondern damit Aktionen über FHEM mittels &amp;lt;code&amp;gt;define…notify&amp;lt;/code&amp;gt; auszulösen.&lt;br /&gt;
&lt;br /&gt;
== FS20 - Probleme durch LTE ==&lt;br /&gt;
Ende 2012 tauchten die ersten Meldungen in den Medien auf, dass FS20-Empfänger Probleme durch den LTE-Ausbau bekommen. Erste Problemschilderungen tauchten bereits Ende 2011 in einigen Foren auf (z.B. [http://www.lte-anbieter.info/lte-forum/threads/128-LTE-und-Haussteuerung hier]).&lt;br /&gt;
&lt;br /&gt;
Zur weiteren Informationen sei auf die folgenden Artikel verwiesen:&lt;br /&gt;
&lt;br /&gt;
* [http://www.heise.de/ct/artikel/Hausautomationssystem-ELV-FS20-Probleme-mit-LTE-Routern-1758453.html heise.de]&lt;br /&gt;
* [http://www.elv.de/nicht-lte-stoerfest.html elv.de]&lt;br /&gt;
&lt;br /&gt;
Betroffen von diesen Problemen sollen insbesondere FS20-Geräte &#039;&#039;&#039;älterer&#039;&#039;&#039; Bauart sein, da deren Empfangsteil zu breitbandig sei.&lt;br /&gt;
&lt;br /&gt;
Unter [ftp://ftp.heise.de/pub/ct/listings/1226-025.zip Textdatei] findet sich eine &#039;&#039;Liste der vom LTE-Problem betroffenen FS20-Geräte&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Für Bastler gibt es einen [https://www.heise.de/ct/ausgabe/2017-21-FS20-Schalter-Dimmer-und-Interfaces-LTE-sicher-machen-3837756.html Artikel in CT 2017/21, S. 152], wo ein Austausch des jeweiligen Empfangsbausteins (durch z. B. den ELV RX868SH-DV, ca. 13 €) beschrieben wird.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
ELV (Journal) Serie über das FS20 System in der Praxis:&lt;br /&gt;
* Teil 1 {{DocLink|elv|/bilder/journal/2006_04/01/fs20_system_teil1.pdf}} - Einleitung&lt;br /&gt;
* Teil 2 {{DocLink|elv|/bilder/journal/2006_05/18/fs20_system_teil2.pdf}} - Installationsbeispiel Unterputzschalter&lt;br /&gt;
* Teil 3 {{DocLink|elv|/bilder/journal/2006_06/03/fs20_system_teil3.pdf}} - Beleuchtungssteuerung durch Verknüpfung von Komponenten&lt;br /&gt;
* Teil 4 {{DocLink|elv|/bilder/journal/2007_01/14/fs20_system_teil4.pdf}} - Planung und Einrichtung eines Haussteuerungssystems&lt;br /&gt;
* Teil 5 {{DocLink|elv|/bilder/journal/2007_04/13/fs20_system_teil5.pdf}} - Rollladensteuerung&lt;br /&gt;
* Teil 6 {{DocLink|elv|/bilder/journal/2007_05/04/fs20_system_teil6.pdf}} - Kameraüberwachung + Dokumentation einer FS20 Installation&lt;br /&gt;
* Teil 7 {{DocLink|elv|/bilder/journal/2007_06/03/fs20_system_teil7.pdf}} - Rollladensteuerung mit &amp;quot;homeputer Studio&amp;quot;&lt;br /&gt;
* Teil 8 {{DocLink|elv|/bilder/journal/2008_01/04/fs20_system_teil8.pdf}} - Makroprogrammierung (mit &amp;quot;homeputer Studio&amp;quot;) &lt;br /&gt;
* Teil 9 {{DocLink|elv|/bilder/journal/2008_02/05/fs20_system_teil9.pdf}} - FS20 Audio Komponenten&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:FS20 Components|Allgemein]]&lt;/div&gt;</summary>
		<author><name>Soulman</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=FS20_Allgemein&amp;diff=39773</id>
		<title>FS20 Allgemein</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=FS20_Allgemein&amp;diff=39773"/>
		<updated>2024-12-27T15:19:17Z</updated>

		<summary type="html">&lt;p&gt;Soulman: /* Einsatzmöglichkeiten */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Allgemeine Informationen, die für alle FS20 Geräte im Zusammenhang mit FHEM  Gültigkeit haben.&lt;br /&gt;
== ON/OFF Befehle mit Time Parameter ==&lt;br /&gt;
=== Einführung ===&lt;br /&gt;
Viele FS20 Geräte lassen sich für eine bestimmte Zeitdauer schalten, die Schaltzeit kann beim Befehl bereits mitgegeben werden, das Gerät verwaltet die Zeit eigenständig, es muss also kein Ausschaltbefehl (bzw. Einschaltbefehl) mehr gesendet werden, um den vorherigen Zustand wieder herzustellen (es handelt sich hier &#039;&#039;&#039;nicht&#039;&#039;&#039; um die in FS20 Empfängern einstellbare Timer-Funktion, die (Ein-)Schaltzeiten zwischen einer Sekunde und 4,5 Stunden ermöglicht). &lt;br /&gt;
Ein erneutes Senden eines for-timer Befehls löscht die alte Zeit und beginnt von vorne an zu zählen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Mögliche Zeiten ===&lt;br /&gt;
&lt;br /&gt;
Die on/off-for... Befehle in FHEM  ([http://fhem.de/commandref.html#FS20 Command Reference, FS20]) unterstützen einen optionalen &#039;&#039;&#039;time&#039;&#039;&#039; Parameter. Der Wert wird in Sekunden angegeben, erlaubt Nachkommastellen (als Dezimaltrenner ist der Punkt zu verwenden, anderenfalls bekommt man von FHEM  die Meldung &amp;quot;Bad time spec&amp;quot;), wird aber letztendlich immer in einen der folgenden (112) Werte umgesetzt. FHEM  rundet immer auf den nächsthöheren möglichen Wert auf (siehe Beispiele unter der Tabelle).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:right&amp;quot;&lt;br /&gt;
! Sekunden !! Zeitdauer !! Sekunden !! Zeitdauer !! Sekunden !! Zeitdauer !! Sekunden !! Zeitdauer !! Sekunden !! Zeitdauer&lt;br /&gt;
|-&lt;br /&gt;
| 0,25 || 0:00:00,25 || 2,25 || 0:00:02,25 || 4,5 || 0:00:04,50 || 9 || 0:00:09,00 || 18 || 0:00:18,00&lt;br /&gt;
|-&lt;br /&gt;
| 0,5 || 0:00:00,50 || 2,5 || 0:00:02,50 || 5 || 0:00:05,00 || 10 || 0:00:10,00 || 20 || 0:00:20,00&lt;br /&gt;
|-&lt;br /&gt;
| 0,75 || 0:00:00,75 || 2,75 || 0:00:02,75 || 5,5 || 0:00:05,50 || 11 || 0:00:11,00 || 22 || 0:00:22,00&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0:00:01,00 || 3 || 0:00:03,00 || 6 || 0:00:06,00 || 12 || 0:00:12,00 || 24 || 0:00:24,00&lt;br /&gt;
|-&lt;br /&gt;
| 1,25 || 0:00:01,25 || 3,25 || 0:00:03,25 || 6,5 || 0:00:06,50 || 13 || 0:00:13,00 || 26 || 0:00:26,00&lt;br /&gt;
|-&lt;br /&gt;
| 1,5 || 0:00:01,50 || 3,5 || 0:00:03,50 || 7 || 0:00:07,00 || 14 || 0:00:14,00 || 28 || 0:00:28,00&lt;br /&gt;
|-&lt;br /&gt;
| 1,75 || 0:00:01,75 || 3,75 || 0:00:03,75 || 7,5 || 0:00:07,50 || 15 || 0:00:15,00 || 30 || 0:00:30,00&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 0:00:02,00 || 4 || 0:00:04,00 || 8 || 0:00:08,00 || 16 || 0:00:16,00 || 32 || 0:00:32,00&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || || || || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| 36 || 0:00:36,00 || 72 || 0:01:12,00 || 144 || 0:02:24,00 || 288 || 0:04:48,00 || 576 || 0:09:36,00&lt;br /&gt;
|-&lt;br /&gt;
| 40 || 0:00:40,00 || 80 || 0:01:20,00 || 160 || 0:02:40,00 || 320 || 0:05:20,00 || 640 || 0:10:40,00&lt;br /&gt;
|-&lt;br /&gt;
| 44 || 0:00:44,00 || 88 || 0:01:28,00 || 176 || 0:02:56,00 || 352 || 0:05:52,00 || 704 || 0:11:44,00&lt;br /&gt;
|-&lt;br /&gt;
| 48 || 0:00:48,00 || 96 || 0:01:36,00 || 192 || 0:03:12,00 || 384 || 0:06:24,00 || 768 || 0:12:48,00&lt;br /&gt;
|-&lt;br /&gt;
| 52 || 0:00:52,00 || 104 || 0:01:44,00 || 208 || 0:03:28,00 || 416 || 0:06:56,00 || 832 || 0:13:52,00&lt;br /&gt;
|-&lt;br /&gt;
| 56 || 0:00:56,00 || 112 || 0:01:52,00 || 224 || 0:03:44,00 || 448 || 0:07:28,00 || 896 || 0:14:56,00&lt;br /&gt;
|-&lt;br /&gt;
| 60 || 0:01:00,00 || 120 || 0:02:00,00 || 240 || 0:04:00,00 || 480 || 0:08:00,00 || 960 || 0:16:00,00&lt;br /&gt;
|-&lt;br /&gt;
| 64 || 0:01:04,00 || 128 || 0:02:08,00 || 256 || 0:04:16,00 || 512 || 0:08:32,00 || 1024 || 0:17:04,00&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp; || || || || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| 1152 || 0:19:12,00 || 2304 || 0:38:24,00 || 4608 || 1:16:48,00 || 9216 || 2:33:36,00 || ||&lt;br /&gt;
|-&lt;br /&gt;
| 1280 || 0:21:20,00 || 2560 || 0:42:40,00 || 5120 || 1:25:20,00 || 10240 || 2:50:40,00 || ||&lt;br /&gt;
|-&lt;br /&gt;
| 1408 || 0:23:28,00 || 2816 || 0:46:56,00 || 5632 || 1:33:52,00 || 11264 || 3:07:44,00 || ||&lt;br /&gt;
|-&lt;br /&gt;
| 1536 || 0:25:36,00 || 3072 || 0:51:12,00 || 6144 || 1:42:24,00 || 12288 || 3:24:48,00 || ||&lt;br /&gt;
|-&lt;br /&gt;
| 1664 || 0:27:44,00 || 3328 || 0:55:28,00 || 6656 || 1:50:56,00 || 13312 || 3:41:52,00 || ||&lt;br /&gt;
|-&lt;br /&gt;
| 1792 || 0:29:52,00 || 3584 || 0:59:44,00 || 7168 || 1:59:28,00 || 14336 || 3:58:56,00 || ||&lt;br /&gt;
|-&lt;br /&gt;
| 1920 || 0:32:00,00 || 3840 || 1:04:00,00 || 7680 || 2:08:00,00 || 15360 || 4:16:00,00 || ||&lt;br /&gt;
|-&lt;br /&gt;
| 2048 || 0:34:08,00 || 4096 || 1:08:16,00 || 8192 || 2:16:32,00 || 0 || 0 || ||&lt;br /&gt;
|}&lt;br /&gt;
Beispiele und die Ausgabe im FHEM  log:&lt;br /&gt;
&lt;br /&gt;
 define TestDev_2 at *12:52 set TestDev on-for-timer 0,27  &#039;&#039;&#039;-&amp;gt; Bad time spec (Komma statt Punkt)&#039;&#039;&#039;&lt;br /&gt;
 define TestDev_1 at *13:23 set TestDev on-for-timer 16000 &#039;&#039;&#039;-&amp;gt; Specified timeout too large, max is 15360&#039;&#039;&#039; &lt;br /&gt;
 define TestDev_2 at *13:24 set TestDev on-for-timer 2.6   &#039;&#039;&#039;-&amp;gt; TestDev: changing timeout to 2.75 from 2.6&#039;&#039;&#039; &lt;br /&gt;
 define TestDev_2 at *13:24 set TestDev on-for-timer 81    &#039;&#039;&#039;-&amp;gt; TestDev: changing timeout to 88 from 81&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Einsatzmöglichkeiten ===&lt;br /&gt;
Im Gegensatz zu HM unterstützt FS20 den Timer auch bei OFF Befehlen. Damit lassen sich neben dem offensichtlichen Nutzen auch zwei Probleme lösen:&lt;br /&gt;
&lt;br /&gt;
1. Erhöhung der Zuverlässigkeit bei Ausschaltung kritischer Systeme. Schaltet man Beispielsweise mittels FHEM und einem FS20 Aktor eine Heizung aus, so garantiert die Verwendung von &lt;br /&gt;
 off-for-timer 15360&lt;br /&gt;
dass die Heizung auch wieder einschaltet, selbst wenn es später zu Funkstörungen kommen sollte. Sollte hingegen der  off-for-timer 15360 nicht korrekt empfangen werden, geht die Heizung gar nicht erst aus, was ggf. die bessere Option darstellt. &lt;br /&gt;
Längere Auschaltzeiten als 4,5 Stunden können durch erneutes senden eines  off-for-timer  kurz vor Ablauf des Timers realisiert werden.&lt;br /&gt;
&lt;br /&gt;
2. Es kommt offenbar unter ungünstigen Bedingungen vor, dass bestimmte Befehle (on oder off) von einem FS20 Aktor nicht gut empfangen werden, der jeweilige Gegenteilige Befehl aber wohl. Machmal kann man sich dann helfen, indem man einen Aktor ausschliesslich durch den gegenteiligen Befehl steuert. FS20 Aktoren lassen sich z.B. AUSschalten in dem man &lt;br /&gt;
 on-for-timer 0.25&lt;br /&gt;
sendet, bzw EINschalten indem man&lt;br /&gt;
 off-for-timer 0.25&lt;br /&gt;
sendet.&lt;br /&gt;
&lt;br /&gt;
== Gerätetimer setzen / löschen ==&lt;br /&gt;
Zumindest bei einigen FS20 Geräten läßt sich auch der interne Gerätetimer über FHEM setzen. Dieser Timer wird vom Gerät dann bei normalen ON Befehlen berücksichtigt. &lt;br /&gt;
:&amp;lt;code&amp;gt;set schalterZwei timer 16 &amp;lt;/code&amp;gt; -&amp;gt; Timer von Gerät &#039;&#039;&#039;schalterZwei&#039;&#039;&#039; wird auf 16 Sekunden gesetzt&lt;br /&gt;
Theoretisch lässt sich der timer auch wieder auschalten mit:&lt;br /&gt;
:&amp;lt;code&amp;gt;set schalterEins timer 0 &amp;lt;/code&amp;gt; -&amp;gt; Timer von Gerät &#039;&#039;&#039;schalterEins&#039;&#039;&#039; wird deaktiviert / gelöscht&lt;br /&gt;
jedoch scheint dies nicht bei allen Geräten einwandfrei zu funktionieren. Ggf. Mehrmals versuchen.&lt;br /&gt;
&lt;br /&gt;
Für folgende Geräte funktioniert der &amp;lt;code&amp;gt;set xxx timer&amp;lt;/code&amp;gt; Befehl definitiv: &lt;br /&gt;
* [[FS20 RSU Rolladenschalter (Unterputz)]], &lt;br /&gt;
* FS20 SM4, &lt;br /&gt;
* [[FS20 SU Unterputz-Funk-Schalter]].&lt;br /&gt;
* FS20 ST-4&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- {{Todo|List of devices needs to be extended/completed; please add source of information on the FS20 discussion page}} --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FS20 Adressumrechnung ==&lt;br /&gt;
Die direkte Einstellung der Codierung an FS20 und Homematic-Fernbedienungen erfolgt laut ELV Bedienungsanleitungen nur mit den Zahlen 1 bis 4. Das heißt, der Code basiert auf dem &amp;quot;Quaternärzahlensystem&amp;quot; (Vierersystem, Zahlensystem mit Basis 4 [0...3]). Dabei werden den für die Codierung verwendeten Tasten aber nicht die Zahlen 0...3 sondern 1...4 (pseudoquaternär) zugewiesen.&lt;br /&gt;
&lt;br /&gt;
Obwohl FHEM die pseudoquaternäre Schreibweise unterstützt, kann es notwendig sein, die Adressen in hex umzurechnen (Zahlensystem mit Basis 16 [0...F], Kennzeichnung durch vorangestelltes &amp;quot;0x&amp;quot;). Anhand der folgenden Tabelle kann zwischen beiden Darstellungsarten umgerechnet werden:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; text-align:center&amp;quot;&lt;br /&gt;
! 1x quad !! 2x quad !! 3x quad !! 4x quad&lt;br /&gt;
|-&lt;br /&gt;
| 11 = 0x0 || 12 = 0x1 || 13 = 0x2 || 14 = 0x3&lt;br /&gt;
|-&lt;br /&gt;
| 21 = 0x4 || 22 = 0x5 || 23 = 0x6 || 24 = 0x7&lt;br /&gt;
|- &lt;br /&gt;
| 31 = 0x8 || 32 = 0x9 || 33 = 0xA || 34 = 0xB&lt;br /&gt;
|-&lt;br /&gt;
| 41 = 0xC || 42 = 0xD || 43 = 0xE || 44 = 0xF&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Beispiel:&#039;&#039; [[Was ist der Hauscode?|Hauscode]] nach ELV (pseudoquaternär) &amp;quot;43 21 12 34&amp;quot; ergibt nach FHEM  (hexadezimal) &amp;quot;E 4 1 B&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Einen automatischen Umrechner findet man auch unter [https://www.homematic-inside.de/praxis/tools/fs20converter www.homematic-inside.de]&lt;br /&gt;
&lt;br /&gt;
Da FHEM beide Schreibweisen unterstützt, hat Verwendung der pseudoquaternärern Schreibweise auch innerhalb FHEM den Vorteil, die notwendigen Tastendrücke zur Einrichtung des FS20 Hauscodes direkt ablesbar zu machen.&lt;br /&gt;
&lt;br /&gt;
== FS20 Adressierungsschema (Vorschlag) ==&lt;br /&gt;
=== &amp;quot;klassisches&amp;quot; Schema ===&lt;br /&gt;
Bei der Adressierung der Geräte können verschiedene Adressgruppen und -bereiche eingerichtet werden. Der Einfachheit halber (weil man an den Geräten keine Hex-Werte einstellen kann) erfolgt die Erklärung anhand der Pseudoquarternärzahlen.&lt;br /&gt;
Eine gute Erklärung ist auch hier zu finden: Serie im ELV Journal, Teil 4 {{DocLink|elv|/bilder/journal/2007_01/14/fs20_system_teil4.pdf}}.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Bezeichnung !! Schema !! Beispiel&lt;br /&gt;
|-&lt;br /&gt;
| Hauscode || xxxx xxxx || 4332 3221&lt;br /&gt;
|-&lt;br /&gt;
| Gerätecode || yyyy || 1111&lt;br /&gt;
|-&lt;br /&gt;
| Funktionsgruppe || 44aa || 4411 bis 4443&lt;br /&gt;
|-&lt;br /&gt;
| Lokaler Master || bb44 || 1144 bis 4344&lt;br /&gt;
|-&lt;br /&gt;
| Globaler Master || 4444 || 4444&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Mit Hilfe dieser Adressgruppen kann man jetzt sein System entwerfen:&lt;br /&gt;
&lt;br /&gt;
Hauscode festlegen:&lt;br /&gt;
* s.o. 4332 3221&lt;br /&gt;
&lt;br /&gt;
Funktionsgruppen festlegen:&lt;br /&gt;
* 4411: Deckenleuchten&lt;br /&gt;
* 4412: Rolläden&lt;br /&gt;
&lt;br /&gt;
Lokale Master festlegen:&lt;br /&gt;
* 1144: Flur&lt;br /&gt;
* 1244: Esszimmer&lt;br /&gt;
* 1344: Wohnzimmer&lt;br /&gt;
* 1444: Schlafzimmer&lt;br /&gt;
&lt;br /&gt;
Globaler Master &lt;br /&gt;
* ist fest auf 4444&lt;br /&gt;
&lt;br /&gt;
Einzeladressen festlegen: Aus Gründen der Übersichtlichkeit werden die Lokalen Master-Adressen im vorderen Teil verwendet. Dies ist für die Funktion &#039;&#039;&#039;nicht&#039;&#039;&#039; erforderlich.:&lt;br /&gt;
* 1311: Stereoanlage Wohnzimmer&lt;br /&gt;
* 1312: Deckenlampe Wohnzimmer&lt;br /&gt;
* 1112: Steckdose Flur&lt;br /&gt;
* 1244: Deckenlampe Esszimmer&lt;br /&gt;
* 1411: Deckenlampe Schlafzimmer&lt;br /&gt;
usw.&lt;br /&gt;
&lt;br /&gt;
Somit bekommt jeder Aktor &#039;&#039;&#039;bis zu vier&#039;&#039;&#039; Adresszuweisungen zusätzlich zum Hauscode. Die Sensoren hingegen bekommen &#039;&#039;&#039;nur eine&#039;&#039;&#039; Adresse zusätzlich zum Hauscode zugewiesen. Nun können alle Aktoren nach belieben geschaltet werden: &lt;br /&gt;
* mit 4411 alle Deckenleuchten im Haus&lt;br /&gt;
* mit 1312 nur die Deckenlampe im Wohnzimmer&lt;br /&gt;
* mit 1344 sowohl Deckenlampe als auch Stereoanlage&lt;br /&gt;
* mit 4444 alle Geräte (bei denen diese Adresse einprogrammiert ist)&lt;br /&gt;
&lt;br /&gt;
=== Alternatives Schema===&lt;br /&gt;
Das normale oben beschriebene Herangehen entfaltet seine Vorteile vor allem bei Nutzung von lokalen Masteradressen und Funktionsgruppen, die das Schalten vieler Komponenten mit nur einem Befehl ermöglicht, sowie wenn FS20 Komponenten durch Fernsteuerungen direkt (quasi an FHEM vorbei) gesteuert werden sollen.&lt;br /&gt;
Kann man auf dieses Feature verzichten - z.B. weil es in FHEM auch anders abgebildet werden kann - sind auch andere Adressschemata möglich.&lt;br /&gt;
&lt;br /&gt;
Gerade im Umfeld von FHEM mit Nutzung von [[CUL]] oder ähnlichen Funkschnittstellen (im Gegensatz zu ELV Zentralen wie FHZ1000) kann man den Hauscode nämlich auch nur als bloßen Adressbestandteil auffassen und in einer Installation mehrere Hauscodes verwenden. &lt;br /&gt;
&lt;br /&gt;
Dadurch könnte man diverse funktional unterscheidbare Komponenten jeweils mit eigenen Hauscodes versehen, z.b.: Alle Lichtaktoren Hauscode 4332 3221, alle Aktoren im Aussenbereich 4332 3222, alle Rolladenaktoren 4332 3223  etc. &lt;br /&gt;
&lt;br /&gt;
In solchen Installationen kann die globale Masteradresse die Funktion des lokalen Masters übernehmen: Mit Adresse 4444 und Hauscode 4332 3221 liesse sich im Beispiel alles Licht zugleich Ausschalten, ohne dass die Aktoren im Aussenbereich oder Rolladen betroffen wären.&lt;br /&gt;
&lt;br /&gt;
Da FS20 je Hauscode &amp;quot;nur&amp;quot; 254 Adressen kennt, kann die &amp;quot;klassische&amp;quot; Adressierung mit Funktionsgruppen und Lokalen Mastern durchaus aufwendige Planung erfordern, um den Adressbereich sinnvoll einzuteilen. Die Verwendung mehrerer Hauscodes erfordert meistens weniger Planung.&lt;br /&gt;
&lt;br /&gt;
In diesem alternative Schema können FS20 Fernbedienungen allerdings nur eingeschränkt zur &#039;&#039;&#039;Direkt&#039;&#039;&#039;steuerung von FS20 Komponenten verwendet werden, da jede Fernbedienung einen Hauscode für alle Kanäle/Tasten verwendet.&lt;br /&gt;
Gerade in solchen Installationen ist es also sinnvoll, Fernbedienungen nicht den Komponenten direkt zuzuordnen, sondern damit Aktionen über FHEM mittels &amp;lt;code&amp;gt;define…notify&amp;lt;/code&amp;gt; auszulösen.&lt;br /&gt;
&lt;br /&gt;
== FS20 - Probleme durch LTE ==&lt;br /&gt;
Ende 2012 tauchten die ersten Meldungen in den Medien auf, dass FS20-Empfänger Probleme durch den LTE-Ausbau bekommen. Erste Problemschilderungen tauchten bereits Ende 2011 in einigen Foren auf (z.B. [http://www.lte-anbieter.info/lte-forum/threads/128-LTE-und-Haussteuerung hier]).&lt;br /&gt;
&lt;br /&gt;
Zur weiteren Informationen sei auf die folgenden Artikel verwiesen:&lt;br /&gt;
&lt;br /&gt;
* [http://www.heise.de/ct/artikel/Hausautomationssystem-ELV-FS20-Probleme-mit-LTE-Routern-1758453.html heise.de]&lt;br /&gt;
* [http://www.elv.de/nicht-lte-stoerfest.html elv.de]&lt;br /&gt;
&lt;br /&gt;
Betroffen von diesen Problemen sollen insbesondere FS20-Geräte &#039;&#039;&#039;älterer&#039;&#039;&#039; Bauart sein, da deren Empfangsteil zu breitbandig sei.&lt;br /&gt;
&lt;br /&gt;
Unter [ftp://ftp.heise.de/pub/ct/listings/1226-025.zip Textdatei] findet sich eine &#039;&#039;Liste der vom LTE-Problem betroffenen FS20-Geräte&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Für Bastler gibt es einen [https://www.heise.de/ct/ausgabe/2017-21-FS20-Schalter-Dimmer-und-Interfaces-LTE-sicher-machen-3837756.html Artikel in CT 2017/21, S. 152], wo ein Austausch des jeweiligen Empfangsbausteins (durch z. B. den ELV RX868SH-DV, ca. 13 €) beschrieben wird.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
ELV (Journal) Serie über das FS20 System in der Praxis:&lt;br /&gt;
* Teil 1 {{DocLink|elv|/bilder/journal/2006_04/01/fs20_system_teil1.pdf}} - Einleitung&lt;br /&gt;
* Teil 2 {{DocLink|elv|/bilder/journal/2006_05/18/fs20_system_teil2.pdf}} - Installationsbeispiel Unterputzschalter&lt;br /&gt;
* Teil 3 {{DocLink|elv|/bilder/journal/2006_06/03/fs20_system_teil3.pdf}} - Beleuchtungssteuerung durch Verknüpfung von Komponenten&lt;br /&gt;
* Teil 4 {{DocLink|elv|/bilder/journal/2007_01/14/fs20_system_teil4.pdf}} - Planung und Einrichtung eines Haussteuerungssystems&lt;br /&gt;
* Teil 5 {{DocLink|elv|/bilder/journal/2007_04/13/fs20_system_teil5.pdf}} - Rollladensteuerung&lt;br /&gt;
* Teil 6 {{DocLink|elv|/bilder/journal/2007_05/04/fs20_system_teil6.pdf}} - Kameraüberwachung + Dokumentation einer FS20 Installation&lt;br /&gt;
* Teil 7 {{DocLink|elv|/bilder/journal/2007_06/03/fs20_system_teil7.pdf}} - Rollladensteuerung mit &amp;quot;homeputer Studio&amp;quot;&lt;br /&gt;
* Teil 8 {{DocLink|elv|/bilder/journal/2008_01/04/fs20_system_teil8.pdf}} - Makroprogrammierung (mit &amp;quot;homeputer Studio&amp;quot;) &lt;br /&gt;
* Teil 9 {{DocLink|elv|/bilder/journal/2008_02/05/fs20_system_teil9.pdf}} - FS20 Audio Komponenten&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:FS20 Components|Allgemein]]&lt;/div&gt;</summary>
		<author><name>Soulman</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Kategorie:FS20_Components&amp;diff=39772</id>
		<title>Kategorie:FS20 Components</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Kategorie:FS20_Components&amp;diff=39772"/>
		<updated>2024-12-27T15:17:30Z</updated>

		<summary type="html">&lt;p&gt;Soulman: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This category lists hardware components of the FS20 system. Please note that the FS20 system has been discontinued and no new devices are available apart from remaining stocks.&lt;br /&gt;
&lt;br /&gt;
General information on using FS20 components with FHEM should go into [[FS20 Allgemein]]. This document, up to now, contains information on:&lt;br /&gt;
&lt;br /&gt;
* [[FS20_Allgemein#Ger.C3.A4tetimer_setzen_.2F_l.C3.B6schen|Using Timers]]&lt;br /&gt;
* [[FS20_Allgemein#FS20_Adressierung_.28Adressierung_der_Ger.C3.A4te.29|FS20 Adressierung (Hauscode, Einzeladressen)]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Hardware]]&lt;/div&gt;</summary>
		<author><name>Soulman</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=FS20_PIRA_Infrarot-Bewegungsmelder&amp;diff=39771</id>
		<title>FS20 PIRA Infrarot-Bewegungsmelder</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=FS20_PIRA_Infrarot-Bewegungsmelder&amp;diff=39771"/>
		<updated>2024-12-27T15:14:01Z</updated>

		<summary type="html">&lt;p&gt;Soulman: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Hardware&lt;br /&gt;
|Bild=FS20-PIRA.jpg&lt;br /&gt;
|Bildbeschreibung= FS20 PIRA mit Streichhölzern zum Größenvergleich&lt;br /&gt;
|HWProtocol=FS20&lt;br /&gt;
|HWType=Sensor&lt;br /&gt;
|HWCategory=FS20&lt;br /&gt;
|HWComm=868MHz&lt;br /&gt;
|HWChannels=2&lt;br /&gt;
|HWVoltage=3V&lt;br /&gt;
|HWPowerConsumption=ca. 1 Jahr bei 1000 x Senden täglich&lt;br /&gt;
|HWPoweredBy=Batterie&lt;br /&gt;
|HWSize=53x50x35mm&lt;br /&gt;
|HWDeviceFHEM=FS20&lt;br /&gt;
&amp;lt;!-- |ModOwner=  --&amp;gt;&lt;br /&gt;
|HWManufacturer=ELV Elektronik AG&lt;br /&gt;
}}&lt;br /&gt;
Infrarot-Bewegungsmelder in kompakten Gehäuse, auch für Außeneinsatz geeignet.&lt;br /&gt;
&lt;br /&gt;
Das Gerät ist neu nicht mehr verfügbar, da FS20 von ELV insgesamt abgekündigt ist und nur noch Restbestände verkauft werden (2024)&lt;br /&gt;
&lt;br /&gt;
= Features =&lt;br /&gt;
Wasserdichtes IP65-Gehäuse, das zum Betätigen der Tasten aufgeschraubt werden muss.&lt;br /&gt;
Im Innenbereich durch geringe Grösse unauffällig.&lt;br /&gt;
&lt;br /&gt;
Features unterscheiden sich darüber hinaus kaum von anderen FS 20 Infrarot-Bewegungsmeldern, also 2 Sendekanäle, Dämmerungsautomatik, einstellbarer Sendeabstand (8,24,56,120 Sekunden), Dimmbefehle etc.&lt;br /&gt;
&lt;br /&gt;
Das Gerät ist vergleichsweise teuer (Mai 2018: ca. 45€).&lt;br /&gt;
&lt;br /&gt;
= Hinweise zum Betrieb mit FHEM =&lt;br /&gt;
Es gibt Anzeichen dafür, dass die FS20PIRA besser empfangen werden, wenn das CUL/CUN auf 868.3 MHz und eine leicht erweiterte Bandbreite von bWidth:464KHz eingestellt sind.&lt;br /&gt;
&lt;br /&gt;
Beim kürzesten einstellbaren Sendeintervall (8 Sekunden), provoziert der PIRA schnell [[LOVF]] Meldungen in FHEM , wenn jede Bewegung in FHEM  eine Aktion auslöst, die ihrerseits einen Sendebefehl beinhaltet. Im schlimmsten Fall ist das Sendekontingent einer Stunde nach 22 Minuten verbraucht, bei Aussendung von 2 Befehlen je Bewegung sogar schon nach 11 Minuten.&lt;br /&gt;
&lt;br /&gt;
= Bekannte Probleme =&lt;br /&gt;
Die benötigten 2 x Batterien &amp;quot;Lady&amp;quot; LR1/HR1/E90 sind nicht überall erhältlich und teuer (2024: ca. 1 - 1,50 €/Stck.), da unübliche Grösse (keine Mignon oder Micro).&lt;br /&gt;
Jedoch: Lebensdauer auch bei 50-100 Auslösungen pro Tag mehrere Jahre.&lt;br /&gt;
&lt;br /&gt;
Wie bei allen Geräten im 868 Mhz Band gilt die [[1%_Regel]] auch für Bewegungsmelder. Der FS20 PIRA gestattet als kürzesten Sendeabstand 8 Sekunden. Kommt es in einem Raum (in dem sich ständig Personen aufhalten und bewegen) tatsächlich zu einer Auslösung alle 8 Sekunden, ist nicht nur das Sendekontigent einer FHEM Zentrale die aufgrund der Meldungen Aktionen auslost (siehe oben), sondern auch das Kontingent des PIRA selbst schnell verbraucht. Das Sendekontingent einer Stunde ist nach 22 Minuten aufgebraucht und danach wird der Bewegungsmelder für den Rest der Stunde nicht mehr senden. Dies ist insbesondere zu beachten, wenn der Sensor als Anwesenheitserkennung in einem Raum verwendet werden soll, der Sensor wäre dann für mehr als die Hälfte der Zeit &amp;quot;blind&amp;quot;.&lt;br /&gt;
Der Sendeabstand 8 Sekunden ist daher eher zu vermeiden, generell ist es günstig, den längsten für den konkreten Anwendungsfall noch sinnvollen Abstand zu wählen.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
* [https://files.elv.com/service/manuals/FS20PIRA/66818_um.pdf Bedienungsanleiteung] bei ELV&lt;br /&gt;
* [https://web.archive.org/web/20100415071131/http://www.elv-downloads.de/service/manuals/FS20PIRA/66818_um.pdf Bedienungsanleitung] im Internet Archiv, Original-Link nicht mehr erreichbar&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:FS20 Components|P]]&lt;br /&gt;
[[Kategorie:Bewegungs- und Anwesenheitsmelder]]&lt;br /&gt;
[[Kategorie:868MHz]]&lt;/div&gt;</summary>
		<author><name>Soulman</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=FS20_PIRA_Infrarot-Bewegungsmelder&amp;diff=39770</id>
		<title>FS20 PIRA Infrarot-Bewegungsmelder</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=FS20_PIRA_Infrarot-Bewegungsmelder&amp;diff=39770"/>
		<updated>2024-12-27T15:08:18Z</updated>

		<summary type="html">&lt;p&gt;Soulman: /* Bekannte Probleme */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Hardware&lt;br /&gt;
|Bild=FS20-PIRA.jpg&lt;br /&gt;
|Bildbeschreibung= FS20 PIRA mit Streichhölzern zum Größenvergleich&lt;br /&gt;
|HWProtocol=FS20&lt;br /&gt;
|HWType=Sensor&lt;br /&gt;
|HWCategory=FS20&lt;br /&gt;
|HWComm=868MHz&lt;br /&gt;
|HWChannels=2&lt;br /&gt;
|HWVoltage=3V&lt;br /&gt;
|HWPowerConsumption=ca. 1 Jahr bei 1000 x Senden täglich&lt;br /&gt;
|HWPoweredBy=Batterie&lt;br /&gt;
|HWSize=53x50x35mm&lt;br /&gt;
|HWDeviceFHEM=FS20&lt;br /&gt;
&amp;lt;!-- |ModOwner=  --&amp;gt;&lt;br /&gt;
|HWManufacturer=ELV Elektronik AG&lt;br /&gt;
}}&lt;br /&gt;
Infrarot-Bewegungsmelder in kompakten Gehäuse, auch für Außeneinsatz geeignet.&lt;br /&gt;
= Features =&lt;br /&gt;
Wasserdichtes IP65-Gehäuse, das zum Betätigen der Tasten aufgeschraubt werden muss.&lt;br /&gt;
Im Innenbereich durch geringe Grösse unauffällig.&lt;br /&gt;
&lt;br /&gt;
Features unterscheiden sich darüber hinaus kaum von anderen FS 20 Infrarot-Bewegungsmeldern, also 2 Sendekanäle, Dämmerungsautomatik, einstellbarer Sendeabstand (8,24,56,120 Sekunden), Dimmbefehle etc.&lt;br /&gt;
&lt;br /&gt;
Das Gerät ist vergleichsweise teuer (Mai 2018: ca. 45€).&lt;br /&gt;
&lt;br /&gt;
= Hinweise zum Betrieb mit FHEM =&lt;br /&gt;
Es gibt Anzeichen dafür, dass die FS20PIRA besser empfangen werden, wenn das CUL/CUN auf 868.3 MHz und eine leicht erweiterte Bandbreite von bWidth:464KHz eingestellt sind.&lt;br /&gt;
&lt;br /&gt;
Beim kürzesten einstellbaren Sendeintervall (8 Sekunden), provoziert der PIRA schnell [[LOVF]] Meldungen in FHEM , wenn jede Bewegung in FHEM  eine Aktion auslöst, die ihrerseits einen Sendebefehl beinhaltet. Im schlimmsten Fall ist das Sendekontingent einer Stunde nach 22 Minuten verbraucht, bei Aussendung von 2 Befehlen je Bewegung sogar schon nach 11 Minuten.&lt;br /&gt;
&lt;br /&gt;
= Bekannte Probleme =&lt;br /&gt;
Die benötigten 2 x Batterien &amp;quot;Lady&amp;quot; LR1/HR1/E90 sind nicht überall erhältlich und teuer (2024: ca. 1 - 1,50 €/Stck.), da unübliche Grösse (keine Mignon oder Micro).&lt;br /&gt;
Jedoch: Lebensdauer auch bei 50-100 Auslösungen pro Tag mehrere Jahre.&lt;br /&gt;
&lt;br /&gt;
Wie bei allen Geräten im 868 Mhz Band gilt die [[1%_Regel]] auch für Bewegungsmelder. Der FS20 PIRA gestattet als kürzesten Sendeabstand 8 Sekunden. Kommt es in einem Raum (in dem sich ständig Personen aufhalten und bewegen) tatsächlich zu einer Auslösung alle 8 Sekunden, ist nicht nur das Sendekontigent einer FHEM Zentrale die aufgrund der Meldungen Aktionen auslost (siehe oben), sondern auch das Kontingent des PIRA selbst schnell verbraucht. Das Sendekontingent einer Stunde ist nach 22 Minuten aufgebraucht und danach wird der Bewegungsmelder für den Rest der Stunde nicht mehr senden. Dies ist insbesondere zu beachten, wenn der Sensor als Anwesenheitserkennung in einem Raum verwendet werden soll, der Sensor wäre dann für mehr als die Hälfte der Zeit &amp;quot;blind&amp;quot;.&lt;br /&gt;
Der Sendeabstand 8 Sekunden ist daher eher zu vermeiden, generell ist es günstig, den längsten für den konkreten Anwendungsfall noch sinnvollen Abstand zu wählen.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
* [https://files.elv.com/service/manuals/FS20PIRA/66818_um.pdf Bedienungsanleiteung] bei ELV&lt;br /&gt;
* [https://web.archive.org/web/20100415071131/http://www.elv-downloads.de/service/manuals/FS20PIRA/66818_um.pdf Bedienungsanleitung] im Internet Archiv, Original-Link nicht mehr erreichbar&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:FS20 Components|P]]&lt;br /&gt;
[[Kategorie:Bewegungs- und Anwesenheitsmelder]]&lt;br /&gt;
[[Kategorie:868MHz]]&lt;/div&gt;</summary>
		<author><name>Soulman</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=FS20_PIRA_Infrarot-Bewegungsmelder&amp;diff=39769</id>
		<title>FS20 PIRA Infrarot-Bewegungsmelder</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=FS20_PIRA_Infrarot-Bewegungsmelder&amp;diff=39769"/>
		<updated>2024-12-27T15:05:35Z</updated>

		<summary type="html">&lt;p&gt;Soulman: /* Features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Hardware&lt;br /&gt;
|Bild=FS20-PIRA.jpg&lt;br /&gt;
|Bildbeschreibung= FS20 PIRA mit Streichhölzern zum Größenvergleich&lt;br /&gt;
|HWProtocol=FS20&lt;br /&gt;
|HWType=Sensor&lt;br /&gt;
|HWCategory=FS20&lt;br /&gt;
|HWComm=868MHz&lt;br /&gt;
|HWChannels=2&lt;br /&gt;
|HWVoltage=3V&lt;br /&gt;
|HWPowerConsumption=ca. 1 Jahr bei 1000 x Senden täglich&lt;br /&gt;
|HWPoweredBy=Batterie&lt;br /&gt;
|HWSize=53x50x35mm&lt;br /&gt;
|HWDeviceFHEM=FS20&lt;br /&gt;
&amp;lt;!-- |ModOwner=  --&amp;gt;&lt;br /&gt;
|HWManufacturer=ELV Elektronik AG&lt;br /&gt;
}}&lt;br /&gt;
Infrarot-Bewegungsmelder in kompakten Gehäuse, auch für Außeneinsatz geeignet.&lt;br /&gt;
= Features =&lt;br /&gt;
Wasserdichtes IP65-Gehäuse, das zum Betätigen der Tasten aufgeschraubt werden muss.&lt;br /&gt;
Im Innenbereich durch geringe Grösse unauffällig.&lt;br /&gt;
&lt;br /&gt;
Features unterscheiden sich darüber hinaus kaum von anderen FS 20 Infrarot-Bewegungsmeldern, also 2 Sendekanäle, Dämmerungsautomatik, einstellbarer Sendeabstand (8,24,56,120 Sekunden), Dimmbefehle etc.&lt;br /&gt;
&lt;br /&gt;
Das Gerät ist vergleichsweise teuer (Mai 2018: ca. 45€).&lt;br /&gt;
&lt;br /&gt;
= Hinweise zum Betrieb mit FHEM =&lt;br /&gt;
Es gibt Anzeichen dafür, dass die FS20PIRA besser empfangen werden, wenn das CUL/CUN auf 868.3 MHz und eine leicht erweiterte Bandbreite von bWidth:464KHz eingestellt sind.&lt;br /&gt;
&lt;br /&gt;
Beim kürzesten einstellbaren Sendeintervall (8 Sekunden), provoziert der PIRA schnell [[LOVF]] Meldungen in FHEM , wenn jede Bewegung in FHEM  eine Aktion auslöst, die ihrerseits einen Sendebefehl beinhaltet. Im schlimmsten Fall ist das Sendekontingent einer Stunde nach 22 Minuten verbraucht, bei Aussendung von 2 Befehlen je Bewegung sogar schon nach 11 Minuten.&lt;br /&gt;
&lt;br /&gt;
= Bekannte Probleme =&lt;br /&gt;
Die benötigten 2 x Batterien &amp;quot;Lady&amp;quot; LR1/HR1/E90 sind nicht überall erhältlich und teuer (Mai 2018: ca. 1 - 1,50 €/Stck.), da unübliche Grösse (keine Mignon oder Micro).&lt;br /&gt;
Jedoch: Lebensdauer auch bei 50-100 Auslösungen pro Tag mehrere Jahre.&lt;br /&gt;
&lt;br /&gt;
Wie bei allen Geräten im 868 Mhz Band gilt die [[1%_Regel]] auch für Bewegungsmelder. Der FS20 PIRA gestattet als kürzesten Sendeabstand 8 Sekunden. Kommt es in einem Raum (in dem sich ständig Personen aufhalten und bewegen) tatsächlich zu einer Auslösung alle 8 Sekunden, ist nicht nur das Sendekontigent einer FHEM Zentrale die aufgrund der Meldungen Aktionen auslost (siehe oben), sondern auch das Kontingent des PIRA selbst schnell verbraucht. Das Sendekontingent einer Stunde ist nach 22 Minuten aufgebraucht und danach wird der Bewegungsmelder für den Rest der Stunde nicht mehr senden. Dies ist insbesondere zu beachten, wenn der Sensor als Anwesenheitserkennung in einem Raum verwendet werden soll, der Sensor wäre dann für mehr als die hälfte der Zeit &amp;quot;blind&amp;quot;.&lt;br /&gt;
Es sollte immer ein für den Anwendungsfall noch sinnvoller möglichst grosser Sendeabstand eingestellt werden. Eine garantierte Abdeckung einer Stunde ist nur bei mindestens 22 Sekunden Sendeabstand gewährleistet.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
* [https://files.elv.com/service/manuals/FS20PIRA/66818_um.pdf Bedienungsanleiteung] bei ELV&lt;br /&gt;
* [https://web.archive.org/web/20100415071131/http://www.elv-downloads.de/service/manuals/FS20PIRA/66818_um.pdf Bedienungsanleitung] im Internet Archiv, Original-Link nicht mehr erreichbar&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:FS20 Components|P]]&lt;br /&gt;
[[Kategorie:Bewegungs- und Anwesenheitsmelder]]&lt;br /&gt;
[[Kategorie:868MHz]]&lt;/div&gt;</summary>
		<author><name>Soulman</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=FS20_PIRA_Infrarot-Bewegungsmelder&amp;diff=39768</id>
		<title>FS20 PIRA Infrarot-Bewegungsmelder</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=FS20_PIRA_Infrarot-Bewegungsmelder&amp;diff=39768"/>
		<updated>2024-12-27T15:03:58Z</updated>

		<summary type="html">&lt;p&gt;Soulman: /* Bekannte Probleme */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Hardware&lt;br /&gt;
|Bild=FS20-PIRA.jpg&lt;br /&gt;
|Bildbeschreibung= FS20 PIRA mit Streichhölzern zum Größenvergleich&lt;br /&gt;
|HWProtocol=FS20&lt;br /&gt;
|HWType=Sensor&lt;br /&gt;
|HWCategory=FS20&lt;br /&gt;
|HWComm=868MHz&lt;br /&gt;
|HWChannels=2&lt;br /&gt;
|HWVoltage=3V&lt;br /&gt;
|HWPowerConsumption=ca. 1 Jahr bei 1000 x Senden täglich&lt;br /&gt;
|HWPoweredBy=Batterie&lt;br /&gt;
|HWSize=53x50x35mm&lt;br /&gt;
|HWDeviceFHEM=FS20&lt;br /&gt;
&amp;lt;!-- |ModOwner=  --&amp;gt;&lt;br /&gt;
|HWManufacturer=ELV Elektronik AG&lt;br /&gt;
}}&lt;br /&gt;
Infrarot-Bewegungsmelder in kompakten Gehäuse, auch für Außeneinsatz geeignet.&lt;br /&gt;
= Features =&lt;br /&gt;
Wasserdichtes IP65-Gehäuse, das zum Betätigen der Tasten aufgeschraubt werden muss.&lt;br /&gt;
Im Innenbereich durch geringe Grösse unauffällig.&lt;br /&gt;
&lt;br /&gt;
Features unterscheiden sich darüber hinaus kaum von anderen FS 20 Infrarot-Bewegungsmeldern, also 2 Sendekanäle, Dämmerungsautomatik, einstellbarer Sendeabstand etc.&lt;br /&gt;
&lt;br /&gt;
Gerät ist vergleichsweise teuer (Mai 2018: ca. 45€).&lt;br /&gt;
&lt;br /&gt;
= Hinweise zum Betrieb mit FHEM =&lt;br /&gt;
Es gibt Anzeichen dafür, dass die FS20PIRA besser empfangen werden, wenn das CUL/CUN auf 868.3 MHz und eine leicht erweiterte Bandbreite von bWidth:464KHz eingestellt sind.&lt;br /&gt;
&lt;br /&gt;
Beim kürzesten einstellbaren Sendeintervall (8 Sekunden), provoziert der PIRA schnell [[LOVF]] Meldungen in FHEM , wenn jede Bewegung in FHEM  eine Aktion auslöst, die ihrerseits einen Sendebefehl beinhaltet. Im schlimmsten Fall ist das Sendekontingent einer Stunde nach 22 Minuten verbraucht, bei Aussendung von 2 Befehlen je Bewegung sogar schon nach 11 Minuten.&lt;br /&gt;
&lt;br /&gt;
= Bekannte Probleme =&lt;br /&gt;
Die benötigten 2 x Batterien &amp;quot;Lady&amp;quot; LR1/HR1/E90 sind nicht überall erhältlich und teuer (Mai 2018: ca. 1 - 1,50 €/Stck.), da unübliche Grösse (keine Mignon oder Micro).&lt;br /&gt;
Jedoch: Lebensdauer auch bei 50-100 Auslösungen pro Tag mehrere Jahre.&lt;br /&gt;
&lt;br /&gt;
Wie bei allen Geräten im 868 Mhz Band gilt die [[1%_Regel]] auch für Bewegungsmelder. Der FS20 PIRA gestattet als kürzesten Sendeabstand 8 Sekunden. Kommt es in einem Raum (in dem sich ständig Personen aufhalten und bewegen) tatsächlich zu einer Auslösung alle 8 Sekunden, ist nicht nur das Sendekontigent einer FHEM Zentrale die aufgrund der Meldungen Aktionen auslost (siehe oben), sondern auch das Kontingent des PIRA selbst schnell verbraucht. Das Sendekontingent einer Stunde ist nach 22 Minuten aufgebraucht und danach wird der Bewegungsmelder für den Rest der Stunde nicht mehr senden. Dies ist insbesondere zu beachten, wenn der Sensor als Anwesenheitserkennung in einem Raum verwendet werden soll, der Sensor wäre dann für mehr als die hälfte der Zeit &amp;quot;blind&amp;quot;.&lt;br /&gt;
Es sollte immer ein für den Anwendungsfall noch sinnvoller möglichst grosser Sendeabstand eingestellt werden. Eine garantierte Abdeckung einer Stunde ist nur bei mindestens 22 Sekunden Sendeabstand gewährleistet.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
* [https://files.elv.com/service/manuals/FS20PIRA/66818_um.pdf Bedienungsanleiteung] bei ELV&lt;br /&gt;
* [https://web.archive.org/web/20100415071131/http://www.elv-downloads.de/service/manuals/FS20PIRA/66818_um.pdf Bedienungsanleitung] im Internet Archiv, Original-Link nicht mehr erreichbar&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:FS20 Components|P]]&lt;br /&gt;
[[Kategorie:Bewegungs- und Anwesenheitsmelder]]&lt;br /&gt;
[[Kategorie:868MHz]]&lt;/div&gt;</summary>
		<author><name>Soulman</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Trick_der_Woche&amp;diff=38874</id>
		<title>Trick der Woche</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Trick_der_Woche&amp;diff=38874"/>
		<updated>2024-01-08T17:53:59Z</updated>

		<summary type="html">&lt;p&gt;Soulman: /* Aktoren über mehrere Funkschnittstellen ansprechen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diese Seite enthält Tipps und Tricks, die zu unbedeutend sind, einen eigenen Artikel zu rechtfertigen, alternative Schreibweisen/Lösungen für eine Problem darstellen, Ungenauigkeiten oder unklare Formulierungen in den offiziellen Dokumenten ergänzen und ähnliches. Jeder Eintrag ist typischerweise sehr kurz (wenige Zeilen lang) und beleuchtet vielleicht nur einen Aspekt von FHEM, er kann allgemeiner Natur sein, oder sich auf ein spezielles Gerät oder einen speziellen Anwendungsfall beziehen.&lt;br /&gt;
&lt;br /&gt;
== August 2022==&lt;br /&gt;
=== Update ===&lt;br /&gt;
Wenn der Befehl &amp;quot;Update&amp;quot; nicht funktioniert und insbesondere die Fehlermeldung &#039;&#039;Bad hostname &#039;fhem.de:80&#039;&#039;&#039; zurück gibt, kann es sinnvoll sein, den Parameter  -noSSL zu versuchen. Details dazu im Artikel [[Update]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Januar 2022==&lt;br /&gt;
=== günstiger Luftfeuchtesensor ===&lt;br /&gt;
Der [[HM-CC-TC Funk-Wandthermostat]] ist schon lange abgekündigt. Er wird derzeit oft recht günstig im Netz angeboten und eignet sich daher als billiger &amp;quot;StandAlone&amp;quot; Temperatur- und Luftfeuchtesensor, auch wenn er keinen Ventielantrieb steuern soll.&lt;br /&gt;
&lt;br /&gt;
== Dezember 2020 ==&lt;br /&gt;
=== Performance von Notifys ===&lt;br /&gt;
Im Tipp vom Dezember 2013 [[Trick der Woche#notify durch mehrere Ereignisse auslösen lassen|notify durch mehrere Ereignisse auslösen lassen]] heisst es:&lt;br /&gt;
:&#039;&#039;[…] Wenn man aber möchte, dass z.B. &amp;quot;on&amp;quot; und &amp;quot;off&amp;quot; auslöst (um etwa Dim-Befehle auszuschliessen), kann dies wie folgt erreicht werden:&#039;&#039;&lt;br /&gt;
::&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:(on|off) …&amp;lt;/code&amp;gt;&lt;br /&gt;
Performanter ist allerdings:&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:o[nf]+  …&amp;lt;/code&amp;gt;&lt;br /&gt;
wobei &#039;&#039;&#039;o[nf]+&#039;&#039;&#039; eine &amp;quot;Regexp&amp;quot; für beliebige Zeichenketten ist, die mit &#039;&#039;&#039;o&#039;&#039;&#039; anfangen und &#039;&#039;&#039;n&#039;&#039;&#039; und/oder &#039;&#039;&#039;f&#039;&#039;&#039; enthalten, also (auch) on und off.&lt;br /&gt;
&lt;br /&gt;
Alternativ kann auch:&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:on|MeinSchalter:off … &amp;lt;/code&amp;gt;&lt;br /&gt;
verwendet werden.&lt;br /&gt;
Die letzten beiden Varianten sparen Ausführungszeit. Ganz allgemein ist es besser, im notify das Suchmuster mit einem [[Regulärer Ausdruck|regulären Ausdruck]] (Regexp) eng zu definieren.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:on ... &amp;lt;/code&amp;gt;&lt;br /&gt;
ist performanter als&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter { if ($EVENT eq &amp;quot;on&amp;quot; ... &amp;lt;/code&amp;gt;&lt;br /&gt;
auch wenn das Ergebnis gleich ist.&lt;br /&gt;
&lt;br /&gt;
Allerdings ist &lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:on ... &amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas1 notify MeinSchalter:off ... &amp;lt;/code&amp;gt;&lt;br /&gt;
langsamer als&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchaltero[nf]+ { if ($EVENT eq &amp;quot;on&amp;quot;  ) { fhem( ) } else { fhem(&amp;quot;... &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die oben erwähnten &amp;quot;if&amp;quot; sind &amp;quot;perl if&amp;quot;s. Die Verwendung des FHEM Modul DOIF ist deutlich langsamer.  Die Betrachtung betrifft sowieso nur langsame Host-Systeme mit gleichzeitig vielen defines. Bei Verwendung z.b. einen Raspberry Pi 4 oder schnellerem Host dürften die Unterschiede vernachlässigbar sein.&lt;br /&gt;
&lt;br /&gt;
== Oktober 2020 ==&lt;br /&gt;
=== Entprellen ===&lt;br /&gt;
Will man ein notify innerhalb eines bestimmten Zeitraumes nur einmal auslösen lassen, auch wenn er in diesem Zeitraum mehrfach getriggered werden sollte, so bietet sich das [[Attribut]] &#039;&#039;&#039;disabledAfterTrigger&#039;&#039;&#039; an:&lt;br /&gt;
:&amp;lt;code&amp;gt;attr &amp;lt;notify_device&amp;gt; disabledAfterTrigger &amp;lt;Anzahl Sekunden&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Oktober 2019 ==&lt;br /&gt;
=== Funkstörungen durch leere Batterien ===&lt;br /&gt;
Unerklärliche Funkstörungen besonders im SlowRF Bereich (z.b. FS20) mit stark verminderter Reichweite von CULs, gestörter [[RFR CUL]] Kommunikation etc. gestörtem Empfang von Funktelegrammen aller Art können ihre Ursache darin haben, dass einige Geräte mit (fast) leeren Batterien unkontrolliert senden und dadurch den Kanal mit Störsignalen verschmutzen. Anfällig sind insbesondere ältere FHT Fenstersensoren wie der [[FHT80TF]], die mit fast leeren Batterien eine Art Rauschen aussenden und damit die &#039;&#039;&#039;komplette&#039;&#039;&#039; FS20 Kommunikation lahmlegen können, Störungen beeinflussen auch andere Funkprotokolle im selben Frequenzbereich, wie z.b. HM.&lt;br /&gt;
Also im Falle unerklärlicher und weitreicher Funkstörungen die Batterien aller Geräte überprüfen.&lt;br /&gt;
&lt;br /&gt;
== Februar 2019 ==&lt;br /&gt;
=== Unterräume anlegen ===&lt;br /&gt;
[[Datei:Unterraeume.png|350px|thumb|right|Beispiel für einen gegliederten Raum &amp;quot;Steuerung&amp;quot;]]&lt;br /&gt;
In [[FHEMWEB]] besteht neben der Möglichkeit, Geräte dadurch übersichtlich anzuordnen, indem diese Gruppen und einfachen Räumen zugeordnet werden, auch die Möglichkeit, Räume weiter zu gliedern und Unterräume zu verwenden. Dazu wird nach der Angabe des Hauptraums der Unterraum, getrennt durch ein &amp;quot;-&amp;gt;&amp;quot; angegeben. Beispiele:&lt;br /&gt;
 attr &amp;lt;DEVICENAME&amp;gt; room Steuerung-&amp;gt;Logik&lt;br /&gt;
 attr &amp;lt;DEVICENAME&amp;gt; room Steuerung-&amp;gt;Heizung&lt;br /&gt;
&#039;&#039;&#039;Hinweis&#039;&#039;&#039;: Legt man zusätzlich einen Raum &#039;&#039;Steuerung&#039;&#039; an, erscheint dieser als zusätzlicher Eintrag in der Raumliste.&lt;br /&gt;
&lt;br /&gt;
== Januar 2019 ==&lt;br /&gt;
=== HomeMatic IP ===&lt;br /&gt;
Das [[HomeMatic IP]]-Protokoll unterscheidet sich deutlich vom bisherigen HomeMatic Protokoll, im Grunde ist es ein anderes System, das nur dem Namen nach dem älteren HomeMatic gleicht. HM-IP Geräte können aktuell (Anfang 2019) nur über eine systemeigene Zentrale CCU2 (als physisch vorhandenes Interface) und die HomeMatic-Module in FHEM integriert werden, sind in FHEM jedoch &#039;&#039;&#039;nicht&#039;&#039;&#039; unmittelbar als Homematic-Geräte ansprechbar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Dezember 2018 ==&lt;br /&gt;
===HomeMatic Heizungsregler Uhrzeit einstellen===&lt;br /&gt;
HomeMatic Thermostate / Heizungsregler  wie der HM-CC-TC der der HM-TC-IT-WM-W-EU etc. synchronisieren ihre Uhrzeit täglich etwa gegen Mitternacht mit der Zentrale. Man kann dieses Update aber jederzeit erzingen durch den Befehl  &lt;br /&gt;
 set &amp;lt;DEVICENAME&amp;gt; sysTime&lt;br /&gt;
&lt;br /&gt;
== November 2018 ==&lt;br /&gt;
===HomeMatic Heizunggeräte gebraucht gekauft===&lt;br /&gt;
HomeMatic Heizunggeräte gebraucht gekauft und jetzt lassen sie sich nicht richtig peeren oder pairen?&lt;br /&gt;
Das Problem ist meistens, dass die Geräte noch mit der Zentrale des Verkäufers gepairt oder mit anderen Geräten gepeert sind. &lt;br /&gt;
Mit Thermostaten wie der [[HM-CC-TC Funk-Wandthermostat]] oder der Nachfolger [[HM-TC-IT-WM-W-EU Funk-Wandthermostat AP]] können mit Ventilantrieben wie dem [[HM-CC-VD Funk-Stellantrieb]] nur gepeert werden, wenn &lt;br /&gt;
* die Thermostaten nicht selbst schon mit einer Zentrale (im FHEM Umfeld also z.b. einer [[Virtueller Controller VCCU]] oder [[HM-[[HM-CFG-LAN LAN Konfigurations-Adapter]] oder ähnliches) gepairt wurden&lt;br /&gt;
* die Ventilantriebe nicht selbst mit einer Zentrale gepairt oder mit einem Thermostaten gepeert wurden.&lt;br /&gt;
&lt;br /&gt;
Es ist daher sinnvoll zuerst alle Geräte zurückzusetzen, da viele Verkäufer dies vergessen. Wie das geht steht in der Anleitung.&lt;br /&gt;
Beispiele:&lt;br /&gt;
* HM-CC-TC -&amp;gt; MENU lange drücken, dann Sonderfunktion &amp;quot;RES&amp;quot; anwählen, mit OK-Taste bestätigen&lt;br /&gt;
* HM-CC-VD -&amp;gt; Anlernknopf 10 Sekunden lang drücken. Der Antrieb geht in Zustand A2, nachdem er das Ventil 1x auf- und zugefahren hat geht er in A3, Knopf nochmals drücken.&lt;br /&gt;
* HM-TC-IT-WM-W-EU -&amp;gt; Batterien entfernen, alle 3 Tasten gedrückt halten, Batterien einlegen, warten bis &amp;quot;rES&amp;quot; im Display erscheint, Tasten loslassen&lt;br /&gt;
&lt;br /&gt;
== Januar 2018 ==&lt;br /&gt;
=== at absolutem Datum ===&lt;br /&gt;
Vielen ist nicht klar, dass man mit dem &amp;quot;define … at&amp;quot; auch einfach ein absolutes Datum definieren kann (obwohl es in der Commandref steht). Anstatt umfangreicher DOIF Konstrukte oder &amp;quot;define … at&amp;quot; die täglich ablaufen und testen ob der gewünschte Tag schon erreicht ist, geht auch ein einfaches:&lt;br /&gt;
&lt;br /&gt;
 define Licht_Neujahr_2019 at 2019-01-03T06:01:01 set Licht1 on&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Allgemein: &lt;br /&gt;
 define &amp;lt;name&amp;gt; at [&amp;lt;datespec&amp;gt;] &amp;lt;command&amp;gt; &lt;br /&gt;
wobei &amp;lt;datespec&amp;gt; =  (YYYY-MM-DDTHH:MM:SS) (also in ISO8601 Schreibweise).&lt;br /&gt;
Wichtig ist die Angabe mit Sekunden, die nicht weggelassen werden können.&lt;br /&gt;
&lt;br /&gt;
== Dezember 2017 ==&lt;br /&gt;
=== perl Version ===&lt;br /&gt;
Gelegentlich taucht die Frage auf, welche perl Version zum Betrieb von FHEM minimal erforderlich ist. Bedauerlicherweise lässt sich das aber aktuell nicht definitiv bestimmen.&lt;br /&gt;
Rudolf König testet zur Zeit (Ende 2017) mit v5.16 (5 Jahre alt) und v5.24 (ca. 1 Jahr alt). &lt;br /&gt;
Sollte sich herausstellen, dass eines seiner Module (vor allem fhem.pl selbst) nicht mit der jeweils &#039;&#039;aktuellen&#039;&#039; perl Version funktioniert, so wird das Modul entsprechend kompatibel gemacht.&lt;br /&gt;
Andererseits verwendet Rudolf König nach eigener Aussage (bewusst) keine Features, die eine höhere Version als perl 5.8.3 (immerhin älter als 13 Jahre) voraussetzen. Tatsächlich zeigen aktuelle Installation auf relativ alten BuffaloLinkstation Systemen, dass FEHM mit perl 5.8.3 prinzipiell lauffähig ist.&lt;br /&gt;
&lt;br /&gt;
Rudolf König prüft als Maintainer von fhem.pl aber nicht, welche Mindestversionen andere Entwickler in Ihren Modulen benötigen. Es ist daher möglich oder sogar wahrscheinlich, das einzelne Module höhere Versionen als 5.8.3 benötigen.&lt;br /&gt;
&lt;br /&gt;
Es gibt aktuell keinen Weg, die Mindestanforderungen z.b. automatisiert zu ermitteln.&lt;br /&gt;
&lt;br /&gt;
== November 2017 ==&lt;br /&gt;
=== Grundlastmodul ===&lt;br /&gt;
Mit einem Grundlastmodul ist es möglich, LED Leuchtmittel an einem Schaltaktor / Dimmer zu betreiben. Dies ist bei manchen nicht möglich, da einige LEDs nachglimmen oder flackern. Das Grundlastmodul, welches parallel zum Verbraucher angeschlossen wird, kann diesen Effekt aufheben, da ein Verbraucher mit ohmscher Last simuliert wird.&lt;br /&gt;
Das Modul ermöglicht eventuell auch den Betrieb eines [[RSL 2-Draht Einbauschalter]]s, der bei LED Leuchtmitteln ansonsten nicht eingesetzt werden kann, da zum Betrieb eine Restspannung über den Verbraucher benötigt wird, der bei LED Lampen mit Vorschaltgerät nicht vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
In Frage kommt z.b. ein Eltako ELTA Grundlastelement GLE / PTC, das ca. 5-8 Euro kostet.&lt;br /&gt;
Technisch handelt sich dabei um einen PTC, also einen Widerstand mit positivem Temperaturkoeffizient, d.h. der Widerstand sinkt deutlich, wenn das Element kälter wird. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das genannte Grundlastelement hat folgende Daten: &lt;br /&gt;
 Kaltwiderstand: 3500 Ω&lt;br /&gt;
 Einschaltstrom bei 230 V: 65 mA (ca. 15 W)&lt;br /&gt;
 Verlustleistung nach 60 Sekunden: 0,65 W &lt;br /&gt;
&lt;br /&gt;
Im kalten Zustand lässt der PTC bei 230 Volt einen Strom von ca. 0,065 Ampere zu.  &lt;br /&gt;
Das reicht, um von Schaltaktoren, Freischaltern, Dimmern etc. als die erforderliche Grundlast erkannt zu werden.&lt;br /&gt;
Wird der Stromkreis eingeschaltet, fliesst auch tatsächlich Strom durch den PTC, der sich dadurch schnell erwärmt (das Element wird tatsächlich sogar relativ heiss). Dadurch steigt steigt der Widerstand auf ca 50000-60000 Ohm an und die Verlustleistung sinkt auf unter 1 Watt. Der PTC regelt sich jetzt selber auf eine bestimmte Temperatur und Widerstand ein.&lt;br /&gt;
&lt;br /&gt;
Wird ausgeschaltet, so fliest über den PTC immer noch ein kleiner Reststrom von ca 0,005 Ampere, der als Grundlast reicht, um z.b. Spannungen abzubauen, die LEDs nachflackern lassen, dieser steigt mit Erkalten rasch an, dadurch werden auch Schalter wie die [[RSL 2-Draht Einbauschalter]] mit genug Strom versorgt.&lt;br /&gt;
&lt;br /&gt;
Theoretisch kann also auch ein PTC mit diesen Werten und einer Leistung von ca. 20 Watt selbst gebaut werden, der Preis der Einzelteile liegt bei unter 2 Euro. Das Eltako Element ist bereits mit Isolierung und Anschlussleitungen versehen, mit eigner Arbeitszeit ist der Preisvorteil beim Selberbau also gering.&lt;br /&gt;
&lt;br /&gt;
== Februar 2017 ==&lt;br /&gt;
=== at Zeiten ===&lt;br /&gt;
 at 03:00      -&amp;gt;  1x um 3 Uhr (wann immer das nächste mal 3 Uhr ist, ggf. erst morgen)&lt;br /&gt;
 at *03:00     -&amp;gt;  jeden Tag um 3 Uhr&lt;br /&gt;
 at +03:00     -&amp;gt;  in 3 Stunden&lt;br /&gt;
 at +*03:00    -&amp;gt;  in 3 Stunden und dann alle 3 Stunden erneut&lt;br /&gt;
 at +*{4}03:00 -&amp;gt;  in 3 Stunden und dann alle 3 Stunden erneut, aber nur 4x ausführen.&lt;br /&gt;
&lt;br /&gt;
== Oktober 2016 ==&lt;br /&gt;
=== Grundlagen der Heizungssteuerung ===&lt;br /&gt;
Der Artikel [[Grundlagen der Heizungssteuerung]] soll einen zentralen Einstiegspunkt und eine Übersicht der Möglichkeiten insb. für Neulinge in FHEM bieten.&lt;br /&gt;
&lt;br /&gt;
=== Batterieüberwachung für Geräte ohne Batteriestatus ===&lt;br /&gt;
Es gibt Möglichkeiten um auch bei Geräten ohne Batteriestatus-Reading eine schwache Batterie erkennen zu können: [[Batterie%C3%BCberwachung#Ger.C3.A4te_ohne_Batteriestatus|Geräte ohne Batteriestatus]].&lt;br /&gt;
&lt;br /&gt;
== Mai 2016 ==&lt;br /&gt;
=== DbLog reparieren ===&lt;br /&gt;
Sollte ein fhem mit DbLog Probleme machen, oder auf der SQL-Konsole Fehler werfen, so ist eine Reparatur der DB fällig. Das ist auf der Kommandozeile verhältnismäßig einfach möglich und wird im Kapitel [[DbLog#Datenbank reparieren]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
=== DbLog bearbeiten ===&lt;br /&gt;
Unerwünschte Einträge in den Loggings treten immer wieder mal auf. Wie man dies in einer Datenbank korrigiert, dazu gibt das Kapitel [[DbLog#Bearbeitung von Datenbank-Einträgen]] eine erste Einführung.&lt;br /&gt;
&lt;br /&gt;
=== Pollenflug ===&lt;br /&gt;
In dieser schönen Jahreszeit werden manche durch Heuschnupfen geplagt. Auf der Seite [[Pollenflug]] wird beschrieben, wie man eine Pollenvorhersage in fhem einbinden kann - hilft zwar nicht gegen das Niesen, ist aber trotzdem ganz informativ... ;-)&lt;br /&gt;
&lt;br /&gt;
== April 2016 ==&lt;br /&gt;
=== HomeMatic und VCCU ===&lt;br /&gt;
HomeMatic Nutzer sollten unbedingt eine [[Virtueller Controller VCCU|VCCU]] einrichten und nutzen.&lt;br /&gt;
Die Einrichtung ist unaufwändig und schafft jede Menge Vorteile, auch beim Einsetzen nur einer Schnittstelle wie z.B. einem [[HM-CFG-LAN LAN Konfigurations-Adapter]]. Auch die nachträglich Einrichtung ist problemlos, sofern vorher nur ein I/O Gerät (&amp;quot;Funkschnittstelle&amp;quot;) verwendet wurde.&lt;br /&gt;
&lt;br /&gt;
== Dezember 2015 ==&lt;br /&gt;
===defmod===&lt;br /&gt;
In vielen Fällen will man mit einer Aktion gleichzeitig eine andere Aktion bereits für später festlegen, z.b. nach Einschalten  einer Heizung durch einen Bewegungsmelder diese eine Stunde später wieder ausschalten.&lt;br /&gt;
&lt;br /&gt;
Dies kann z.B. durch ein Konstrukt dieser Art erledigt werden:&lt;br /&gt;
:&amp;lt;code&amp;gt;define Heizung_an notify Bewegung set HZG_WZ desired-temp 22 ;; define reset_Heizung at +01:00:00 set HZG_WZ desired-temp 16&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nachteilig ist, dass bei einer weiteren Auslösung des Bewegungsmelders die Heizzeit nicht verlängert wird, da eine Neudefinition von &#039;&#039;&#039;reset_Heizung&#039;&#039;&#039; mit der Fehlermeldung &#039;&#039;&#039;reset_Heizung already exists, delete it first&#039;&#039;&#039; quittiert wird. Die Lösung bisher war, das alte &#039;&#039;&#039;reset_Heizung&#039;&#039;&#039; zunächst zu löschen und dann erneut mit neuem Zeitstempel anzulegen:&lt;br /&gt;
:&amp;lt;code&amp;gt;define Heizung_an notify Bewegung set HZG_WZ desired-temp 22 ;; delete reset_Heizung ;; define reset_Heizung at +01:00:00 set HZG_WZ desired-temp 16&amp;lt;/code&amp;gt;&lt;br /&gt;
Aber auch dieses umständliche Konstrukt hat noch einen Nachteil: Es erzeugt bei einer ersten Auslösung eine Fehlermeldung, weil &#039;&#039;&#039;reset_Heizung&#039;&#039;&#039; noch nicht exisitert und daher nicht gelöscht werden kann.  Dies liesse sich abfangen, was die Konstruktion weiter verkomplizieren würde.&lt;br /&gt;
&lt;br /&gt;
Daher hat Rudolf König mit FHEM 5.6 den neuen Befehel &amp;quot;defmod&amp;quot; eingeführt, der ein noch nicht existieredendes define neu anlegt (wie &amp;quot;define&amp;quot;), eine bereits vorhandenes aber direkt ändert (wie &amp;quot;delete&amp;quot; und danach &amp;quot;define&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Dadurch lässt sich verkürzt schreiben:&lt;br /&gt;
:&amp;lt;code&amp;gt;define Heizung_an notify Bewegung set HZG_WZ desired-temp 22 ;; defmod reset_Heizung at +01:00:00 set HZG_WZ desired-temp 16&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== April 2015 ==&lt;br /&gt;
===FS20 Timer===&lt;br /&gt;
FS20 Aktoren beherrschen zwei verschiedene Timer-Methoden.&lt;br /&gt;
&lt;br /&gt;
Angenommen ein FS20 Device heisse &amp;quot;Lampe&amp;quot; und sei z.B. ein [[FS20_SU_Unterputz-Funk-Schalter|FS20 SU]] (Unterputzschalter), dann kann man mit FHEM sowohl &lt;br /&gt;
:&amp;lt;code&amp;gt; set Lampe on-for-timer 30&amp;lt;/code&amp;gt;&lt;br /&gt;
verwenden um die Lampe 30 Sekunden einzuschalten, aber auch zunächst in den FS20 SU die maximale Einschaltdauer einprogrammieren:&lt;br /&gt;
:&amp;lt;code&amp;gt; set Lampe timer 30&amp;lt;/code&amp;gt;&lt;br /&gt;
Dannach wird jedes normale&lt;br /&gt;
:&amp;lt;code&amp;gt; set Lampe on&amp;lt;/code&amp;gt;&lt;br /&gt;
die Lampe für nur 30 Sekunden einschalten.&lt;br /&gt;
&lt;br /&gt;
Als Timerwerte kommen in beiden Fällen die bekannten [[Trick_der_Woche#FS20_Timerzeiten|128 Sekundenwerte]] von 0,25 Sekunden bis Etwa 4,5 Stunden in Frage.&lt;br /&gt;
&lt;br /&gt;
Es ist offenbar nicht bei allen Aktoren möglich einen einmal eingestellten Timer zu löschen, neue Werte eingeben aber sehr wohl.&lt;br /&gt;
&lt;br /&gt;
Mehr hier: [[FS20_Allgemein#Gerätetimer setzen / löschen|FS20 timer]].&lt;br /&gt;
&lt;br /&gt;
== Februar 2015 ==&lt;br /&gt;
=== 1-wire am GPIO4-Port des RaspberryPi funktioniert nicht mehr nach Systemupdate ===&lt;br /&gt;
Es kann passieren, dass nach einem Systemupdate (apt-get update oder apt-get dist-upgrade) die 1-wire-Geräte am GPIO4-Port plötzlich nicht mehr funktionieren. Eine Problemlösung dazu ist im Artikel &amp;quot;[[Raspberry Pi und 1-Wire#1-wire am GPIO4-Port funktioniert nicht mehr nach Systemupdate]]&amp;quot; beschrieben.&lt;br /&gt;
&lt;br /&gt;
=== Backup der Konfiguration (fhem.cfg und fhem.state) bei jedem &amp;quot;save&amp;quot; ===&lt;br /&gt;
Der nachfolgende Codeschnipsel erstellt bei jedem &amp;quot;save&amp;quot; eine Kopie der aktuellen [[Konfiguration]] (fhem.cfg und fhem.state) in ein Verzeichnis &amp;quot;backup_cfg-state&amp;quot; welches unter /opt/fhem/ zu finden ist. Somit kann bei einem Fehler jederzeit auf den letzten Stand zurückgegangen werden.&lt;br /&gt;
Zuerst ins FHEM Befehlsfeld den folgenden Befehl eingeben:&lt;br /&gt;
:&amp;lt;code&amp;gt;{ `mkdir backup_cfg-state` } &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach folgendes [[notify]] anlegen:&lt;br /&gt;
 define backupCfg notify global:SAVE {\&lt;br /&gt;
 my $now = TimeNow();; $now =~ s/ /_/g;; \&lt;br /&gt;
 `cp $attr{global}{configfile} ./backup_cfg-state/fhem.cfg.$now`;;\&lt;br /&gt;
 `cp $attr{global}{statefile} ./backup_cfg-state/fhem.state.$now`;;\&lt;br /&gt;
 } &lt;br /&gt;
&lt;br /&gt;
Quelle: {{Link2Forum|Topic=30873|Message=234412|LinkText=FHEM-Forum}}&lt;br /&gt;
&lt;br /&gt;
== Januar 2015 ==&lt;br /&gt;
=== CUL &amp;amp; CO über Serial ID-einbinden ===&lt;br /&gt;
Bei mehreren USB-Geräten kann es vorkommen, dass sie vertauscht werden z.B. &#039;&#039;/dev/ttyUSB0&#039;&#039; zu&#039;&#039; /dev/ttyUSB1&#039;&#039; oder &#039;&#039;/dev/ttyACM0&#039;&#039; zu &#039;&#039;/dev/ttyACM1&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Um dies zu umgehen, kann man sie über ihre Serial-ID in FHEM einbinden.&lt;br /&gt;
&lt;br /&gt;
Dieser Befehl zeigt die Serial-ID:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;ls -l /dev/serial/by-id&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier die Beispielausgabe eines CUL868, JeeLink, RFXtrx und eines CUL433&lt;br /&gt;
&lt;br /&gt;
 user@xxxx:~# ls -l /dev/serial/by-id&lt;br /&gt;
 lrwxrwxrwx 1 root root 13 Jan  9 23:34 usb-busware.de_CUL868-if00 -&amp;gt; ../../ttyACM0&lt;br /&gt;
 lrwxrwxrwx 1 root root 13 Jan  9 13:26 usb-FTDI_FT232R_USB_UART_A901RQ9F-if00-port0-&amp;gt; ../../ttyUSB0&lt;br /&gt;
 lrwxrwxrwx 1 root root 13 Jan  9 13:26 usb-RFXCOM_RFXtrx433_A1WZWL5Y-if00-port0-&amp;gt; ../../ttyUSB1&lt;br /&gt;
 lrwxrwxrwx 1 root root 13 Jan  9 21:29 usb-busware.de_CUL433-if00 -&amp;gt; ../../ttyACM1 &lt;br /&gt;
&lt;br /&gt;
Damit lässt sich folgende Definition erstellen:&lt;br /&gt;
&lt;br /&gt;
z.B. für einen CUL868&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define CUL868 CUL /dev/serial/by-id/usb-busware.de_CUL868-if00@9600 1134&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oder einen JeeLink&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define Jeelink JeeLink /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A901RQ9F-if00-port0@57600&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Einschränkung:&#039;&#039;&#039; Bei CULs von Busware lassen sich nur CUL433 und CUL868 unterscheiden. Zwei CUL868 haben z.B. immer die gleiche Serial-ID.&lt;br /&gt;
&lt;br /&gt;
=== HM LAN Konfig-Adapter Antenne verbessern===&lt;br /&gt;
Die Antenne des [[HM-CFG-LAN LAN Konfigurations-Adapter]] kann man mit etwas Bastelgeschick verlängern um den Empfang zu verbessern. &lt;br /&gt;
&lt;br /&gt;
Sinnvoll ist die Verlängerung auf 1/2 Lambda  (868MHz = 17,27 cm) oder gar 1 Lambda.&lt;br /&gt;
1 Lambda Antennen haben starke Richtwirkung in Form eines gedachten Zylinders, dessen Mittelachse die Antenne ist.&lt;br /&gt;
D.h., Alles was sich in Richtung des Anfangs und des Endes des Antennedrahtes befindet, hat schlechteren Empfang als mit einer kurzen Antenne. Daher muss man die Antenne ggf. genauer ausrichten.&lt;br /&gt;
&lt;br /&gt;
Anleitungen dazu werden an verschiedenen Stellen veröffentlicht, z.B. in &lt;br /&gt;
[http://www.ip-symcon.de/forum/threads/18411-Umbau-HM-LAN-Adapter-auf-Lambda-1-2-Dipol-Antenne diesem Beitrag] im IP-Symcon Forum (anders als der Namen der Anleitung vermuten lässt, liegt hier kein Dipol vor, sondern eine &amp;quot;normale&amp;quot; 1 Lambda Antenne.)&lt;br /&gt;
&lt;br /&gt;
Prinzipiell so dünnen Draht wie möglich verwenden.&lt;br /&gt;
&lt;br /&gt;
Wer noch mehr rausholen will, kann auch zusätzlichen Aufwand betreiben und die Antenne etwas von der Elektronik entfernen, die nämlich Störstrahlung in die Antenne einkoppelt. Oder eine Groundplane bauen.&lt;br /&gt;
Ein Anleitung für die CCU (analog auch für den HM LAN Konfig-Adapter einsetzbar) gibt es [http://www.techwriter.de/beispiel/funkeige.htm hier].&lt;br /&gt;
&lt;br /&gt;
== Dezember 2014 ==&lt;br /&gt;
=== FHT80TF als &amp;quot;Prüfsender&amp;quot; einsetzen  ===&lt;br /&gt;
Da der [[FHT80TF-2]] günstig ist und seinen Zustand ca. alle zwei Minuten sendet, kann er gut zum Ermitteln der Funklage von [[SlowRF]] Komponenten genutzt werden, auch wenn diese nicht senden. Den RSSI einer FS20 Schaltsteckdose kann man z.B. nicht wissen, da die Dose nur ein Empfänger ist. Wenn eine Dose nicht gut funktioniert und man den Verdacht hat, dass sie funktechnisch ungünstig liegt, kann man einen [[FHT80TF-2]] neben die Steckdose legen und man bekommt nach zwei Minuten einen Wert, der (trotz umgekehrter Funkrichtung) gut genug ist, um einem Hinweise zu geben.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== November 2014 ==&lt;br /&gt;
=== FS20 Adressschema und die Rolle des Hauscodes  ===&lt;br /&gt;
[[FS20_Allgemein#FS20_Adressierungsschema_.28Vorschlag.29]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Oktober 2014 ==&lt;br /&gt;
=== Aktor für Wanddosen ohne Nulleiter  ===&lt;br /&gt;
Es gibt viele Aktoren die man in Einbaudosen hinter Schaltern einbauen kann. Oft scheitert deren Nutzung aber daran, dass in vielen Elektroinstalltionen in der Einbaudose eines (Licht)schalters kein Neutralleiter (Nulleiter) verlegt ist, den die meisten Aktoren zur eigenen Stromversorgung brauchen. Hier kann der [[RSL 2-Draht Einbauschalter]] helfen, der auch ohne Neutraleiter funktioniert und kompatibel zu InterTechno ist. Er lässt sich z.B. mit einem CUL(433) schalten. Problematisch ist damit allerdings das Schalten von LED Lampen.&lt;br /&gt;
&lt;br /&gt;
== August 2014 ==&lt;br /&gt;
=== Perl-Skripte Online testen  ===&lt;br /&gt;
Im Internet existieren Webseiten auf denen man Perl-Code online testen kann. Beispielsweise auf [http://www.tutorialspoint.com/execute_perl_online.php codingground] kann man Code zum Testen eingeben und die Auswirkungen betrachten. Dies eignet sich zur schnellen Fehleranalyse oder um Perl zu lernen. Natürlich lassen sich keine FHEM-Besonderheiten nutzen.&lt;br /&gt;
&lt;br /&gt;
== Juli 2014 ==&lt;br /&gt;
=== Funklast reduzieren===&lt;br /&gt;
Bewegungsmelder erzeugen in der Regel eine recht hohe Funklast, wenn sie oft ausgelöst werden, also z.B. Licht in einem Zimmer schalten sollen.&lt;br /&gt;
&lt;br /&gt;
Konstruktionen der Art:&lt;br /&gt;
:&amp;lt;code&amp;gt;define FlurLicht notify Bewegungsmelder_Flur:motion:.* set Licht_Flur on-for-timer 256&amp;lt;/code&amp;gt;&lt;br /&gt;
haben daher den Nachteil bei viel Bewegung im Flur und je nach Einstellung des Sendeabstandes des Bewegungsmelders mindestens alle 120 Sekunde oder öfter ein &lt;br /&gt;
:&amp;lt;code&amp;gt;on-for-timer 256&amp;lt;/code&amp;gt;&lt;br /&gt;
zu senden. Das erzeugt eine hohe Funklast, speziell wenn der Aktor ein SlowRF Gerät ist (z.B. FS20 Unterputzschalter).&lt;br /&gt;
In solchen Fällen kann es helfen, nur dann einen Befehl zu senden, wenn das Licht nicht schon an ist:&lt;br /&gt;
:&amp;lt;code&amp;gt;define FlurLicht notify Bewegungsmelder_Flur:motion:.* { if (Value(&amp;quot;Licht_Flur&amp;quot;) eq &amp;quot;off&amp;quot;) { fhem (&amp;quot;set Licht_Flur1 on-for-timer 256&amp;quot;) } }&amp;lt;/code&amp;gt;&lt;br /&gt;
Nachteilig ist aber, dass eine Auslösung innerhalb 256 Sekunden die Einschaltzeit nicht verlängert. Dies kann man umgehen, indem man nicht on-for-timer verwendet, sondern den Aktor selber verzögert auschaltet und bei weiteren Auslösungen nur die Verzögerung erneut anlegt:&lt;br /&gt;
:&amp;lt;code&amp;gt;define FlurLicht notify Bewegungsmelder_Flur:motion:.* { if (Value(&amp;quot;Licht_Flur1&amp;quot;) eq &amp;quot;off&amp;quot;) { fhem (&amp;quot;set Licht_Flur on ;; define FlurLicht_aus at +00:04:16 set Licht_Flur off&amp;quot;) } else { fhem (&amp;quot;delete FlurLicht_aus ;; define FlurLicht_aus at +00:04:16 set Licht_Flur off&amp;quot;) }}&amp;lt;/code&amp;gt;&lt;br /&gt;
Durch den relativ neuen Befehl &amp;quot;defmod&amp;quot; kann ausserdem das Löschen und neu Anlegen zusammengefasst werden, sieh Tipp Dezember 2015&lt;br /&gt;
&lt;br /&gt;
== Juni 2014 ==&lt;br /&gt;
=== Batteriestatus bei HomeMatic Devices aktivieren===&lt;br /&gt;
Zumindest einige (wenn nicht alle) batteriegespeisten HM-Geräte können Batteriemeldungen senden, tun dies in der normalen Konfiguration aber nicht.&lt;br /&gt;
Dazu muss das Register cyclicInfoMsg auf on gesetzt werden. &lt;br /&gt;
&lt;br /&gt;
Wie man das macht steht z.B. hier&lt;br /&gt;
[[HM-SEC-SC_Tür-Fensterkontakt#Batteriestatus_aktivieren]]&lt;br /&gt;
und hier&lt;br /&gt;
[[HomeMatic_Type_ThreeState]]&lt;br /&gt;
&lt;br /&gt;
== Mai 2014 ==&lt;br /&gt;
=== Dummywert mit aktueller Uhrzeit versehen in anderen Dummy kopieren===&lt;br /&gt;
Der Inhalt von Dummy1 soll erweitert um  Uhrzeit und Datum in Dummy2 kopiert werden (z.B. um die Urzeit der letzten Auslösung einer Alarmanlage anzuzeigen)&lt;br /&gt;
:&amp;lt;code&amp;gt;{ fhem(&amp;quot;set dummy2 &amp;quot; . (Value(&amp;quot;Dummy1&amp;quot;).&amp;quot; &amp;quot;.TimeNow()) )  } &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Zwei Dummywerte in einen anderen Dummy kopieren ===&lt;br /&gt;
Der String in Dummy1 soll um den String in Dummy2 erweitert und nach Dummy3 kopiert werden:&lt;br /&gt;
:&amp;lt;code&amp;gt;{ fhem(&amp;quot;set Dummy3 &amp;quot;.(Value(&amp;quot;Dummy1&amp;quot;)+Value(&amp;quot;Dummy2&amp;quot;))) } &amp;lt;/code&amp;gt;&lt;br /&gt;
(Achtung: &amp;quot;+&amp;quot;  ist Zahlen addieren, &amp;quot;.&amp;quot; ist String konkatenieren / verketten)&lt;br /&gt;
&lt;br /&gt;
== April 2014==&lt;br /&gt;
=== Code sparen ===&lt;br /&gt;
Wer Definitionen wie die aus dem März zum [[Trick der Woche#Zuverlässigkeit von FS20 Schaltungen erhöhen|Abfangen von Fehlbedienungen]] verwendet, kann durch eine ELSE Erweiterung auch gleich das Auschalten erledigen.&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_TV_on notify TV { if (&amp;quot;$EVENT&amp;quot; eq &amp;quot;on&amp;quot; || &amp;quot;$EVENT&amp;quot; eq &amp;quot;dimup&amp;quot;) { fhem(&amp;quot;set TV on&amp;quot;) } else { fhem(&amp;quot;set TV off&amp;quot;) } }&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hierdurch schaltet ON oder versehentlich zu langes Drücken (also DIMUP) den Fernseher ein, jeder &#039;&#039;andere&#039;&#039; Tastendruck (also insbesondere die OFF Taste oder zu langes Drücken der OFF Taste -&amp;gt; DIMDOWN) den Fernseher aus.&lt;br /&gt;
&lt;br /&gt;
Voraussetzung ist, dass die Fernbedienung standardkonfiguriert ist, siehe auch nächster Tip.&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration eines FS20 Senders prüfen ===&lt;br /&gt;
Gelegentlich reagieren bestimmte notifys nicht, die von Sendern (Fernbedienungen, Sensoren oder Schaltern) ausgelöst werden sollen. Speziell bei FS20 aber auch bei HomeMatic kann das daran liegen, dass der Sender nicht sendet was man denkt. So gut wie alle FS20 Sender kennen nämlich nicht nur ON und OFF, sondern über ein Dutzend Schaltzustände. Dimmen ist einem noch hinreichend bewusst, es gibt aber auch exotische Dinge wie  Ein-für-Zeitdauer, Ein-auf-alte-Helligkeit, Aus-für-Zeitdauer (nur FS20), Ein-für-Zeitdauer-dannach-alter-Zustand und vieles mehr.&lt;br /&gt;
&lt;br /&gt;
Was also ein Infrarot-Bewegungsmelder bei Auslösung sendet und auch was eine Fernbedienungstaste sendet ist einstellbar. Wenn jetzt zum Beispiel an einer Fernbedienung auf Tastendruck nicht ON sondern Ein-für-Zeitdauer (ON-FOR-TIMER) gesendet wird, wird&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_TV_on notify TVFB:on set TV on&amp;lt;/code&amp;gt;&lt;br /&gt;
seltsamerweise nicht auslösen, obwohl die richtige Taste (und diese auch nicht zu lang) gedrückt wurde.&lt;br /&gt;
&lt;br /&gt;
Auch wenn man sich sicher ist, das Richtige in die Fernbedienung/Sensoren einprogramiert zu haben, ist ein einfacher Test immer, dies mit&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_TV notify TVFB set TV on&amp;lt;/code&amp;gt;&lt;br /&gt;
zu prüfen. Dieses notify löst immer aus, wenn &amp;quot;TVFB&amp;quot;  &#039;&#039;irgendetwas&#039;&#039; sendet, egal was. (Beachte: Man kann dann den Fernseher aber nicht mehr ausschalten, da auch die Austaste das notify auslöst und zum TV-Aktor nur &amp;quot;on&amp;quot; sendet). &lt;br /&gt;
&lt;br /&gt;
Geht die Schaltung jetzt (kann man den Fernseher also jetzt EINschalten), liegt der Verdacht nahe, dass die Konfiguration des Senders / Sensors anders ist, als man denkt. Das Logfile, der EventMonitor oder ein Beobachtung von FHEM per Telnet mittels &amp;quot;inform&amp;quot; gibt Aufschluss, welcher Befehl tatsächlich empfangen wurde.&lt;br /&gt;
&lt;br /&gt;
== März 2014==&lt;br /&gt;
=== Zuverlässigkeit von FS20 Schaltungen erhöhen ===&lt;br /&gt;
FS20 Fernbedienungen senden bei Tastendrücken von mehr als 0,4 Sekunden anstatt ON bzw. OFF DIMUP bzw DIMDOWN.(Auch einige FBs anderer Systeme verhalten sich ähnlich)&lt;br /&gt;
&lt;br /&gt;
Das führt gelegentlich zu allgemein schlechter Bedienbarkeit (und schlechtem WAF), da 0,4 Sekunden relativ kurz ist und gerne aus versehen länger gedrückt wird. Das ist vor allem problematisch, wenn etwas geschaltet werden soll, was keinen Dimmer hat oder Dimmen nicht unterstützt.&lt;br /&gt;
&lt;br /&gt;
Eine Konfiguration wie &lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_TV_on notify TVFB:on set TV on&amp;lt;/code&amp;gt;&lt;br /&gt;
hat also dann den Nachteil, dass bei versehentlich zu langem Tastendruck auf die Fernbedienung das TV nicht angeht. Da die meisten Nutzer unbewusst dazu neigen, bei Misserfolg die selbe Taste erneut aber länger zu drücken (was erneut keinen Erfolg zeigt) ist Frustration zu erwarten.&lt;br /&gt;
&lt;br /&gt;
Es kann daher speziell bei nicht dimmbaren Aktoren von Vorteil sein, auch dimmen abzufangen, z.B. durch eine zweite zusätzliche Definition:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_TV_dimup notify TVFB:dimup set TV on&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es ist in der Regel einfacher, einige dieser zusätzlichen Definitionen einzufügen, als allen Bedienern des Systems zu erklären, dass man keinesfalls länger als 0,4 Sekunden drücken darf.&lt;br /&gt;
&lt;br /&gt;
Alternativ kann man auch beide Befehle in einer Definition durch Perlbefehle {} abfangen:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_TV_on notify TVFB { if (&amp;quot;$EVENT&amp;quot; eq &amp;quot;on&amp;quot; || &amp;quot;$EVENT&amp;quot; eq &amp;quot;dimup&amp;quot;) { fhem(&amp;quot;set TV on&amp;quot;) }}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Allerdings hat dies den Nachteil, dass jedes Event dieses define durchläuft und erst später geprüft wird, ob das Event überhaupt irgendetwas auslöst. &lt;br /&gt;
Z.B. wird&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_TV_on notify TVFB ...&amp;lt;/code&amp;gt; &lt;br /&gt;
auch durch TVFB off ausgelöst (oder unter bestimmten Bedungen sogar duch alle Events), nur um dann nach dem Perl Test festzustellen, dass doch nichts getan werden soll.&lt;br /&gt;
&lt;br /&gt;
Ressourcenschonender ist daher:&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_TV_on notify TVFB:on|TVFB:dimup set TV on &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Andere Möglichkeiten vergleiche: [[Trick der Woche#notify durch mehrere Ereignisse auslösen lassen|Notify durch mehrere Ereignisse auslösen lassen]] und [[Trick der Woche#Performance_von_Notifys|Performance von Notifys]]&lt;br /&gt;
&lt;br /&gt;
== Februar 2014==&lt;br /&gt;
=== Sequence nutzen ===&lt;br /&gt;
Man kann Aktionen statt mit einem Tastedruck auch mit einer Sequenz von Tastendücken auslösen. Das Format des Befehle ist:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define &amp;lt;name&amp;gt; sequence &amp;lt;re1&amp;gt; &amp;lt;timeout1&amp;gt; &amp;lt;re2&amp;gt; [&amp;lt;timeout2&amp;gt; &amp;lt;re3&amp;gt; ...] &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
wobei &amp;lt;re1&amp;gt; ...&amp;lt;re_n&amp;gt; die Aktionen sind und &amp;lt;timeout_n&amp;gt; der maximale Abstand der Tastendrücke in Sekunden.&lt;br /&gt;
&lt;br /&gt;
Angenommen, man wolle z.B. eine Lampe dann anschalten, wenn man zuerst Taste1 EIN, dann Taste2 AUS und dann wieder Taste1 EIN einer Fernbedienung drückt, könnte das konkret so aussehen:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define MeineLampenSequenz1 sequence Btn1:on 0.5 Btn2:off 0.5 Btn1:on&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zwischen jedem der Tastendrücke darf eine halbe Sekunde Abstand sein. Diese Definition selbst löst die Lampe nicht aus, sondern definiert nur wie die Sequenz aussehen soll. Um die Lampe bei erfolgreicher Betätigung der Sequenz auch einzuschalten, bedarf es zusätzlich etwas wie:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define MeineLampe notify MeineLampenSequenz1:trigger set Lampe on&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sequence kann man gut nutzen, um mit einer Fernbedienung mehr Funktionen zu schalten als Tasten zur Verfügung stehen. Ebenso könnte man damit simple Codeschlösser für Alarmanlagen bauen, z.B. um eine Anlage auszuschalten, wenn eine bestimmte Abfolge von Tasten gedrückt wird.&lt;br /&gt;
&lt;br /&gt;
Je nach Funksystem nimmt die Zuverlässigkeit aber rasch ab. Angenommen im Bereich FS20 (das System ist etwas unzuverlässiger ist als z.B. HomeMatic) seien 95% aller Funktsignale ungestört übertragbar, dann würden in der Praxis von 100 Tastendrücken an einer Fernbedienung 95x Erfolg zeigen und 5x fehlschlagen; das ist sicher tolerabel. &lt;br /&gt;
&lt;br /&gt;
Bei einer Sequenzlänge von nur 4 Tasten würde die kombinierte Erfolgsquote der Sequenz jedoch nur noch ca. 80% sein, zum Ausschalten einer Alarmanlage vermutlich bereits unpraktisch.&lt;br /&gt;
&lt;br /&gt;
== Januar 2014==&lt;br /&gt;
===isday===&lt;br /&gt;
Bekanntlich kann man  mit &amp;quot;isday&amp;quot; leicht testen ob es draussen hell ist oder nicht. isday ist eine Funktion des (automatisch geladenen) Moduls [[SUNRISE_EL]], das auch sunset und sunrise enthält.&lt;br /&gt;
&lt;br /&gt;
Problematisch bei isday ist die fehlende Möglichkeit, Sonnenaufgang und Untergang einzustellen (zumindest wenn man nicht 99_SUNRISE_EL.pm verändern will): isday ist wahr, wenn die Sonne im gegebenen Breitengrad theoretisch sichtbar ist. Wenn örtliche Gegebenheiten (Bebauung, Bäume, Tal etc.) eine Anpassung erfordern, kann man sich auch ein eigenes isday basteln, in dem man sunrise und sunset verwendet und dieses mit getrennten offsets versieht.&lt;br /&gt;
&lt;br /&gt;
Zuerst definiert man sich eine Variable (&amp;quot;dummy&amp;quot;) der anstelle isday eingesetzt werden soll, z.B.:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define Tageslicht dummy &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann wird diese mit sunset und sunrise befüllt:&lt;br /&gt;
&lt;br /&gt;
 define SetDummy1 at *{sunset(-3600)} set Tageslicht hell &lt;br /&gt;
 define SetDummy2 at *{sunrise(+1800)} set Tageslicht dunkel &lt;br /&gt;
&lt;br /&gt;
Jetzt kann für jeden Wechsel ein eigener Offset gewählt werden, im Beispiel 3600 Sekunden vor Sonnenuntergang und 1800 Sekunden nach Sonnenaufgang. Anstatt das Dummy &amp;quot;Tageslicht&amp;quot; mit den Werten &amp;quot;hell/dunkel&amp;quot; zu befüllen, kann natürlich auch 1/0 oder &amp;quot;Tag/Nacht&amp;quot; etc. verwendet werden, je nachdem was bei der Anwendung besser passt.&lt;br /&gt;
&lt;br /&gt;
Für höhere Ansprüche könnte hingegen das [[Twilight]]-Modul verwendet werden, das Dämmerungsstufen kennt.&lt;br /&gt;
&lt;br /&gt;
===Struktur von &amp;quot;else if&amp;quot; Verzweigungen===&lt;br /&gt;
 define ... notify ... {\&lt;br /&gt;
  if ... {\&lt;br /&gt;
   fhem (&amp;quot;... ;; ...&amp;quot;)\&lt;br /&gt;
  }\&lt;br /&gt;
  elsif ... {\&lt;br /&gt;
    fhem (&amp;quot;... ;; ...&amp;quot;)\&lt;br /&gt;
  }\&lt;br /&gt;
  elsif ... {\&lt;br /&gt;
    fhem (&amp;quot;... ;; ...&amp;quot;)\&lt;br /&gt;
  }\&lt;br /&gt;
  else {\&lt;br /&gt;
   if ... {\&lt;br /&gt;
    fhem (&amp;quot;... ;; ...&amp;quot;)\&lt;br /&gt;
  }\&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Achtung: es muss tatsächlich &amp;quot;elsif&amp;quot; heissen und nicht &amp;quot;elseif&amp;quot; oder &amp;quot;else if&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Gilt für Perl Aufrufe. &lt;br /&gt;
Wer aktuell in FHEM neu einsteigt, kann auch den seit 2014 zur Verfügung stehenden FHEM Befehl [[DOIF]] verwenden, der komfortabler ist und zusätzliche Features aufweist.&lt;br /&gt;
&lt;br /&gt;
== Dezember 2013==&lt;br /&gt;
===notify durch mehrere Ereignisse auslösen lassen===&lt;br /&gt;
Bekanntermassen löst&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter …&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
aus, wenn irgendein Ereignis vom Sender &amp;quot;MeinSchalter&amp;quot; eintrifft.&lt;br /&gt;
&lt;br /&gt;
Mit&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:on …&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
wird das notify jedoch nur ausgelöst, wenn dieses Ereignis eine &amp;quot;on&amp;quot; ist.&lt;br /&gt;
Wenn man aber möchte, das z.B. &amp;quot;on&amp;quot; und &amp;quot;off&amp;quot; auslöst (um etwa Dim-Befehle auszuschliessen) kann dies wie folgt erreicht werden:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:(on|off) …&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Klammern sind wichtig, vergleiche eine Lösung, bei der zwei Sender alternativ das notify auslösen können:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:on|MeinAndererSchalter:on …&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Selbstverständlich geht z.B. auch folgendes:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:on|MeinAndererSchalter …&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier wird ausgelöst wenn &amp;quot;MeinSchalter&amp;quot; das Ereignis &amp;quot;on&amp;quot; liefert oder &amp;quot;MeinAndererSchalter&amp;quot; irgendein Ereignis. Beachte hierzu jedoch den Tipp vom Dezember 2020 &amp;quot;Performance von Notifys&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Aktoren über mehrere Funkschnittstellen ansprechen ===&lt;br /&gt;
Falls man mehrere Funkschnittstellen zur Reichweitenverlängerung hat (CUL / CUNO etc), und ein Aktor von beiden Funkschnittstellen in etwa gleich (schlecht) erreichbar ist, mag der Wunsch aufkommen, einen Funkbefehl über beide Schnittstellen auszusenden. Dies ist bei Funkprotokollen möglich, die kein echtes Pairing der Aktoren an die Funkschnittstelle erfordern, also z.B. FS20 oder Intertechno, nicht jedoch ohne weiteres bei HomeMatic.&lt;br /&gt;
&lt;br /&gt;
Problematisch ist aber, dass die Funkschnittstelle über IODev eindeutige je Aktor festgelegt werden muss, eine Zuordnung mehrerer IODevs ist nicht vorgesehen.&lt;br /&gt;
(wenn man IODev nicht setzt, wird per default die LETZTE definiert passende Schnittstelle verwendet)&lt;br /&gt;
&lt;br /&gt;
Dieses Problem kann mit einem Trick aber umgangen werden. Und zwar legt man den Aktor 2x mit gleicher Adresse aber abweichenden Namen und IOdevs an, z.B. so:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 define brenner_CUL1 FS20 11114244 11&lt;br /&gt;
 attr brenner_CUL1 IODev CUL1&lt;br /&gt;
 attr brenner_CUL1 room Keller&lt;br /&gt;
&lt;br /&gt;
 define brenner_CUL2 FS20 11114244 11&lt;br /&gt;
 attr brenner_CUL2 IODev CUL2&lt;br /&gt;
 attr brenner_CUL2 room Keller&lt;br /&gt;
&lt;br /&gt;
Ein Befehl der Art:&lt;br /&gt;
&lt;br /&gt;
 set brenner_CUL1,brenner_CUL2 on&lt;br /&gt;
&lt;br /&gt;
sendet den ON Befehl für den FS20 Aktor 11114244 11  jetzt tatsächlich über beide CULs aus!&lt;br /&gt;
&lt;br /&gt;
Achtung: Wenn die Schnittstellen gleichschnell angebunden sind, sollte vermutlich der [[Sendpool]] verwendet werden, da die Aussendungen sonst tatsächlich gleichzeitig erfolgen könnten und sich dann gegenseitig stören würden. Dieser Trick funktioniert ausserdem nur bei Befehlen, bei denen es im Zweifel egal ist, wenn sie beim Aktor 2x eintreffen. &lt;br /&gt;
&lt;br /&gt;
Bei HomeMatic lässt sich ein ähnlicher Effekt durch einrichten einer [[Virtueller Controller VCCU|virtuellen CCU]] erreichen.&lt;br /&gt;
&lt;br /&gt;
=== Retrycount bei FHTs ist überflüssig===&lt;br /&gt;
Das von der Funktion &#039;&#039;autocreate&#039;&#039; älterer FHEM Versionen beim Anlegen von FHT80 Heizungsreglern voreingetragene attribute &amp;quot;retrycount&amp;quot; hat in den allermeisten Fällen keine Wirkung, da es NUR greift, wenn man als Funkschnittstelle eine FHZ1X00PC verwendet und dann den Softbuffer einschaltet. Selbst wenn man diese Konfiguration nutzt, will gut überlegt werden, ob die Wirkung postiv ist: Bei ungenügender Empfangslage vergrössert es Kommunikationsprobleme eventuell sogar.&lt;br /&gt;
&lt;br /&gt;
Es kann also in der Regel entfernt oder auf den Wert &amp;quot;1&amp;quot; gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
 define Heizung_Bad FHT 060d&lt;br /&gt;
 attr Heizung_Bad retrycount 3       &amp;lt;=== Diese Zeile entfernen&lt;br /&gt;
&lt;br /&gt;
Siehe auch:[[Kommunikationsprobleme mit FHT]]&lt;br /&gt;
&lt;br /&gt;
== November 2013 ==&lt;br /&gt;
=== FS20 Funksteckdose sicherer schalten===&lt;br /&gt;
Seltsamerweise kommt es vor, das FS20 Aktoren - insbesondere die FS20 Funksteckdose - an der Grenze der Funkreichweite bestimmte Befehle eines Typs empfängt, andere aber nicht. Z.B. lässt sich die FS20 Steckdose zwar immer einschalten, aber oft nicht mehr aus (oder umgekehrt).&lt;br /&gt;
&lt;br /&gt;
Gelegentlich kann man die Zuverlässigkeit erhöhen, indem man statt dem nicht funktionierenden Befehl das Gegenteil mit &amp;quot;for-timer 1&amp;quot; verwendet.&lt;br /&gt;
&lt;br /&gt;
Im Fall, dass eine FS20 Steckdose sich also einwandfrei EINschalten lässt:&lt;br /&gt;
:&amp;lt;code&amp;gt;set SteckdoseA on&amp;lt;/code&amp;gt;&lt;br /&gt;
aber oft ein AUSschalten mittels&lt;br /&gt;
:&amp;lt;code&amp;gt;set SteckdoseA off&amp;lt;/code&amp;gt;&lt;br /&gt;
nicht funktioniert, kann man versuchen die Dose anstelle mit &amp;quot;off&amp;quot; mit dem Befehl&lt;br /&gt;
:&amp;lt;code&amp;gt;set SteckdoseA on-for-timer 1&amp;lt;/code&amp;gt;&lt;br /&gt;
auszuschalten.&lt;br /&gt;
&lt;br /&gt;
Analog kann man mit off-for-timer arbeiten, wenn sich Aktoren nicht einschalten lassen, ausschalten aber geht.&lt;br /&gt;
&lt;br /&gt;
Achtung: Dieser Trick funtioniert ausdrücklich nur, wenn der &amp;quot;on/off-for-timer&amp;quot; Befehl im Aktor selber abgebildet wird. Daher ist der Trick vermutlich nicht auf andere Funksysteme übertragbar. z.B. unterstützt HM nur on-for-timer und Intertechno kennt keinen Timer.&lt;br /&gt;
&lt;br /&gt;
=== Mehrere Geräte zugleich schalten===&lt;br /&gt;
Ein Ereignis soll mehrere Geräte schalten:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_Bewegungsmelder notify Bewegungsmelder set Lampe1 on;;set Lampe2 on;;set FunksteckdoseA on&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aus Übersichtlichkeitsgründen können vor und nach den Semikolons auch Leerzeichen eingefügt werden (obwohl in einigen Dokumentation behauptet wird, dies dürfe man nicht machen):&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_Bewegungsmelder notify Bewegungsmelder set Lampe1 on ;; set Lampe2 on ;; set FunksteckdoseA on&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn der Schaltbefehl bei allen Geräten gleich ist, kann man wie folgt zusammenfassen:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_Bewegungsmelder notify Bewegungsmelder set Lampe1,Lampe2,FunksteckdoseA on&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Komma wird nicht [[Escapen in Perlbefehlen|escaped]] (verdoppelt), hier darf tatsächlich KEIN Leerzeichen vor oder nach dem Komma eingefügt werden.&lt;br /&gt;
&lt;br /&gt;
=== Logfileinträge unterdrücken===&lt;br /&gt;
Das Attribute &amp;quot;verbose 0&amp;quot; verhindert, dass das Gerät Logfileinträge erzeugt.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 define Funksteckdose FS20 22224222 01&lt;br /&gt;
 attr Funksteckdose verbose 0&lt;br /&gt;
&lt;br /&gt;
===FHT Lazy Mode benutzen===&lt;br /&gt;
Es gibt wenig Gründe, den FHT &amp;quot;Lazy Mode&amp;quot; nicht zu verwenden&lt;br /&gt;
 define Heizung_Bad FHT 060d&lt;br /&gt;
 attr Heizung_Bad lazy&lt;br /&gt;
&lt;br /&gt;
Dieser sorgt dafür, dass Temperaturänderungen (genau genommen alle Änderungen, auch z.B. date) nur übertragen werden, wenn sie nicht sowieso schon am FHT eingestellt sind und veringern die Funklast dadurch deutlich. &lt;br /&gt;
&lt;br /&gt;
Siehe auch: [[Kommunikationsprobleme mit FHT]]&lt;br /&gt;
&lt;br /&gt;
== Oktober 2013 ==&lt;br /&gt;
=== Zuverlässigkeit von Wiedereinschalten erhöhen ===&lt;br /&gt;
Speziell bei FS20 Aktoren ist wegen des fehlenden Rückkanals nicht leicht erkennbar, ob ein Einschaltbefehl Wirkung gezeigt hat. Das bringt einen ganz schlechten WAF, wenn man z.B. mit einem FS20 Aktor eine Heizung ausschaltet und das Wiedereinschalten nach z.B. einer Stunde nicht klappt.&lt;br /&gt;
&lt;br /&gt;
Hier empfiehlt es sich, das Ausschalten mittels &lt;br /&gt;
:&amp;lt;code&amp;gt;set Heizungs_schalter off-for-timer 3584&amp;lt;/code&amp;gt;   (= fast eine Stunde)&lt;br /&gt;
zu erledigen. Da bei FS20 der off-for-timer Befehl im Aktor abgewickelt wird (und nicht durch FHEM), schaltet sich der Aktor auch dann garantiert wieder ein, wenn FHEM abstürzt, eine Funkstörung vorliegt oder ähnliches.  Bei Bedarf kann der Befehl off-for-timer zur  Verlängerung der Ausschaltzeit wiederholt werden. Dies kann z.B. nötig sein, wenn die Ausschaltung länger als 4,5 Stunden (15360 Sekunden, der Maximalwert des Timers) dauern soll.&lt;br /&gt;
&lt;br /&gt;
Achtung: dieser Trick funktioniert nur, wenn der Aktor &amp;quot;off-for-timer&amp;quot; selbst beherrscht. FS20 Geräte können das, HomeMatic können aber nur &amp;quot;on-for-timer&amp;quot;. Man kann off-for-timer mit HomeMatic trotzdem verwenden, aber in diesem Fall sendet FHEM den Einschaltbefehl nach der Timerzeit. InterTechno, RSL etc, können gar keinen Timer, hier sendet FHEM immer 2 Befehle im passenden Abstand.&lt;br /&gt;
&lt;br /&gt;
=== FS20 Timerzeiten ===&lt;br /&gt;
FS20 Timer werden in Sekunden angegeben. Es sind jedoch nicht alle Werte einstellbar. Da der Timer Wert in 7 Bit übertragen werden muss, sind nur 128 Werte möglich. Um mit diesen Werten im unteren Bereich möglichst fein aufzulösen, andererseits aber auch lange Zeiten zu ermöglichen, ist die Verteilung nicht linear. Einstellbar sind folgende Zeiten in Sekunden;&lt;br /&gt;
&lt;br /&gt;
0,25  0,5  0,75  1  1,25  1,5  1,75  2  2,25  2,5  2,75  3  3,25  3,5  3,75   &lt;br /&gt;
4  4,5  5  5,5  6  6,5  7  7,5  8  9  10  11  12  13  14  15  16  18  20  22   &lt;br /&gt;
24  26  28  30  32  36  40  44  48  52  56  60  64  72  80  88  96  104  112   &lt;br /&gt;
120  128  144  160  176  192  208  224  240  256  288  320  352  384  416   &lt;br /&gt;
448  480  512  576  640  704  768  832  896  960  1024  1152  1280  1408   &lt;br /&gt;
1536  1664  1792  1920  2048  2304  2560  2816  3072  3328  3584  3840  4096   &lt;br /&gt;
4608  5120  5632  6144  6656  7168  7680  8192  9216  10240  11264  12288   &lt;br /&gt;
13312  14336  15360 &lt;br /&gt;
(etwas übersichtlicher formatiert auch [[FS20 Allgemein#ON/OFF Befehle mit Time Parameter|hier]]).&lt;br /&gt;
 &lt;br /&gt;
Andere Zeiten werden von FHEM gerundet. Ein neues Setzen des Timer für FS20 löscht den alten Wert.&lt;br /&gt;
&lt;br /&gt;
Auch HomeMatic Aktoren beherrschen Time Parameter, im Gegensatz zu FS20 allerdings kein &amp;quot;off-for-timer&amp;quot;. Details dazu im Artikel [[HomeMatic Timerwerte]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Soulman</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Trick_der_Woche&amp;diff=38873</id>
		<title>Trick der Woche</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Trick_der_Woche&amp;diff=38873"/>
		<updated>2024-01-08T17:48:57Z</updated>

		<summary type="html">&lt;p&gt;Soulman: /* Performance von Notifys */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diese Seite enthält Tipps und Tricks, die zu unbedeutend sind, einen eigenen Artikel zu rechtfertigen, alternative Schreibweisen/Lösungen für eine Problem darstellen, Ungenauigkeiten oder unklare Formulierungen in den offiziellen Dokumenten ergänzen und ähnliches. Jeder Eintrag ist typischerweise sehr kurz (wenige Zeilen lang) und beleuchtet vielleicht nur einen Aspekt von FHEM, er kann allgemeiner Natur sein, oder sich auf ein spezielles Gerät oder einen speziellen Anwendungsfall beziehen.&lt;br /&gt;
&lt;br /&gt;
== August 2022==&lt;br /&gt;
=== Update ===&lt;br /&gt;
Wenn der Befehl &amp;quot;Update&amp;quot; nicht funktioniert und insbesondere die Fehlermeldung &#039;&#039;Bad hostname &#039;fhem.de:80&#039;&#039;&#039; zurück gibt, kann es sinnvoll sein, den Parameter  -noSSL zu versuchen. Details dazu im Artikel [[Update]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Januar 2022==&lt;br /&gt;
=== günstiger Luftfeuchtesensor ===&lt;br /&gt;
Der [[HM-CC-TC Funk-Wandthermostat]] ist schon lange abgekündigt. Er wird derzeit oft recht günstig im Netz angeboten und eignet sich daher als billiger &amp;quot;StandAlone&amp;quot; Temperatur- und Luftfeuchtesensor, auch wenn er keinen Ventielantrieb steuern soll.&lt;br /&gt;
&lt;br /&gt;
== Dezember 2020 ==&lt;br /&gt;
=== Performance von Notifys ===&lt;br /&gt;
Im Tipp vom Dezember 2013 [[Trick der Woche#notify durch mehrere Ereignisse auslösen lassen|notify durch mehrere Ereignisse auslösen lassen]] heisst es:&lt;br /&gt;
:&#039;&#039;[…] Wenn man aber möchte, dass z.B. &amp;quot;on&amp;quot; und &amp;quot;off&amp;quot; auslöst (um etwa Dim-Befehle auszuschliessen), kann dies wie folgt erreicht werden:&#039;&#039;&lt;br /&gt;
::&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:(on|off) …&amp;lt;/code&amp;gt;&lt;br /&gt;
Performanter ist allerdings:&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:o[nf]+  …&amp;lt;/code&amp;gt;&lt;br /&gt;
wobei &#039;&#039;&#039;o[nf]+&#039;&#039;&#039; eine &amp;quot;Regexp&amp;quot; für beliebige Zeichenketten ist, die mit &#039;&#039;&#039;o&#039;&#039;&#039; anfangen und &#039;&#039;&#039;n&#039;&#039;&#039; und/oder &#039;&#039;&#039;f&#039;&#039;&#039; enthalten, also (auch) on und off.&lt;br /&gt;
&lt;br /&gt;
Alternativ kann auch:&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:on|MeinSchalter:off … &amp;lt;/code&amp;gt;&lt;br /&gt;
verwendet werden.&lt;br /&gt;
Die letzten beiden Varianten sparen Ausführungszeit. Ganz allgemein ist es besser, im notify das Suchmuster mit einem [[Regulärer Ausdruck|regulären Ausdruck]] (Regexp) eng zu definieren.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:on ... &amp;lt;/code&amp;gt;&lt;br /&gt;
ist performanter als&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter { if ($EVENT eq &amp;quot;on&amp;quot; ... &amp;lt;/code&amp;gt;&lt;br /&gt;
auch wenn das Ergebnis gleich ist.&lt;br /&gt;
&lt;br /&gt;
Allerdings ist &lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:on ... &amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas1 notify MeinSchalter:off ... &amp;lt;/code&amp;gt;&lt;br /&gt;
langsamer als&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchaltero[nf]+ { if ($EVENT eq &amp;quot;on&amp;quot;  ) { fhem( ) } else { fhem(&amp;quot;... &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die oben erwähnten &amp;quot;if&amp;quot; sind &amp;quot;perl if&amp;quot;s. Die Verwendung des FHEM Modul DOIF ist deutlich langsamer.  Die Betrachtung betrifft sowieso nur langsame Host-Systeme mit gleichzeitig vielen defines. Bei Verwendung z.b. einen Raspberry Pi 4 oder schnellerem Host dürften die Unterschiede vernachlässigbar sein.&lt;br /&gt;
&lt;br /&gt;
== Oktober 2020 ==&lt;br /&gt;
=== Entprellen ===&lt;br /&gt;
Will man ein notify innerhalb eines bestimmten Zeitraumes nur einmal auslösen lassen, auch wenn er in diesem Zeitraum mehrfach getriggered werden sollte, so bietet sich das [[Attribut]] &#039;&#039;&#039;disabledAfterTrigger&#039;&#039;&#039; an:&lt;br /&gt;
:&amp;lt;code&amp;gt;attr &amp;lt;notify_device&amp;gt; disabledAfterTrigger &amp;lt;Anzahl Sekunden&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Oktober 2019 ==&lt;br /&gt;
=== Funkstörungen durch leere Batterien ===&lt;br /&gt;
Unerklärliche Funkstörungen besonders im SlowRF Bereich (z.b. FS20) mit stark verminderter Reichweite von CULs, gestörter [[RFR CUL]] Kommunikation etc. gestörtem Empfang von Funktelegrammen aller Art können ihre Ursache darin haben, dass einige Geräte mit (fast) leeren Batterien unkontrolliert senden und dadurch den Kanal mit Störsignalen verschmutzen. Anfällig sind insbesondere ältere FHT Fenstersensoren wie der [[FHT80TF]], die mit fast leeren Batterien eine Art Rauschen aussenden und damit die &#039;&#039;&#039;komplette&#039;&#039;&#039; FS20 Kommunikation lahmlegen können, Störungen beeinflussen auch andere Funkprotokolle im selben Frequenzbereich, wie z.b. HM.&lt;br /&gt;
Also im Falle unerklärlicher und weitreicher Funkstörungen die Batterien aller Geräte überprüfen.&lt;br /&gt;
&lt;br /&gt;
== Februar 2019 ==&lt;br /&gt;
=== Unterräume anlegen ===&lt;br /&gt;
[[Datei:Unterraeume.png|350px|thumb|right|Beispiel für einen gegliederten Raum &amp;quot;Steuerung&amp;quot;]]&lt;br /&gt;
In [[FHEMWEB]] besteht neben der Möglichkeit, Geräte dadurch übersichtlich anzuordnen, indem diese Gruppen und einfachen Räumen zugeordnet werden, auch die Möglichkeit, Räume weiter zu gliedern und Unterräume zu verwenden. Dazu wird nach der Angabe des Hauptraums der Unterraum, getrennt durch ein &amp;quot;-&amp;gt;&amp;quot; angegeben. Beispiele:&lt;br /&gt;
 attr &amp;lt;DEVICENAME&amp;gt; room Steuerung-&amp;gt;Logik&lt;br /&gt;
 attr &amp;lt;DEVICENAME&amp;gt; room Steuerung-&amp;gt;Heizung&lt;br /&gt;
&#039;&#039;&#039;Hinweis&#039;&#039;&#039;: Legt man zusätzlich einen Raum &#039;&#039;Steuerung&#039;&#039; an, erscheint dieser als zusätzlicher Eintrag in der Raumliste.&lt;br /&gt;
&lt;br /&gt;
== Januar 2019 ==&lt;br /&gt;
=== HomeMatic IP ===&lt;br /&gt;
Das [[HomeMatic IP]]-Protokoll unterscheidet sich deutlich vom bisherigen HomeMatic Protokoll, im Grunde ist es ein anderes System, das nur dem Namen nach dem älteren HomeMatic gleicht. HM-IP Geräte können aktuell (Anfang 2019) nur über eine systemeigene Zentrale CCU2 (als physisch vorhandenes Interface) und die HomeMatic-Module in FHEM integriert werden, sind in FHEM jedoch &#039;&#039;&#039;nicht&#039;&#039;&#039; unmittelbar als Homematic-Geräte ansprechbar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Dezember 2018 ==&lt;br /&gt;
===HomeMatic Heizungsregler Uhrzeit einstellen===&lt;br /&gt;
HomeMatic Thermostate / Heizungsregler  wie der HM-CC-TC der der HM-TC-IT-WM-W-EU etc. synchronisieren ihre Uhrzeit täglich etwa gegen Mitternacht mit der Zentrale. Man kann dieses Update aber jederzeit erzingen durch den Befehl  &lt;br /&gt;
 set &amp;lt;DEVICENAME&amp;gt; sysTime&lt;br /&gt;
&lt;br /&gt;
== November 2018 ==&lt;br /&gt;
===HomeMatic Heizunggeräte gebraucht gekauft===&lt;br /&gt;
HomeMatic Heizunggeräte gebraucht gekauft und jetzt lassen sie sich nicht richtig peeren oder pairen?&lt;br /&gt;
Das Problem ist meistens, dass die Geräte noch mit der Zentrale des Verkäufers gepairt oder mit anderen Geräten gepeert sind. &lt;br /&gt;
Mit Thermostaten wie der [[HM-CC-TC Funk-Wandthermostat]] oder der Nachfolger [[HM-TC-IT-WM-W-EU Funk-Wandthermostat AP]] können mit Ventilantrieben wie dem [[HM-CC-VD Funk-Stellantrieb]] nur gepeert werden, wenn &lt;br /&gt;
* die Thermostaten nicht selbst schon mit einer Zentrale (im FHEM Umfeld also z.b. einer [[Virtueller Controller VCCU]] oder [[HM-[[HM-CFG-LAN LAN Konfigurations-Adapter]] oder ähnliches) gepairt wurden&lt;br /&gt;
* die Ventilantriebe nicht selbst mit einer Zentrale gepairt oder mit einem Thermostaten gepeert wurden.&lt;br /&gt;
&lt;br /&gt;
Es ist daher sinnvoll zuerst alle Geräte zurückzusetzen, da viele Verkäufer dies vergessen. Wie das geht steht in der Anleitung.&lt;br /&gt;
Beispiele:&lt;br /&gt;
* HM-CC-TC -&amp;gt; MENU lange drücken, dann Sonderfunktion &amp;quot;RES&amp;quot; anwählen, mit OK-Taste bestätigen&lt;br /&gt;
* HM-CC-VD -&amp;gt; Anlernknopf 10 Sekunden lang drücken. Der Antrieb geht in Zustand A2, nachdem er das Ventil 1x auf- und zugefahren hat geht er in A3, Knopf nochmals drücken.&lt;br /&gt;
* HM-TC-IT-WM-W-EU -&amp;gt; Batterien entfernen, alle 3 Tasten gedrückt halten, Batterien einlegen, warten bis &amp;quot;rES&amp;quot; im Display erscheint, Tasten loslassen&lt;br /&gt;
&lt;br /&gt;
== Januar 2018 ==&lt;br /&gt;
=== at absolutem Datum ===&lt;br /&gt;
Vielen ist nicht klar, dass man mit dem &amp;quot;define … at&amp;quot; auch einfach ein absolutes Datum definieren kann (obwohl es in der Commandref steht). Anstatt umfangreicher DOIF Konstrukte oder &amp;quot;define … at&amp;quot; die täglich ablaufen und testen ob der gewünschte Tag schon erreicht ist, geht auch ein einfaches:&lt;br /&gt;
&lt;br /&gt;
 define Licht_Neujahr_2019 at 2019-01-03T06:01:01 set Licht1 on&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Allgemein: &lt;br /&gt;
 define &amp;lt;name&amp;gt; at [&amp;lt;datespec&amp;gt;] &amp;lt;command&amp;gt; &lt;br /&gt;
wobei &amp;lt;datespec&amp;gt; =  (YYYY-MM-DDTHH:MM:SS) (also in ISO8601 Schreibweise).&lt;br /&gt;
Wichtig ist die Angabe mit Sekunden, die nicht weggelassen werden können.&lt;br /&gt;
&lt;br /&gt;
== Dezember 2017 ==&lt;br /&gt;
=== perl Version ===&lt;br /&gt;
Gelegentlich taucht die Frage auf, welche perl Version zum Betrieb von FHEM minimal erforderlich ist. Bedauerlicherweise lässt sich das aber aktuell nicht definitiv bestimmen.&lt;br /&gt;
Rudolf König testet zur Zeit (Ende 2017) mit v5.16 (5 Jahre alt) und v5.24 (ca. 1 Jahr alt). &lt;br /&gt;
Sollte sich herausstellen, dass eines seiner Module (vor allem fhem.pl selbst) nicht mit der jeweils &#039;&#039;aktuellen&#039;&#039; perl Version funktioniert, so wird das Modul entsprechend kompatibel gemacht.&lt;br /&gt;
Andererseits verwendet Rudolf König nach eigener Aussage (bewusst) keine Features, die eine höhere Version als perl 5.8.3 (immerhin älter als 13 Jahre) voraussetzen. Tatsächlich zeigen aktuelle Installation auf relativ alten BuffaloLinkstation Systemen, dass FEHM mit perl 5.8.3 prinzipiell lauffähig ist.&lt;br /&gt;
&lt;br /&gt;
Rudolf König prüft als Maintainer von fhem.pl aber nicht, welche Mindestversionen andere Entwickler in Ihren Modulen benötigen. Es ist daher möglich oder sogar wahrscheinlich, das einzelne Module höhere Versionen als 5.8.3 benötigen.&lt;br /&gt;
&lt;br /&gt;
Es gibt aktuell keinen Weg, die Mindestanforderungen z.b. automatisiert zu ermitteln.&lt;br /&gt;
&lt;br /&gt;
== November 2017 ==&lt;br /&gt;
=== Grundlastmodul ===&lt;br /&gt;
Mit einem Grundlastmodul ist es möglich, LED Leuchtmittel an einem Schaltaktor / Dimmer zu betreiben. Dies ist bei manchen nicht möglich, da einige LEDs nachglimmen oder flackern. Das Grundlastmodul, welches parallel zum Verbraucher angeschlossen wird, kann diesen Effekt aufheben, da ein Verbraucher mit ohmscher Last simuliert wird.&lt;br /&gt;
Das Modul ermöglicht eventuell auch den Betrieb eines [[RSL 2-Draht Einbauschalter]]s, der bei LED Leuchtmitteln ansonsten nicht eingesetzt werden kann, da zum Betrieb eine Restspannung über den Verbraucher benötigt wird, der bei LED Lampen mit Vorschaltgerät nicht vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
In Frage kommt z.b. ein Eltako ELTA Grundlastelement GLE / PTC, das ca. 5-8 Euro kostet.&lt;br /&gt;
Technisch handelt sich dabei um einen PTC, also einen Widerstand mit positivem Temperaturkoeffizient, d.h. der Widerstand sinkt deutlich, wenn das Element kälter wird. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das genannte Grundlastelement hat folgende Daten: &lt;br /&gt;
 Kaltwiderstand: 3500 Ω&lt;br /&gt;
 Einschaltstrom bei 230 V: 65 mA (ca. 15 W)&lt;br /&gt;
 Verlustleistung nach 60 Sekunden: 0,65 W &lt;br /&gt;
&lt;br /&gt;
Im kalten Zustand lässt der PTC bei 230 Volt einen Strom von ca. 0,065 Ampere zu.  &lt;br /&gt;
Das reicht, um von Schaltaktoren, Freischaltern, Dimmern etc. als die erforderliche Grundlast erkannt zu werden.&lt;br /&gt;
Wird der Stromkreis eingeschaltet, fliesst auch tatsächlich Strom durch den PTC, der sich dadurch schnell erwärmt (das Element wird tatsächlich sogar relativ heiss). Dadurch steigt steigt der Widerstand auf ca 50000-60000 Ohm an und die Verlustleistung sinkt auf unter 1 Watt. Der PTC regelt sich jetzt selber auf eine bestimmte Temperatur und Widerstand ein.&lt;br /&gt;
&lt;br /&gt;
Wird ausgeschaltet, so fliest über den PTC immer noch ein kleiner Reststrom von ca 0,005 Ampere, der als Grundlast reicht, um z.b. Spannungen abzubauen, die LEDs nachflackern lassen, dieser steigt mit Erkalten rasch an, dadurch werden auch Schalter wie die [[RSL 2-Draht Einbauschalter]] mit genug Strom versorgt.&lt;br /&gt;
&lt;br /&gt;
Theoretisch kann also auch ein PTC mit diesen Werten und einer Leistung von ca. 20 Watt selbst gebaut werden, der Preis der Einzelteile liegt bei unter 2 Euro. Das Eltako Element ist bereits mit Isolierung und Anschlussleitungen versehen, mit eigner Arbeitszeit ist der Preisvorteil beim Selberbau also gering.&lt;br /&gt;
&lt;br /&gt;
== Februar 2017 ==&lt;br /&gt;
=== at Zeiten ===&lt;br /&gt;
 at 03:00      -&amp;gt;  1x um 3 Uhr (wann immer das nächste mal 3 Uhr ist, ggf. erst morgen)&lt;br /&gt;
 at *03:00     -&amp;gt;  jeden Tag um 3 Uhr&lt;br /&gt;
 at +03:00     -&amp;gt;  in 3 Stunden&lt;br /&gt;
 at +*03:00    -&amp;gt;  in 3 Stunden und dann alle 3 Stunden erneut&lt;br /&gt;
 at +*{4}03:00 -&amp;gt;  in 3 Stunden und dann alle 3 Stunden erneut, aber nur 4x ausführen.&lt;br /&gt;
&lt;br /&gt;
== Oktober 2016 ==&lt;br /&gt;
=== Grundlagen der Heizungssteuerung ===&lt;br /&gt;
Der Artikel [[Grundlagen der Heizungssteuerung]] soll einen zentralen Einstiegspunkt und eine Übersicht der Möglichkeiten insb. für Neulinge in FHEM bieten.&lt;br /&gt;
&lt;br /&gt;
=== Batterieüberwachung für Geräte ohne Batteriestatus ===&lt;br /&gt;
Es gibt Möglichkeiten um auch bei Geräten ohne Batteriestatus-Reading eine schwache Batterie erkennen zu können: [[Batterie%C3%BCberwachung#Ger.C3.A4te_ohne_Batteriestatus|Geräte ohne Batteriestatus]].&lt;br /&gt;
&lt;br /&gt;
== Mai 2016 ==&lt;br /&gt;
=== DbLog reparieren ===&lt;br /&gt;
Sollte ein fhem mit DbLog Probleme machen, oder auf der SQL-Konsole Fehler werfen, so ist eine Reparatur der DB fällig. Das ist auf der Kommandozeile verhältnismäßig einfach möglich und wird im Kapitel [[DbLog#Datenbank reparieren]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
=== DbLog bearbeiten ===&lt;br /&gt;
Unerwünschte Einträge in den Loggings treten immer wieder mal auf. Wie man dies in einer Datenbank korrigiert, dazu gibt das Kapitel [[DbLog#Bearbeitung von Datenbank-Einträgen]] eine erste Einführung.&lt;br /&gt;
&lt;br /&gt;
=== Pollenflug ===&lt;br /&gt;
In dieser schönen Jahreszeit werden manche durch Heuschnupfen geplagt. Auf der Seite [[Pollenflug]] wird beschrieben, wie man eine Pollenvorhersage in fhem einbinden kann - hilft zwar nicht gegen das Niesen, ist aber trotzdem ganz informativ... ;-)&lt;br /&gt;
&lt;br /&gt;
== April 2016 ==&lt;br /&gt;
=== HomeMatic und VCCU ===&lt;br /&gt;
HomeMatic Nutzer sollten unbedingt eine [[Virtueller Controller VCCU|VCCU]] einrichten und nutzen.&lt;br /&gt;
Die Einrichtung ist unaufwändig und schafft jede Menge Vorteile, auch beim Einsetzen nur einer Schnittstelle wie z.B. einem [[HM-CFG-LAN LAN Konfigurations-Adapter]]. Auch die nachträglich Einrichtung ist problemlos, sofern vorher nur ein I/O Gerät (&amp;quot;Funkschnittstelle&amp;quot;) verwendet wurde.&lt;br /&gt;
&lt;br /&gt;
== Dezember 2015 ==&lt;br /&gt;
===defmod===&lt;br /&gt;
In vielen Fällen will man mit einer Aktion gleichzeitig eine andere Aktion bereits für später festlegen, z.b. nach Einschalten  einer Heizung durch einen Bewegungsmelder diese eine Stunde später wieder ausschalten.&lt;br /&gt;
&lt;br /&gt;
Dies kann z.B. durch ein Konstrukt dieser Art erledigt werden:&lt;br /&gt;
:&amp;lt;code&amp;gt;define Heizung_an notify Bewegung set HZG_WZ desired-temp 22 ;; define reset_Heizung at +01:00:00 set HZG_WZ desired-temp 16&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nachteilig ist, dass bei einer weiteren Auslösung des Bewegungsmelders die Heizzeit nicht verlängert wird, da eine Neudefinition von &#039;&#039;&#039;reset_Heizung&#039;&#039;&#039; mit der Fehlermeldung &#039;&#039;&#039;reset_Heizung already exists, delete it first&#039;&#039;&#039; quittiert wird. Die Lösung bisher war, das alte &#039;&#039;&#039;reset_Heizung&#039;&#039;&#039; zunächst zu löschen und dann erneut mit neuem Zeitstempel anzulegen:&lt;br /&gt;
:&amp;lt;code&amp;gt;define Heizung_an notify Bewegung set HZG_WZ desired-temp 22 ;; delete reset_Heizung ;; define reset_Heizung at +01:00:00 set HZG_WZ desired-temp 16&amp;lt;/code&amp;gt;&lt;br /&gt;
Aber auch dieses umständliche Konstrukt hat noch einen Nachteil: Es erzeugt bei einer ersten Auslösung eine Fehlermeldung, weil &#039;&#039;&#039;reset_Heizung&#039;&#039;&#039; noch nicht exisitert und daher nicht gelöscht werden kann.  Dies liesse sich abfangen, was die Konstruktion weiter verkomplizieren würde.&lt;br /&gt;
&lt;br /&gt;
Daher hat Rudolf König mit FHEM 5.6 den neuen Befehel &amp;quot;defmod&amp;quot; eingeführt, der ein noch nicht existieredendes define neu anlegt (wie &amp;quot;define&amp;quot;), eine bereits vorhandenes aber direkt ändert (wie &amp;quot;delete&amp;quot; und danach &amp;quot;define&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Dadurch lässt sich verkürzt schreiben:&lt;br /&gt;
:&amp;lt;code&amp;gt;define Heizung_an notify Bewegung set HZG_WZ desired-temp 22 ;; defmod reset_Heizung at +01:00:00 set HZG_WZ desired-temp 16&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== April 2015 ==&lt;br /&gt;
===FS20 Timer===&lt;br /&gt;
FS20 Aktoren beherrschen zwei verschiedene Timer-Methoden.&lt;br /&gt;
&lt;br /&gt;
Angenommen ein FS20 Device heisse &amp;quot;Lampe&amp;quot; und sei z.B. ein [[FS20_SU_Unterputz-Funk-Schalter|FS20 SU]] (Unterputzschalter), dann kann man mit FHEM sowohl &lt;br /&gt;
:&amp;lt;code&amp;gt; set Lampe on-for-timer 30&amp;lt;/code&amp;gt;&lt;br /&gt;
verwenden um die Lampe 30 Sekunden einzuschalten, aber auch zunächst in den FS20 SU die maximale Einschaltdauer einprogrammieren:&lt;br /&gt;
:&amp;lt;code&amp;gt; set Lampe timer 30&amp;lt;/code&amp;gt;&lt;br /&gt;
Dannach wird jedes normale&lt;br /&gt;
:&amp;lt;code&amp;gt; set Lampe on&amp;lt;/code&amp;gt;&lt;br /&gt;
die Lampe für nur 30 Sekunden einschalten.&lt;br /&gt;
&lt;br /&gt;
Als Timerwerte kommen in beiden Fällen die bekannten [[Trick_der_Woche#FS20_Timerzeiten|128 Sekundenwerte]] von 0,25 Sekunden bis Etwa 4,5 Stunden in Frage.&lt;br /&gt;
&lt;br /&gt;
Es ist offenbar nicht bei allen Aktoren möglich einen einmal eingestellten Timer zu löschen, neue Werte eingeben aber sehr wohl.&lt;br /&gt;
&lt;br /&gt;
Mehr hier: [[FS20_Allgemein#Gerätetimer setzen / löschen|FS20 timer]].&lt;br /&gt;
&lt;br /&gt;
== Februar 2015 ==&lt;br /&gt;
=== 1-wire am GPIO4-Port des RaspberryPi funktioniert nicht mehr nach Systemupdate ===&lt;br /&gt;
Es kann passieren, dass nach einem Systemupdate (apt-get update oder apt-get dist-upgrade) die 1-wire-Geräte am GPIO4-Port plötzlich nicht mehr funktionieren. Eine Problemlösung dazu ist im Artikel &amp;quot;[[Raspberry Pi und 1-Wire#1-wire am GPIO4-Port funktioniert nicht mehr nach Systemupdate]]&amp;quot; beschrieben.&lt;br /&gt;
&lt;br /&gt;
=== Backup der Konfiguration (fhem.cfg und fhem.state) bei jedem &amp;quot;save&amp;quot; ===&lt;br /&gt;
Der nachfolgende Codeschnipsel erstellt bei jedem &amp;quot;save&amp;quot; eine Kopie der aktuellen [[Konfiguration]] (fhem.cfg und fhem.state) in ein Verzeichnis &amp;quot;backup_cfg-state&amp;quot; welches unter /opt/fhem/ zu finden ist. Somit kann bei einem Fehler jederzeit auf den letzten Stand zurückgegangen werden.&lt;br /&gt;
Zuerst ins FHEM Befehlsfeld den folgenden Befehl eingeben:&lt;br /&gt;
:&amp;lt;code&amp;gt;{ `mkdir backup_cfg-state` } &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach folgendes [[notify]] anlegen:&lt;br /&gt;
 define backupCfg notify global:SAVE {\&lt;br /&gt;
 my $now = TimeNow();; $now =~ s/ /_/g;; \&lt;br /&gt;
 `cp $attr{global}{configfile} ./backup_cfg-state/fhem.cfg.$now`;;\&lt;br /&gt;
 `cp $attr{global}{statefile} ./backup_cfg-state/fhem.state.$now`;;\&lt;br /&gt;
 } &lt;br /&gt;
&lt;br /&gt;
Quelle: {{Link2Forum|Topic=30873|Message=234412|LinkText=FHEM-Forum}}&lt;br /&gt;
&lt;br /&gt;
== Januar 2015 ==&lt;br /&gt;
=== CUL &amp;amp; CO über Serial ID-einbinden ===&lt;br /&gt;
Bei mehreren USB-Geräten kann es vorkommen, dass sie vertauscht werden z.B. &#039;&#039;/dev/ttyUSB0&#039;&#039; zu&#039;&#039; /dev/ttyUSB1&#039;&#039; oder &#039;&#039;/dev/ttyACM0&#039;&#039; zu &#039;&#039;/dev/ttyACM1&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Um dies zu umgehen, kann man sie über ihre Serial-ID in FHEM einbinden.&lt;br /&gt;
&lt;br /&gt;
Dieser Befehl zeigt die Serial-ID:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;ls -l /dev/serial/by-id&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier die Beispielausgabe eines CUL868, JeeLink, RFXtrx und eines CUL433&lt;br /&gt;
&lt;br /&gt;
 user@xxxx:~# ls -l /dev/serial/by-id&lt;br /&gt;
 lrwxrwxrwx 1 root root 13 Jan  9 23:34 usb-busware.de_CUL868-if00 -&amp;gt; ../../ttyACM0&lt;br /&gt;
 lrwxrwxrwx 1 root root 13 Jan  9 13:26 usb-FTDI_FT232R_USB_UART_A901RQ9F-if00-port0-&amp;gt; ../../ttyUSB0&lt;br /&gt;
 lrwxrwxrwx 1 root root 13 Jan  9 13:26 usb-RFXCOM_RFXtrx433_A1WZWL5Y-if00-port0-&amp;gt; ../../ttyUSB1&lt;br /&gt;
 lrwxrwxrwx 1 root root 13 Jan  9 21:29 usb-busware.de_CUL433-if00 -&amp;gt; ../../ttyACM1 &lt;br /&gt;
&lt;br /&gt;
Damit lässt sich folgende Definition erstellen:&lt;br /&gt;
&lt;br /&gt;
z.B. für einen CUL868&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define CUL868 CUL /dev/serial/by-id/usb-busware.de_CUL868-if00@9600 1134&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oder einen JeeLink&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define Jeelink JeeLink /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A901RQ9F-if00-port0@57600&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Einschränkung:&#039;&#039;&#039; Bei CULs von Busware lassen sich nur CUL433 und CUL868 unterscheiden. Zwei CUL868 haben z.B. immer die gleiche Serial-ID.&lt;br /&gt;
&lt;br /&gt;
=== HM LAN Konfig-Adapter Antenne verbessern===&lt;br /&gt;
Die Antenne des [[HM-CFG-LAN LAN Konfigurations-Adapter]] kann man mit etwas Bastelgeschick verlängern um den Empfang zu verbessern. &lt;br /&gt;
&lt;br /&gt;
Sinnvoll ist die Verlängerung auf 1/2 Lambda  (868MHz = 17,27 cm) oder gar 1 Lambda.&lt;br /&gt;
1 Lambda Antennen haben starke Richtwirkung in Form eines gedachten Zylinders, dessen Mittelachse die Antenne ist.&lt;br /&gt;
D.h., Alles was sich in Richtung des Anfangs und des Endes des Antennedrahtes befindet, hat schlechteren Empfang als mit einer kurzen Antenne. Daher muss man die Antenne ggf. genauer ausrichten.&lt;br /&gt;
&lt;br /&gt;
Anleitungen dazu werden an verschiedenen Stellen veröffentlicht, z.B. in &lt;br /&gt;
[http://www.ip-symcon.de/forum/threads/18411-Umbau-HM-LAN-Adapter-auf-Lambda-1-2-Dipol-Antenne diesem Beitrag] im IP-Symcon Forum (anders als der Namen der Anleitung vermuten lässt, liegt hier kein Dipol vor, sondern eine &amp;quot;normale&amp;quot; 1 Lambda Antenne.)&lt;br /&gt;
&lt;br /&gt;
Prinzipiell so dünnen Draht wie möglich verwenden.&lt;br /&gt;
&lt;br /&gt;
Wer noch mehr rausholen will, kann auch zusätzlichen Aufwand betreiben und die Antenne etwas von der Elektronik entfernen, die nämlich Störstrahlung in die Antenne einkoppelt. Oder eine Groundplane bauen.&lt;br /&gt;
Ein Anleitung für die CCU (analog auch für den HM LAN Konfig-Adapter einsetzbar) gibt es [http://www.techwriter.de/beispiel/funkeige.htm hier].&lt;br /&gt;
&lt;br /&gt;
== Dezember 2014 ==&lt;br /&gt;
=== FHT80TF als &amp;quot;Prüfsender&amp;quot; einsetzen  ===&lt;br /&gt;
Da der [[FHT80TF-2]] günstig ist und seinen Zustand ca. alle zwei Minuten sendet, kann er gut zum Ermitteln der Funklage von [[SlowRF]] Komponenten genutzt werden, auch wenn diese nicht senden. Den RSSI einer FS20 Schaltsteckdose kann man z.B. nicht wissen, da die Dose nur ein Empfänger ist. Wenn eine Dose nicht gut funktioniert und man den Verdacht hat, dass sie funktechnisch ungünstig liegt, kann man einen [[FHT80TF-2]] neben die Steckdose legen und man bekommt nach zwei Minuten einen Wert, der (trotz umgekehrter Funkrichtung) gut genug ist, um einem Hinweise zu geben.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== November 2014 ==&lt;br /&gt;
=== FS20 Adressschema und die Rolle des Hauscodes  ===&lt;br /&gt;
[[FS20_Allgemein#FS20_Adressierungsschema_.28Vorschlag.29]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Oktober 2014 ==&lt;br /&gt;
=== Aktor für Wanddosen ohne Nulleiter  ===&lt;br /&gt;
Es gibt viele Aktoren die man in Einbaudosen hinter Schaltern einbauen kann. Oft scheitert deren Nutzung aber daran, dass in vielen Elektroinstalltionen in der Einbaudose eines (Licht)schalters kein Neutralleiter (Nulleiter) verlegt ist, den die meisten Aktoren zur eigenen Stromversorgung brauchen. Hier kann der [[RSL 2-Draht Einbauschalter]] helfen, der auch ohne Neutraleiter funktioniert und kompatibel zu InterTechno ist. Er lässt sich z.B. mit einem CUL(433) schalten. Problematisch ist damit allerdings das Schalten von LED Lampen.&lt;br /&gt;
&lt;br /&gt;
== August 2014 ==&lt;br /&gt;
=== Perl-Skripte Online testen  ===&lt;br /&gt;
Im Internet existieren Webseiten auf denen man Perl-Code online testen kann. Beispielsweise auf [http://www.tutorialspoint.com/execute_perl_online.php codingground] kann man Code zum Testen eingeben und die Auswirkungen betrachten. Dies eignet sich zur schnellen Fehleranalyse oder um Perl zu lernen. Natürlich lassen sich keine FHEM-Besonderheiten nutzen.&lt;br /&gt;
&lt;br /&gt;
== Juli 2014 ==&lt;br /&gt;
=== Funklast reduzieren===&lt;br /&gt;
Bewegungsmelder erzeugen in der Regel eine recht hohe Funklast, wenn sie oft ausgelöst werden, also z.B. Licht in einem Zimmer schalten sollen.&lt;br /&gt;
&lt;br /&gt;
Konstruktionen der Art:&lt;br /&gt;
:&amp;lt;code&amp;gt;define FlurLicht notify Bewegungsmelder_Flur:motion:.* set Licht_Flur on-for-timer 256&amp;lt;/code&amp;gt;&lt;br /&gt;
haben daher den Nachteil bei viel Bewegung im Flur und je nach Einstellung des Sendeabstandes des Bewegungsmelders mindestens alle 120 Sekunde oder öfter ein &lt;br /&gt;
:&amp;lt;code&amp;gt;on-for-timer 256&amp;lt;/code&amp;gt;&lt;br /&gt;
zu senden. Das erzeugt eine hohe Funklast, speziell wenn der Aktor ein SlowRF Gerät ist (z.B. FS20 Unterputzschalter).&lt;br /&gt;
In solchen Fällen kann es helfen, nur dann einen Befehl zu senden, wenn das Licht nicht schon an ist:&lt;br /&gt;
:&amp;lt;code&amp;gt;define FlurLicht notify Bewegungsmelder_Flur:motion:.* { if (Value(&amp;quot;Licht_Flur&amp;quot;) eq &amp;quot;off&amp;quot;) { fhem (&amp;quot;set Licht_Flur1 on-for-timer 256&amp;quot;) } }&amp;lt;/code&amp;gt;&lt;br /&gt;
Nachteilig ist aber, dass eine Auslösung innerhalb 256 Sekunden die Einschaltzeit nicht verlängert. Dies kann man umgehen, indem man nicht on-for-timer verwendet, sondern den Aktor selber verzögert auschaltet und bei weiteren Auslösungen nur die Verzögerung erneut anlegt:&lt;br /&gt;
:&amp;lt;code&amp;gt;define FlurLicht notify Bewegungsmelder_Flur:motion:.* { if (Value(&amp;quot;Licht_Flur1&amp;quot;) eq &amp;quot;off&amp;quot;) { fhem (&amp;quot;set Licht_Flur on ;; define FlurLicht_aus at +00:04:16 set Licht_Flur off&amp;quot;) } else { fhem (&amp;quot;delete FlurLicht_aus ;; define FlurLicht_aus at +00:04:16 set Licht_Flur off&amp;quot;) }}&amp;lt;/code&amp;gt;&lt;br /&gt;
Durch den relativ neuen Befehl &amp;quot;defmod&amp;quot; kann ausserdem das Löschen und neu Anlegen zusammengefasst werden, sieh Tipp Dezember 2015&lt;br /&gt;
&lt;br /&gt;
== Juni 2014 ==&lt;br /&gt;
=== Batteriestatus bei HomeMatic Devices aktivieren===&lt;br /&gt;
Zumindest einige (wenn nicht alle) batteriegespeisten HM-Geräte können Batteriemeldungen senden, tun dies in der normalen Konfiguration aber nicht.&lt;br /&gt;
Dazu muss das Register cyclicInfoMsg auf on gesetzt werden. &lt;br /&gt;
&lt;br /&gt;
Wie man das macht steht z.B. hier&lt;br /&gt;
[[HM-SEC-SC_Tür-Fensterkontakt#Batteriestatus_aktivieren]]&lt;br /&gt;
und hier&lt;br /&gt;
[[HomeMatic_Type_ThreeState]]&lt;br /&gt;
&lt;br /&gt;
== Mai 2014 ==&lt;br /&gt;
=== Dummywert mit aktueller Uhrzeit versehen in anderen Dummy kopieren===&lt;br /&gt;
Der Inhalt von Dummy1 soll erweitert um  Uhrzeit und Datum in Dummy2 kopiert werden (z.B. um die Urzeit der letzten Auslösung einer Alarmanlage anzuzeigen)&lt;br /&gt;
:&amp;lt;code&amp;gt;{ fhem(&amp;quot;set dummy2 &amp;quot; . (Value(&amp;quot;Dummy1&amp;quot;).&amp;quot; &amp;quot;.TimeNow()) )  } &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Zwei Dummywerte in einen anderen Dummy kopieren ===&lt;br /&gt;
Der String in Dummy1 soll um den String in Dummy2 erweitert und nach Dummy3 kopiert werden:&lt;br /&gt;
:&amp;lt;code&amp;gt;{ fhem(&amp;quot;set Dummy3 &amp;quot;.(Value(&amp;quot;Dummy1&amp;quot;)+Value(&amp;quot;Dummy2&amp;quot;))) } &amp;lt;/code&amp;gt;&lt;br /&gt;
(Achtung: &amp;quot;+&amp;quot;  ist Zahlen addieren, &amp;quot;.&amp;quot; ist String konkatenieren / verketten)&lt;br /&gt;
&lt;br /&gt;
== April 2014==&lt;br /&gt;
=== Code sparen ===&lt;br /&gt;
Wer Definitionen wie die aus dem März zum [[Trick der Woche#Zuverlässigkeit von FS20 Schaltungen erhöhen|Abfangen von Fehlbedienungen]] verwendet, kann durch eine ELSE Erweiterung auch gleich das Auschalten erledigen.&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_TV_on notify TV { if (&amp;quot;$EVENT&amp;quot; eq &amp;quot;on&amp;quot; || &amp;quot;$EVENT&amp;quot; eq &amp;quot;dimup&amp;quot;) { fhem(&amp;quot;set TV on&amp;quot;) } else { fhem(&amp;quot;set TV off&amp;quot;) } }&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hierdurch schaltet ON oder versehentlich zu langes Drücken (also DIMUP) den Fernseher ein, jeder &#039;&#039;andere&#039;&#039; Tastendruck (also insbesondere die OFF Taste oder zu langes Drücken der OFF Taste -&amp;gt; DIMDOWN) den Fernseher aus.&lt;br /&gt;
&lt;br /&gt;
Voraussetzung ist, dass die Fernbedienung standardkonfiguriert ist, siehe auch nächster Tip.&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration eines FS20 Senders prüfen ===&lt;br /&gt;
Gelegentlich reagieren bestimmte notifys nicht, die von Sendern (Fernbedienungen, Sensoren oder Schaltern) ausgelöst werden sollen. Speziell bei FS20 aber auch bei HomeMatic kann das daran liegen, dass der Sender nicht sendet was man denkt. So gut wie alle FS20 Sender kennen nämlich nicht nur ON und OFF, sondern über ein Dutzend Schaltzustände. Dimmen ist einem noch hinreichend bewusst, es gibt aber auch exotische Dinge wie  Ein-für-Zeitdauer, Ein-auf-alte-Helligkeit, Aus-für-Zeitdauer (nur FS20), Ein-für-Zeitdauer-dannach-alter-Zustand und vieles mehr.&lt;br /&gt;
&lt;br /&gt;
Was also ein Infrarot-Bewegungsmelder bei Auslösung sendet und auch was eine Fernbedienungstaste sendet ist einstellbar. Wenn jetzt zum Beispiel an einer Fernbedienung auf Tastendruck nicht ON sondern Ein-für-Zeitdauer (ON-FOR-TIMER) gesendet wird, wird&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_TV_on notify TVFB:on set TV on&amp;lt;/code&amp;gt;&lt;br /&gt;
seltsamerweise nicht auslösen, obwohl die richtige Taste (und diese auch nicht zu lang) gedrückt wurde.&lt;br /&gt;
&lt;br /&gt;
Auch wenn man sich sicher ist, das Richtige in die Fernbedienung/Sensoren einprogramiert zu haben, ist ein einfacher Test immer, dies mit&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_TV notify TVFB set TV on&amp;lt;/code&amp;gt;&lt;br /&gt;
zu prüfen. Dieses notify löst immer aus, wenn &amp;quot;TVFB&amp;quot;  &#039;&#039;irgendetwas&#039;&#039; sendet, egal was. (Beachte: Man kann dann den Fernseher aber nicht mehr ausschalten, da auch die Austaste das notify auslöst und zum TV-Aktor nur &amp;quot;on&amp;quot; sendet). &lt;br /&gt;
&lt;br /&gt;
Geht die Schaltung jetzt (kann man den Fernseher also jetzt EINschalten), liegt der Verdacht nahe, dass die Konfiguration des Senders / Sensors anders ist, als man denkt. Das Logfile, der EventMonitor oder ein Beobachtung von FHEM per Telnet mittels &amp;quot;inform&amp;quot; gibt Aufschluss, welcher Befehl tatsächlich empfangen wurde.&lt;br /&gt;
&lt;br /&gt;
== März 2014==&lt;br /&gt;
=== Zuverlässigkeit von FS20 Schaltungen erhöhen ===&lt;br /&gt;
FS20 Fernbedienungen senden bei Tastendrücken von mehr als 0,4 Sekunden anstatt ON bzw. OFF DIMUP bzw DIMDOWN.(Auch einige FBs anderer Systeme verhalten sich ähnlich)&lt;br /&gt;
&lt;br /&gt;
Das führt gelegentlich zu allgemein schlechter Bedienbarkeit (und schlechtem WAF), da 0,4 Sekunden relativ kurz ist und gerne aus versehen länger gedrückt wird. Das ist vor allem problematisch, wenn etwas geschaltet werden soll, was keinen Dimmer hat oder Dimmen nicht unterstützt.&lt;br /&gt;
&lt;br /&gt;
Eine Konfiguration wie &lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_TV_on notify TVFB:on set TV on&amp;lt;/code&amp;gt;&lt;br /&gt;
hat also dann den Nachteil, dass bei versehentlich zu langem Tastendruck auf die Fernbedienung das TV nicht angeht. Da die meisten Nutzer unbewusst dazu neigen, bei Misserfolg die selbe Taste erneut aber länger zu drücken (was erneut keinen Erfolg zeigt) ist Frustration zu erwarten.&lt;br /&gt;
&lt;br /&gt;
Es kann daher speziell bei nicht dimmbaren Aktoren von Vorteil sein, auch dimmen abzufangen, z.B. durch eine zweite zusätzliche Definition:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_TV_dimup notify TVFB:dimup set TV on&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es ist in der Regel einfacher, einige dieser zusätzlichen Definitionen einzufügen, als allen Bedienern des Systems zu erklären, dass man keinesfalls länger als 0,4 Sekunden drücken darf.&lt;br /&gt;
&lt;br /&gt;
Alternativ kann man auch beide Befehle in einer Definition durch Perlbefehle {} abfangen:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_TV_on notify TVFB { if (&amp;quot;$EVENT&amp;quot; eq &amp;quot;on&amp;quot; || &amp;quot;$EVENT&amp;quot; eq &amp;quot;dimup&amp;quot;) { fhem(&amp;quot;set TV on&amp;quot;) }}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Allerdings hat dies den Nachteil, dass jedes Event dieses define durchläuft und erst später geprüft wird, ob das Event überhaupt irgendetwas auslöst. &lt;br /&gt;
Z.B. wird&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_TV_on notify TVFB ...&amp;lt;/code&amp;gt; &lt;br /&gt;
auch durch TVFB off ausgelöst (oder unter bestimmten Bedungen sogar duch alle Events), nur um dann nach dem Perl Test festzustellen, dass doch nichts getan werden soll.&lt;br /&gt;
&lt;br /&gt;
Ressourcenschonender ist daher:&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_TV_on notify TVFB:on|TVFB:dimup set TV on &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Andere Möglichkeiten vergleiche: [[Trick der Woche#notify durch mehrere Ereignisse auslösen lassen|Notify durch mehrere Ereignisse auslösen lassen]] und [[Trick der Woche#Performance_von_Notifys|Performance von Notifys]]&lt;br /&gt;
&lt;br /&gt;
== Februar 2014==&lt;br /&gt;
=== Sequence nutzen ===&lt;br /&gt;
Man kann Aktionen statt mit einem Tastedruck auch mit einer Sequenz von Tastendücken auslösen. Das Format des Befehle ist:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define &amp;lt;name&amp;gt; sequence &amp;lt;re1&amp;gt; &amp;lt;timeout1&amp;gt; &amp;lt;re2&amp;gt; [&amp;lt;timeout2&amp;gt; &amp;lt;re3&amp;gt; ...] &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
wobei &amp;lt;re1&amp;gt; ...&amp;lt;re_n&amp;gt; die Aktionen sind und &amp;lt;timeout_n&amp;gt; der maximale Abstand der Tastendrücke in Sekunden.&lt;br /&gt;
&lt;br /&gt;
Angenommen, man wolle z.B. eine Lampe dann anschalten, wenn man zuerst Taste1 EIN, dann Taste2 AUS und dann wieder Taste1 EIN einer Fernbedienung drückt, könnte das konkret so aussehen:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define MeineLampenSequenz1 sequence Btn1:on 0.5 Btn2:off 0.5 Btn1:on&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zwischen jedem der Tastendrücke darf eine halbe Sekunde Abstand sein. Diese Definition selbst löst die Lampe nicht aus, sondern definiert nur wie die Sequenz aussehen soll. Um die Lampe bei erfolgreicher Betätigung der Sequenz auch einzuschalten, bedarf es zusätzlich etwas wie:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define MeineLampe notify MeineLampenSequenz1:trigger set Lampe on&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sequence kann man gut nutzen, um mit einer Fernbedienung mehr Funktionen zu schalten als Tasten zur Verfügung stehen. Ebenso könnte man damit simple Codeschlösser für Alarmanlagen bauen, z.B. um eine Anlage auszuschalten, wenn eine bestimmte Abfolge von Tasten gedrückt wird.&lt;br /&gt;
&lt;br /&gt;
Je nach Funksystem nimmt die Zuverlässigkeit aber rasch ab. Angenommen im Bereich FS20 (das System ist etwas unzuverlässiger ist als z.B. HomeMatic) seien 95% aller Funktsignale ungestört übertragbar, dann würden in der Praxis von 100 Tastendrücken an einer Fernbedienung 95x Erfolg zeigen und 5x fehlschlagen; das ist sicher tolerabel. &lt;br /&gt;
&lt;br /&gt;
Bei einer Sequenzlänge von nur 4 Tasten würde die kombinierte Erfolgsquote der Sequenz jedoch nur noch ca. 80% sein, zum Ausschalten einer Alarmanlage vermutlich bereits unpraktisch.&lt;br /&gt;
&lt;br /&gt;
== Januar 2014==&lt;br /&gt;
===isday===&lt;br /&gt;
Bekanntlich kann man  mit &amp;quot;isday&amp;quot; leicht testen ob es draussen hell ist oder nicht. isday ist eine Funktion des (automatisch geladenen) Moduls [[SUNRISE_EL]], das auch sunset und sunrise enthält.&lt;br /&gt;
&lt;br /&gt;
Problematisch bei isday ist die fehlende Möglichkeit, Sonnenaufgang und Untergang einzustellen (zumindest wenn man nicht 99_SUNRISE_EL.pm verändern will): isday ist wahr, wenn die Sonne im gegebenen Breitengrad theoretisch sichtbar ist. Wenn örtliche Gegebenheiten (Bebauung, Bäume, Tal etc.) eine Anpassung erfordern, kann man sich auch ein eigenes isday basteln, in dem man sunrise und sunset verwendet und dieses mit getrennten offsets versieht.&lt;br /&gt;
&lt;br /&gt;
Zuerst definiert man sich eine Variable (&amp;quot;dummy&amp;quot;) der anstelle isday eingesetzt werden soll, z.B.:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define Tageslicht dummy &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann wird diese mit sunset und sunrise befüllt:&lt;br /&gt;
&lt;br /&gt;
 define SetDummy1 at *{sunset(-3600)} set Tageslicht hell &lt;br /&gt;
 define SetDummy2 at *{sunrise(+1800)} set Tageslicht dunkel &lt;br /&gt;
&lt;br /&gt;
Jetzt kann für jeden Wechsel ein eigener Offset gewählt werden, im Beispiel 3600 Sekunden vor Sonnenuntergang und 1800 Sekunden nach Sonnenaufgang. Anstatt das Dummy &amp;quot;Tageslicht&amp;quot; mit den Werten &amp;quot;hell/dunkel&amp;quot; zu befüllen, kann natürlich auch 1/0 oder &amp;quot;Tag/Nacht&amp;quot; etc. verwendet werden, je nachdem was bei der Anwendung besser passt.&lt;br /&gt;
&lt;br /&gt;
Für höhere Ansprüche könnte hingegen das [[Twilight]]-Modul verwendet werden, das Dämmerungsstufen kennt.&lt;br /&gt;
&lt;br /&gt;
===Struktur von &amp;quot;else if&amp;quot; Verzweigungen===&lt;br /&gt;
 define ... notify ... {\&lt;br /&gt;
  if ... {\&lt;br /&gt;
   fhem (&amp;quot;... ;; ...&amp;quot;)\&lt;br /&gt;
  }\&lt;br /&gt;
  elsif ... {\&lt;br /&gt;
    fhem (&amp;quot;... ;; ...&amp;quot;)\&lt;br /&gt;
  }\&lt;br /&gt;
  elsif ... {\&lt;br /&gt;
    fhem (&amp;quot;... ;; ...&amp;quot;)\&lt;br /&gt;
  }\&lt;br /&gt;
  else {\&lt;br /&gt;
   if ... {\&lt;br /&gt;
    fhem (&amp;quot;... ;; ...&amp;quot;)\&lt;br /&gt;
  }\&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Achtung: es muss tatsächlich &amp;quot;elsif&amp;quot; heissen und nicht &amp;quot;elseif&amp;quot; oder &amp;quot;else if&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Gilt für Perl Aufrufe. &lt;br /&gt;
Wer aktuell in FHEM neu einsteigt, kann auch den seit 2014 zur Verfügung stehenden FHEM Befehl [[DOIF]] verwenden, der komfortabler ist und zusätzliche Features aufweist.&lt;br /&gt;
&lt;br /&gt;
== Dezember 2013==&lt;br /&gt;
===notify durch mehrere Ereignisse auslösen lassen===&lt;br /&gt;
Bekanntermassen löst&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter …&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
aus, wenn irgendein Ereignis vom Sender &amp;quot;MeinSchalter&amp;quot; eintrifft.&lt;br /&gt;
&lt;br /&gt;
Mit&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:on …&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
wird das notify jedoch nur ausgelöst, wenn dieses Ereignis eine &amp;quot;on&amp;quot; ist.&lt;br /&gt;
Wenn man aber möchte, das z.B. &amp;quot;on&amp;quot; und &amp;quot;off&amp;quot; auslöst (um etwa Dim-Befehle auszuschliessen) kann dies wie folgt erreicht werden:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:(on|off) …&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Klammern sind wichtig, vergleiche eine Lösung, bei der zwei Sender alternativ das notify auslösen können:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:on|MeinAndererSchalter:on …&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Selbstverständlich geht z.B. auch folgendes:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:on|MeinAndererSchalter …&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier wird ausgelöst wenn &amp;quot;MeinSchalter&amp;quot; das Ereignis &amp;quot;on&amp;quot; liefert oder &amp;quot;MeinAndererSchalter&amp;quot; irgendein Ereignis. Beachte hierzu jedoch den Tipp vom Dezember 2020 &amp;quot;Performance von Notifys&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Aktoren über mehrere Funkschnittstellen ansprechen ===&lt;br /&gt;
Falls man mehrere Funkschnittstellen zur Reichweitenverlängerung hat (CUL / CUNO etc), und ein Aktor von beiden Funkschnittstellen in etwa gleich (schlecht) erreichbar ist, mag der Wunsch aufkommen, einen Funkbefehl über beide Schnittstellen auszusenden. Dies ist bei Funkprotokollen möglich, die kein echtes Pairing der Aktoren an die Funkschnittstelle erfordern, also z.B. FS20 oder Intertechno, nicht jedoch ohne weiteres bei HomeMatic.&lt;br /&gt;
&lt;br /&gt;
Problematisch ist aber, dass die Funkschnittstelle über IODev eindeutige je Aktor festgelegt werden muss, eine Zuordnung mehrerer IODevs ist nicht vorgesehen.&lt;br /&gt;
(wenn man IODev nicht setzt, wird per default die LETZTE definiert passende Schnittstelle verwendet)&lt;br /&gt;
&lt;br /&gt;
Dieses Problem kann mit einem Trick aber umgangen werden. Und zwar legt man den Aktor 2x mit gleicher Adresse aber abweichenden Namen und IOdevs an, z.B. so:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 define brenner_CUL1 FS20 11114244 11&lt;br /&gt;
 attr brenner_CUL1 IODev CUL1&lt;br /&gt;
 attr brenner_CUL2 room Keller&lt;br /&gt;
&lt;br /&gt;
 define brenner_CUL2 FS20 11114244 11&lt;br /&gt;
 attr brenner_CUL2 IODev CUL2&lt;br /&gt;
 attr brenner_CUL2 room Keller&lt;br /&gt;
&lt;br /&gt;
Ein Befehl der Art:&lt;br /&gt;
&lt;br /&gt;
 set brenner_CUL1,brenner_CUL2 on&lt;br /&gt;
&lt;br /&gt;
sendet den ON Befehl für den FS20 Aktor 11114244 11  jetzt tatsächlich über beide CULs aus!&lt;br /&gt;
&lt;br /&gt;
Achtung: Wenn die Schnittstellen gleichschnell angebunden sind, sollte vermutlich der [[Sendpool]] verwendet werden, da die Aussendungen sonst tatsächlich gleichzeitig erfolgen könnten und sich dann gegenseitig stören würden. Dieser Trick funktioniert ausserdem nur bei Befehlen, bei denen es im Zweifel egal ist, wenn sie beim Aktor 2x eintreffen. &lt;br /&gt;
&lt;br /&gt;
Bei HomeMatic lässt sich ein ähnlicher Effekt durch einrichten einer [[Virtueller Controller VCCU|virtuellen CCU]] erreichen.&lt;br /&gt;
&lt;br /&gt;
=== Retrycount bei FHTs ist überflüssig===&lt;br /&gt;
Das von der Funktion &#039;&#039;autocreate&#039;&#039; älterer FHEM Versionen beim Anlegen von FHT80 Heizungsreglern voreingetragene attribute &amp;quot;retrycount&amp;quot; hat in den allermeisten Fällen keine Wirkung, da es NUR greift, wenn man als Funkschnittstelle eine FHZ1X00PC verwendet und dann den Softbuffer einschaltet. Selbst wenn man diese Konfiguration nutzt, will gut überlegt werden, ob die Wirkung postiv ist: Bei ungenügender Empfangslage vergrössert es Kommunikationsprobleme eventuell sogar.&lt;br /&gt;
&lt;br /&gt;
Es kann also in der Regel entfernt oder auf den Wert &amp;quot;1&amp;quot; gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
 define Heizung_Bad FHT 060d&lt;br /&gt;
 attr Heizung_Bad retrycount 3       &amp;lt;=== Diese Zeile entfernen&lt;br /&gt;
&lt;br /&gt;
Siehe auch:[[Kommunikationsprobleme mit FHT]]&lt;br /&gt;
&lt;br /&gt;
== November 2013 ==&lt;br /&gt;
=== FS20 Funksteckdose sicherer schalten===&lt;br /&gt;
Seltsamerweise kommt es vor, das FS20 Aktoren - insbesondere die FS20 Funksteckdose - an der Grenze der Funkreichweite bestimmte Befehle eines Typs empfängt, andere aber nicht. Z.B. lässt sich die FS20 Steckdose zwar immer einschalten, aber oft nicht mehr aus (oder umgekehrt).&lt;br /&gt;
&lt;br /&gt;
Gelegentlich kann man die Zuverlässigkeit erhöhen, indem man statt dem nicht funktionierenden Befehl das Gegenteil mit &amp;quot;for-timer 1&amp;quot; verwendet.&lt;br /&gt;
&lt;br /&gt;
Im Fall, dass eine FS20 Steckdose sich also einwandfrei EINschalten lässt:&lt;br /&gt;
:&amp;lt;code&amp;gt;set SteckdoseA on&amp;lt;/code&amp;gt;&lt;br /&gt;
aber oft ein AUSschalten mittels&lt;br /&gt;
:&amp;lt;code&amp;gt;set SteckdoseA off&amp;lt;/code&amp;gt;&lt;br /&gt;
nicht funktioniert, kann man versuchen die Dose anstelle mit &amp;quot;off&amp;quot; mit dem Befehl&lt;br /&gt;
:&amp;lt;code&amp;gt;set SteckdoseA on-for-timer 1&amp;lt;/code&amp;gt;&lt;br /&gt;
auszuschalten.&lt;br /&gt;
&lt;br /&gt;
Analog kann man mit off-for-timer arbeiten, wenn sich Aktoren nicht einschalten lassen, ausschalten aber geht.&lt;br /&gt;
&lt;br /&gt;
Achtung: Dieser Trick funtioniert ausdrücklich nur, wenn der &amp;quot;on/off-for-timer&amp;quot; Befehl im Aktor selber abgebildet wird. Daher ist der Trick vermutlich nicht auf andere Funksysteme übertragbar. z.B. unterstützt HM nur on-for-timer und Intertechno kennt keinen Timer.&lt;br /&gt;
&lt;br /&gt;
=== Mehrere Geräte zugleich schalten===&lt;br /&gt;
Ein Ereignis soll mehrere Geräte schalten:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_Bewegungsmelder notify Bewegungsmelder set Lampe1 on;;set Lampe2 on;;set FunksteckdoseA on&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aus Übersichtlichkeitsgründen können vor und nach den Semikolons auch Leerzeichen eingefügt werden (obwohl in einigen Dokumentation behauptet wird, dies dürfe man nicht machen):&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_Bewegungsmelder notify Bewegungsmelder set Lampe1 on ;; set Lampe2 on ;; set FunksteckdoseA on&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn der Schaltbefehl bei allen Geräten gleich ist, kann man wie folgt zusammenfassen:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_Bewegungsmelder notify Bewegungsmelder set Lampe1,Lampe2,FunksteckdoseA on&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Komma wird nicht [[Escapen in Perlbefehlen|escaped]] (verdoppelt), hier darf tatsächlich KEIN Leerzeichen vor oder nach dem Komma eingefügt werden.&lt;br /&gt;
&lt;br /&gt;
=== Logfileinträge unterdrücken===&lt;br /&gt;
Das Attribute &amp;quot;verbose 0&amp;quot; verhindert, dass das Gerät Logfileinträge erzeugt.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 define Funksteckdose FS20 22224222 01&lt;br /&gt;
 attr Funksteckdose verbose 0&lt;br /&gt;
&lt;br /&gt;
===FHT Lazy Mode benutzen===&lt;br /&gt;
Es gibt wenig Gründe, den FHT &amp;quot;Lazy Mode&amp;quot; nicht zu verwenden&lt;br /&gt;
 define Heizung_Bad FHT 060d&lt;br /&gt;
 attr Heizung_Bad lazy&lt;br /&gt;
&lt;br /&gt;
Dieser sorgt dafür, dass Temperaturänderungen (genau genommen alle Änderungen, auch z.B. date) nur übertragen werden, wenn sie nicht sowieso schon am FHT eingestellt sind und veringern die Funklast dadurch deutlich. &lt;br /&gt;
&lt;br /&gt;
Siehe auch: [[Kommunikationsprobleme mit FHT]]&lt;br /&gt;
&lt;br /&gt;
== Oktober 2013 ==&lt;br /&gt;
=== Zuverlässigkeit von Wiedereinschalten erhöhen ===&lt;br /&gt;
Speziell bei FS20 Aktoren ist wegen des fehlenden Rückkanals nicht leicht erkennbar, ob ein Einschaltbefehl Wirkung gezeigt hat. Das bringt einen ganz schlechten WAF, wenn man z.B. mit einem FS20 Aktor eine Heizung ausschaltet und das Wiedereinschalten nach z.B. einer Stunde nicht klappt.&lt;br /&gt;
&lt;br /&gt;
Hier empfiehlt es sich, das Ausschalten mittels &lt;br /&gt;
:&amp;lt;code&amp;gt;set Heizungs_schalter off-for-timer 3584&amp;lt;/code&amp;gt;   (= fast eine Stunde)&lt;br /&gt;
zu erledigen. Da bei FS20 der off-for-timer Befehl im Aktor abgewickelt wird (und nicht durch FHEM), schaltet sich der Aktor auch dann garantiert wieder ein, wenn FHEM abstürzt, eine Funkstörung vorliegt oder ähnliches.  Bei Bedarf kann der Befehl off-for-timer zur  Verlängerung der Ausschaltzeit wiederholt werden. Dies kann z.B. nötig sein, wenn die Ausschaltung länger als 4,5 Stunden (15360 Sekunden, der Maximalwert des Timers) dauern soll.&lt;br /&gt;
&lt;br /&gt;
Achtung: dieser Trick funktioniert nur, wenn der Aktor &amp;quot;off-for-timer&amp;quot; selbst beherrscht. FS20 Geräte können das, HomeMatic können aber nur &amp;quot;on-for-timer&amp;quot;. Man kann off-for-timer mit HomeMatic trotzdem verwenden, aber in diesem Fall sendet FHEM den Einschaltbefehl nach der Timerzeit. InterTechno, RSL etc, können gar keinen Timer, hier sendet FHEM immer 2 Befehle im passenden Abstand.&lt;br /&gt;
&lt;br /&gt;
=== FS20 Timerzeiten ===&lt;br /&gt;
FS20 Timer werden in Sekunden angegeben. Es sind jedoch nicht alle Werte einstellbar. Da der Timer Wert in 7 Bit übertragen werden muss, sind nur 128 Werte möglich. Um mit diesen Werten im unteren Bereich möglichst fein aufzulösen, andererseits aber auch lange Zeiten zu ermöglichen, ist die Verteilung nicht linear. Einstellbar sind folgende Zeiten in Sekunden;&lt;br /&gt;
&lt;br /&gt;
0,25  0,5  0,75  1  1,25  1,5  1,75  2  2,25  2,5  2,75  3  3,25  3,5  3,75   &lt;br /&gt;
4  4,5  5  5,5  6  6,5  7  7,5  8  9  10  11  12  13  14  15  16  18  20  22   &lt;br /&gt;
24  26  28  30  32  36  40  44  48  52  56  60  64  72  80  88  96  104  112   &lt;br /&gt;
120  128  144  160  176  192  208  224  240  256  288  320  352  384  416   &lt;br /&gt;
448  480  512  576  640  704  768  832  896  960  1024  1152  1280  1408   &lt;br /&gt;
1536  1664  1792  1920  2048  2304  2560  2816  3072  3328  3584  3840  4096   &lt;br /&gt;
4608  5120  5632  6144  6656  7168  7680  8192  9216  10240  11264  12288   &lt;br /&gt;
13312  14336  15360 &lt;br /&gt;
(etwas übersichtlicher formatiert auch [[FS20 Allgemein#ON/OFF Befehle mit Time Parameter|hier]]).&lt;br /&gt;
 &lt;br /&gt;
Andere Zeiten werden von FHEM gerundet. Ein neues Setzen des Timer für FS20 löscht den alten Wert.&lt;br /&gt;
&lt;br /&gt;
Auch HomeMatic Aktoren beherrschen Time Parameter, im Gegensatz zu FS20 allerdings kein &amp;quot;off-for-timer&amp;quot;. Details dazu im Artikel [[HomeMatic Timerwerte]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Soulman</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=CUL&amp;diff=38753</id>
		<title>CUL</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=CUL&amp;diff=38753"/>
		<updated>2023-12-06T16:05:12Z</updated>

		<summary type="html">&lt;p&gt;Soulman: Umformatiert, typos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein &#039;&#039;&#039;CUL&#039;&#039;&#039; (&#039;&#039;&#039;C&#039;&#039;&#039;C1101 &#039;&#039;&#039;U&#039;&#039;&#039;SB &#039;&#039;&#039;L&#039;&#039;&#039;ite) ist eine Radiofrequenz/USB-Schnittstelle bestehend aus einem USB-Dongle mit externer [[CUL Ausstattung|Antenne]]. Im USB-Stecker kann ein 8&amp;amp;nbsp;bit Atmel Prozessor die im ISM/SRD-Band empfangenen RF-Daten onboard vorverarbeiten. Je nach aufgespielter [[#FW|Firmware]] kann das CUL verschiedene 868MHz [[CUL HomeMatic und FS20|Protokolle]] empfangen und senden, insbesondere die FS20/FHT/S300/EM/HMS Protokollfamilien. Durch eine kurzzeitige Umschaltung auf 433&amp;amp;nbsp;MHz sind weitere Protokolle zugänglich, z.&amp;amp;nbsp;B. Intertechno, viele Baumarkt-Funksteckdosen.  &lt;br /&gt;
&lt;br /&gt;
== CUL HW ==&lt;br /&gt;
Im Zusammenhang mit diesem Artikel ist vor allem vom &amp;quot;echten&amp;quot; CUL die Rede, als dem USB Hardware-Dongle des Hersteller Busware. Es gibt aber diverse andere Hardware-Schnittstellen, die sich ebenfalls wie ein CUL verhalten, z.b. Netzwerkattached Module ([[CUN]]O), Module zum direkten Aufstecken auch einen Raspberry Pi ([[COC]]), und auf Arduino basierende Lösungen ([[SIGNALduino]]).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Einführung ==&lt;br /&gt;
Die Firmware (culfw) ist quelloffen.  Sie wird auch von verwandten Schnittstellen verwendet, siehe [[CUNO]] (RF+OneWire/LAN-Übergang), [[COC]] (RF+OneWire/Rasberrybus-Übergang), CSM usw.&lt;br /&gt;
&lt;br /&gt;
Im Umfeld von FS20/FHT/EM/S300/HMS (&amp;quot;[[Rfmode|rfmode]] - [[SlowRF]]&amp;quot;) werden die amplitudenmodulierten 1&amp;amp;nbsp;kHz breiten Signale per [[#FW|culfw]] direkt dekodiert und dann per USB weitergegeben.&lt;br /&gt;
&lt;br /&gt;
Das CUL kann mittels des &#039;&#039;&#039;[[CUL (Modul)|CUL Moduls]]&#039;&#039;&#039; (00_CUL.pm) von FHEM angesprochen und somit wie eine FHZ1X00PC verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Das CUL kann auch im HM-Mode als HomeMatic Zentrale alternativ zur CCU oder dem [[HMLAN Konfigurator]] betrieben werden. Bei CULs älter als Version&amp;amp;#160;3 ist jedoch der Speicher zu klein, um die Software für FS20/FHT/S300/EM/HMS und HomeMatic zugleich im Speicher zu halten, hier muss man sich beim [[CUL an einer Fritzbox 7390 flashen|Flashen]] der Firmware für eine Protokollfamilie entscheiden. Mit zwei CULs ist aber auch der Mischbetrieb an einem FHEM Hostrechner möglich. Es ist jedoch nicht angeraten, den CUL bei HM-Geräten zu verwenden, siehe {{Link2Forum|Topic=68145|LinkText=Link}}&lt;br /&gt;
&lt;br /&gt;
Ebenso gibt es ein Modul zur Ansteuerung der [[MAX]]! Heizungsteuerung. Auch hier ist ein Mischbetrieb (MAX! und z.&amp;amp;nbsp;B. FS20 gleichzeitig über ein CUL) obwohl technisch nicht unmöglich {{Link2Forum|Topic=10510|LinkText=nicht angeraten}}.&lt;br /&gt;
&lt;br /&gt;
Ferner ist der Einsatz eines CUL als [[RFR CUL]] für den &#039;&#039;SlowRF&#039;&#039; Mode (jedoch nicht für den &#039;&#039;HomeMatic&#039;&#039; Mode) möglich, um die Reichweite zu erhöhen. Die Verbindung erfolgt hierbei über Funk, sodass keine USB Verbindung zum FHEM Hostrechner erforderlich ist.&lt;br /&gt;
&lt;br /&gt;
Alle diese Modi sind in der Original-[[#FW|culfw]] enthalten und werden z.B. durch die Wahl des &#039;&#039;rfmode&#039;&#039; eingestellt.&lt;br /&gt;
&lt;br /&gt;
Obwohl die nominale Betriebsfrequenz der FHT- und FS20-Komponenten 868,35 MHz beträgt, ist bei aktuellen CUL-Firmwareversionen zum Betrieb mit FHEM die Frequenz  868,30 MHz vorgesehen. Dies hat sich als Kompromiss zum besseren Empfang von EM1000EM (Energiemonitor) Geräten bewährt, &#039;&#039;&#039;obwohl&#039;&#039;&#039; diese nominal mit 868,360 MHz arbeiten. Praktisch ist die Genauigkeit der Sendefrequenz der meisten &#039;&#039;SlowRF&#039;&#039; Geräte wegen der primitiven Sender sehr schlecht und kann deutlich von der nominalen Frequenz abweichen.&lt;br /&gt;
&lt;br /&gt;
Frequenz und Bandbreite können daher im &#039;&#039;SlowRF&#039;&#039; Mode frei angepasst und somit für die örtlichen Empfangsgegebenheiten optimiert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Definition in FHEM ==&lt;br /&gt;
Das CUL wird definiert mit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;define &amp;lt;name&amp;gt; CUL &amp;lt;device&amp;gt; &amp;lt;FHTID&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
als z.b.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;define myCUL CUL /dev/ttyUSB0 0000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Da FHT zur Heizungssterung kaum noch eine Rolle spielen dürfte ist die Vergabe der FHT-ID 0000 sinnvoll, da das CUL dann nicht auf FHT Communication achtet.&lt;br /&gt;
&lt;br /&gt;
Was &amp;lt;device&amp;gt; ist hängt von der Art des CUL ab:&lt;br /&gt;
=== Geräte, die an USB angeschlossen sind (CUL/CUN) ===&lt;br /&gt;
&amp;lt;device&amp;gt; gibt die serielle Schnittstelle an, mit der der CUL kommuniziert. Der Name der seriellen Schnittstelle hängt von der gewählten Distribution und USB-Treiber ab, unter Linux ist dies das Kernel Modul cdc_acm und üblicherweise wird die Schnittstelle /dev/ttyACM0 genannt. Wenn die Linux Distribution über kein Kernel Modul cdc_acm verfügt, dann kann die Schnittstelle über usbserial mit dem folgenden Befehl erzeugt werden:&lt;br /&gt;
modprobe usbserial vendor=0x03eb product=0x204b&lt;br /&gt;
In diesem Fall ist diese Schnittstelle dann wahrscheinlich /dev/ttyUSB0.&lt;br /&gt;
&lt;br /&gt;
Wenn der Name der Schnittstelle ein @ enthält, kann nachfolgend die verwendete Baudrate angegeben werden, z.B.: /dev/ttyACM0@38400.&lt;br /&gt;
&lt;br /&gt;
Wenn die Baudrate mit &amp;quot;directio&amp;quot; angegeben wird (z.B.: /dev/ttyACM0@directio), wird das Perl Modul Device::SerialPort nicht benötigt und FHEM öffnet die Schnittstelle mit einfachem Dateizugriff. Dies sollte dann funktionieren, wenn das Betriebssystem vernünftige Standardwerte für die serielle Schnittstelle verwendet, wie z.B. einige Linux Distributionen oder macOS.&lt;br /&gt;
&lt;br /&gt;
=== Geräte, die mit dem Netzwerk verbunden sind (CUN(O)) ===&lt;br /&gt;
&amp;lt;device&amp;gt; gibt die Hostadresse:Port des Gerätes an, z.B. 192.168.0.244:2323&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Weiteres in der commandref [https://fhem.de/commandref.html#CUL]&lt;br /&gt;
&lt;br /&gt;
== Hinweise zum Betrieb mit FHEM ==&lt;br /&gt;
&#039;&#039;&#039;Anmerkung:&#039;&#039;&#039; Nachfolgende Beispiele sind so wie dargestellt in die FHEM-Eingabezeile oder per Telnet auf FHEM zu übertragen und per &amp;lt;Taste&amp;gt;Enter&amp;lt;/Taste&amp;gt; abzuschicken (nicht &amp;quot;save&amp;quot; klicken); &#039;&#039;&#039;&#039;&#039;myCUL&#039;&#039;&#039;&#039;&#039; ist dabei nur ein Platzhalter und durch den Namen &#039;&#039;&#039;Ihres&#039;&#039;&#039; CUL zu ersetzen. &lt;br /&gt;
&lt;br /&gt;
* Ist Empfang eingeschaltet ?&lt;br /&gt;
*: &amp;lt;code&amp;gt; get myCUL raw C35&amp;lt;/code&amp;gt; (13 = ja, z.&amp;amp;nbsp;b.: C35 = 0D / 13)&lt;br /&gt;
* Auslesen der culfw Version:&lt;br /&gt;
*: &amp;lt;code&amp;gt;get myCUL raw V&amp;lt;/code&amp;gt;&lt;br /&gt;
* LED ausschalten (Achtung: Buchstabe l (L) vorweg für LED, keine Zahl 1)&lt;br /&gt;
*: &amp;lt;code&amp;gt;set myCUL raw l00&amp;lt;/code&amp;gt;&lt;br /&gt;
* LED einschalten&lt;br /&gt;
*: &amp;lt;code&amp;gt;set myCUL raw l01&amp;lt;/code&amp;gt; Blinkt bei Senden oder Empfangen von Paketen&lt;br /&gt;
* LED soll blinken (einmal in der Sekunde)&lt;br /&gt;
*: &amp;lt;code&amp;gt;set myCUL raw l02&amp;lt;/code&amp;gt;&lt;br /&gt;
* Reboot / Reset des CUL:&lt;br /&gt;
*: &amp;lt;code&amp;gt;set myCUL raw B00&amp;lt;/code&amp;gt; Andere Werte als 00 starten das CUL im Bootloader-Modus (=&amp;amp;gt; neue Firmware)&lt;br /&gt;
* Freie CUL Sendezeit ([[1% Regel]]):&lt;br /&gt;
*: &amp;lt;code&amp;gt;get myCUL raw X&amp;lt;/code&amp;gt; 2. Wert ist Sendezeit in 10ms Slots, ein FS20 Befehl braucht ca. 210ms (also 21 Slots), eine FHT Kommunikation wesentlich mehr. Alternativ auch &amp;lt;code&amp;gt;get myCUL credit10ms&amp;lt;/code&amp;gt; ergibt Sendezeit in 10ms Slots&lt;br /&gt;
* Freie Kapazität des FHT Buffers&lt;br /&gt;
*: &amp;lt;code&amp;gt; get myCUL raw T03&amp;lt;/code&amp;gt; Ergebnis Bytes in HEX. Leer = 4a&lt;br /&gt;
* Inhalt des FHT Buffers&lt;br /&gt;
*: &amp;lt;code&amp;gt; get myCUL raw T02&amp;lt;/code&amp;gt; (CUL V2 Buffer ist 74 Bytes groß, Platz für 14 bis 31 FHT Messages). Rückgabe n/a = Buffer ist leer&lt;br /&gt;
* Eingestellte [[Was_ist_der_Hauscode%3F|FHT-ID]]&lt;br /&gt;
*: &amp;lt;code&amp;gt; get myCUL raw T01&amp;lt;/code&amp;gt; &lt;br /&gt;
* Eingestellte Frequenz, Bandbreite etc. Ausgeben&lt;br /&gt;
*: &amp;lt;code&amp;gt; get myCUL ccconf&amp;lt;/code&amp;gt;. &amp;lt;br&amp;gt;Rückgabe z.&amp;amp;nbsp;B.: &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;myCUL ccconf =&amp;amp;gt; freq:868.300MHz bWidth:325kHz rAmpl:42dB sens:4dB&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* eingestelle Bandbreite erhöhen (z.B. auf 464 kHz, mehr hat meist keinen Sinn):&lt;br /&gt;
*:&amp;lt;code&amp;gt;set myCUL bWidth 464&amp;lt;/code&amp;gt;&lt;br /&gt;
* Einstellen der Sendestärke:&lt;br /&gt;
*: &amp;lt;code&amp;gt;set myCUL raw x09&amp;lt;/code&amp;gt; Einstellen der Sendeleistung.&lt;br /&gt;
&lt;br /&gt;
Gültige Werte für die Sendeleistung sind 00-09. Verwendet werden sollten nur die Werte 05-09, diese entsprechen&lt;br /&gt;
-10/-5/0/5/10 Sendeleistung in dB. Default ist x08 = +5dB. Bitte im Interesse von Nachbarn und der Abhörsicherheit den kleinsten problemlos funktionierenden Wert einstellen. Dies ist meistens x07 oder x08. Da speziell die Kommunikation mit den FHTs bidirektional ist, kann die Kommunikation durch höhere Werte oft nicht verbessert werden, da die FHTs selber dadurch nicht stärker senden. Besser versuchen, Lage und Antennenausrichtung des CUL zu verändern. &lt;br /&gt;
&lt;br /&gt;
Werte x00-x04 sind &#039;&#039;&#039;mit&#039;&#039;&#039; Ramping (&#039;&#039;sanfter&#039;&#039; Flankenanstieg anstatt Rechteck) und führen zum Verlust der Kommunikationsfähigkeit mit anderen CULs, z.&amp;amp;nbsp;B. [[RFR CUL]], da die CULs Rampingsignale nicht verstehen (FS20 / FHT und ähnliche Empfänger aber sehr wohl). &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Beim CUL im HomeMatic-Modus kann man (ohne Firmware-Modifikation) die Empfangs-/Sendeparameter &#039;&#039;&#039;nicht&#039;&#039;&#039; verstellen. Die üblichen freq/x09 etc. haben hier keine Wirkung ({{Link2Forum|Topic=10203|Message=57191|LinkText=Quelle}}).&lt;br /&gt;
&lt;br /&gt;
Weiterhin kann man zunehmend mehr Debuggingoutput auf dem CUL einschalten mit&amp;amp;#160;:&lt;br /&gt;
* &amp;lt;code&amp;gt; set CUL1 raw X61&amp;lt;/code&amp;gt; Communication wird im Detail angezeigt&lt;br /&gt;
* &amp;lt;code&amp;gt;set CUL1 raw X25&amp;lt;/code&amp;gt; auch checksum Fehler / unerkannte Protokolle werden gemeldet&lt;br /&gt;
* &amp;lt;code&amp;gt;set CUL1 raw X2F&amp;lt;/code&amp;gt; alle empfangenen Flanken werden gemeldet&lt;br /&gt;
* &amp;lt;code&amp;gt;set CUL1 raw X80&amp;lt;/code&amp;gt; RSSI / Signalstärke jeder Flanke wird gemeldet&lt;br /&gt;
* &amp;lt;code&amp;gt;set CUL1 raw X21&amp;lt;/code&amp;gt; normal Modus&lt;br /&gt;
&lt;br /&gt;
Achtung: Auf Groß- und Kleinschreibung des &amp;quot;x,X&amp;quot; achten!&lt;br /&gt;
&lt;br /&gt;
Die kompletten Kommandos mit Erklärung für CUL sind in der [http://culfw.de/commandref.html commandref] zu finden.&lt;br /&gt;
&lt;br /&gt;
== Versionen ==&lt;br /&gt;
Das CUL gibt es in mehreren Versionen, die sich überwiegend in Prozessor und Speicherkonfiguration unterscheiden.&lt;br /&gt;
&lt;br /&gt;
* CUL V1 - AT90USB162 Prozessor, 0,5 kB RAM, 16 kB Flashmemory, 0,5 kB EEPROM. Einsatzfähigkeit unbekannt (aber vermutlich wie V2). Wird nicht mehr hergestellt.&lt;br /&gt;
* CUL V2 - AT90USB162 Prozessor, 0,5 kB RAM, 16 kB Flashmemory, 0,5 kB EEPROM. Einsatzfähig. Der Flashspeicher ist jedoch zu klein für eine culfw (CUL Firmware), die Code für &#039;&#039;SlowRF&#039;&#039; Geräte und zugleich &#039;&#039;HomeMatic&#039;&#039; Geräte enthält. Es muss also vor dem Flashen der Firmware zwischen zwei jeweils reduzierten Versionen gewählt werden. Da ein CUL ohnehin nicht beide Sendemodi &#039;&#039;&#039;zeitgleich&#039;&#039;&#039; betreiben kann, ist dies keine wirkliche Einschränkung. Wird nicht mehr hergestellt.&lt;br /&gt;
* CUL V3 - ATMega32U4 Prozessor, 2,5 kB RAM, 32 kB Flashmemory, 1 kB EEPROM). Voll einsatzfähig.&lt;br /&gt;
* CUL V4 - ATMega32U2 Prozessor, 1 kB RAM, 32 kB Flashmemory, 1 kB EEPROM. Voll einsatzfähig. Genaugenommen ein &amp;quot;Sparmodell&amp;quot; des V3, um Lieferengpässe des ATMega32U4 Prozessors zu umgehen. Der reduzierte RAM-Speicher verursacht (zumindest gegenwärtig) beim Betrieb mit culfw und FHEM keine Einschränkungen oder Nachteile. Achtung: Flashen des CULv4 setzt DFU-Programmer 0.5.4 oder höher voraus.&lt;br /&gt;
&lt;br /&gt;
Die für die aktuellen Modelle lieferbare Abschirmung ist in der Regel nicht notwendig.&lt;br /&gt;
&lt;br /&gt;
== Firmware {{Anker|FW}} ==&lt;br /&gt;
Die für den CUL und verwandte Hardware wie [[CUN]] und CUR im Zusammenhang mit FHEM überwiegend eingesetzte Firmware culfw findet sich auf der&lt;br /&gt;
* [http://culfw.de CUL Firmware Homepage]&lt;br /&gt;
Dort kann die jeweils aktuelle Version nachgesehen und heruntergeladen werden.&lt;br /&gt;
Alte Stände, Version für Entwickler und ganz aktuelle Änderungen findet man auf der&lt;br /&gt;
* [https://sourceforge.net/projects/culfw/ Sourceforge Projektseite der culfw]&lt;br /&gt;
Hier kann man sich z.B. mit&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
svn co svn://svn.code.sf.net/p/culfw/code/trunk/culfw&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
die aktuelle Version laden.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich gibt es [&amp;quot;leider&amp;quot;...!?] folgende Forks der originalen culfw mit dortigen speziellen Anpassungen/Abweichungen:&lt;br /&gt;
* [https://github.com/heliflieger/a-culfw Alternative culfw for cul devices] auf GitHub und im {{Link2Forum|Topic=35064|LinkText=Forum}} mit Anpassungen unter anderem für InterTechno. Hier könnte es aber zu Funktionseinschränkungen bei anderen Protokollen kommen. In dieser Version ist auch ein Portierung auf ARM-Prozessoren enthalten (siehe {{Link2Forum|Topic=38404|LinkText=Forum}}) mit der die CUL-Firmware auch auf dem HM-CFG-USB-2 und dem [[MAX]] Cube betrieben werden kann.&lt;br /&gt;
* {{Link2Forum|Topic=24436|LinkText=Timestamp Firmware}} mit speziellen Anpassungen für HomeMatic. Bei HomeMatic ist das Timing der Telegramme entscheidend sonst kann es zu &amp;quot;MISSING ACK&amp;quot; bzw. &amp;quot;RESPONSE TIMEOUT:RegisterRead&amp;quot; u.ä. Meldungen kommen.&lt;br /&gt;
&lt;br /&gt;
Alternativ zu den [a]culfw-Firmwares gibt es [[SIGNALduino]] (zumindest auf manchen Hardware-Konstellationen umgeflashed direkt anwendbar und 1:1 lauffähig; inkl. normierter/kompatibler Weiterleitung/Dispatching auf die gleichen zentralen Geräte-Protokoll-Dekodier-Module, die auch von anderer Transceiver-Hardware/-Firmware - CUL etc. - ähnlich angebunden werden (sollen); somit Kommunikation mit vielen Funk-Komponenten auch dort idealerweise immer 1:1 funktionierend).&lt;br /&gt;
&lt;br /&gt;
Generell ist das Angebot an Speicherplatz auf dem im CUL verwendeten ATMega32U2 sehr eingeschränkt, wodurch Erweiterungen ohne Abstriche an anderer Stelle kaum mehr möglich sind. Es wird also die optimale CUL-Firmware für alle Zwecke nie geben, so dass man die Auswahl am konkreten Bedarf klären muss. Wer die Firmware selbst compiliert kann gezielt Funktionen die nicht benötigt werden weglassen und dafür ggf. Funktionen die sonst nicht eingefügt sind hinzufügen.&lt;br /&gt;
&lt;br /&gt;
== Sendefrequenz ==&lt;br /&gt;
Das CUL gibt es in Ausführungen für 868 und 433 MHz. &lt;br /&gt;
Die Sende- und Empfangsfrequenz des CUL sind in weiten Bereichen einstellbar, im &#039;&#039;SlowRF&#039;&#039; Mode auch durch direkte Befehle aus FHEM (im &#039;&#039;HomeMatic&#039;&#039; Mode derzeit nicht unterstützt). Der bauliche Unterschied der 868 und 433 MHz CULs ist ein auf das Frequenzband richtig abgestimmter HF-Eingangskreis inklusive Antennenlänge.&lt;br /&gt;
&lt;br /&gt;
Es ist durchaus möglich, ein 868 MHz CUL auf 433 MHz einzustellen. Da dann aber die HF-Eingangskreis-Abstimmung und Antennenlänge nicht korrekt sind, ist Empfangs- und Sendeleistung suboptimal, die Reichweite sinkt. Dennoch wird diese Möglichkeit des freien Einstellens durch das FHEM Intertechnomodul genutzt, da Intertechnokomponenten mit 433 MHz arbeiten. Dazu wird beim Senden eines Intertechno-Befehls die Frequenz eines 868 MHz CULs kurz umgestellt.&lt;br /&gt;
Besser ist aber die Nutzung eines dedizierten 433 MHz CUL für Intertechno.&lt;br /&gt;
&lt;br /&gt;
== Antenne ==&lt;br /&gt;
Der CUL ist mit RP-SMA-Stecker für die Antenne aber auch mit angelöteter Drahtantenne lieferbar.&lt;br /&gt;
Funktional besteht kein Unterschied: auch die &amp;quot;richtige&amp;quot; Antenne ist (in diesem Fall) nur ein Draht, jedoch  gummiummantelt und eventuell mit einem Knickgelenk und einem Schraubanschluss versehen, d.h. die Drahtantenne sieht nur unschön aus.&lt;br /&gt;
&lt;br /&gt;
Bei einer Antenne sind zwei Dinge auseinanderzuhalten: Einmal die Anpassung sowie die Abstrahlungscharakteristik. &lt;br /&gt;
* &#039;&#039;&#039;Anpassung&#039;&#039;&#039; Eine Antenne ist typischerweise für eine bestimmte Frequenz konstruiert. Wenn die Konstruktionsfrequenz nicht mit der Frequenz übereinstimmt, auf der die Antenne senden und empfangen soll, ist die Anpassung schlecht. Dies führt zu Verlusten bei der Übertragung. Typische Kennwerte für eine Anpassung sind das Stehwellenverhältnis (SWR) sowie die Impedanz. Beide Größen können per Messgerät bestimmt werden, inzwischen gibt es für 150 Euro entsprechende Geräte. Wer eine Antenne selbst konstruiert, sollte ein solches Gerät zumindest ausborgen, um seine Antenne zu bestimmen.&lt;br /&gt;
* &#039;&#039;&#039;Abstrahlung&#039;&#039;&#039; Es gibt mehrere Arten von Antennen, die sich in der Art der Strahlung unterscheiden. Richtantennen versuchen Signale nur in eine bestimmte Richtung zu versenden, Dipole versuchen in die gesamte Umgebung zu senden bzw zu empfangen. Während es bei Anpassung nur die Kategorien &amp;quot;gut&amp;quot; und &amp;quot;schlecht&amp;quot; gibt, ist bei der Abstrahlung eher auf &amp;quot;zweckmäßig&amp;quot; und &amp;quot;unzweckmäßig&amp;quot; zu achten.&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich hängen Abstrahlung und Antennengewinn zusammen. Die Energie, die eine (perfekt angepasste) Antenne strahlt, wird durch die Antennenkonstruktion weder verdoppelt oder halbiert, sondern nur gebündelt. Während ein Dipol in alle Richtungen abstrahlt, bündelt eine Richtantenne dieselbe Energie in eine bestimmte Richtung. Insofern muss man bei der Antennenkonstruktion überlegen, woher die Signale kommen bzw wohin sie gehen sollen. Jeder Antennengewinn geht einher mit einer Einschränkung bei der Sende/Empfangsrichtung, es sei denn, man verbessert die Anpassung der Antenne. &lt;br /&gt;
&lt;br /&gt;
Leider kann man auch bei gekauften Antennen nicht davon ausgehen, dass sie korrekt angepasst sind. Es gibt Berichte im Forum, wonach es insbesondere bei 433 MHz-Antennen eher ein Glücksspiel ist, ob man eine vernünftig angepasste Antenne bekommt. Daher kann es durchaus sein, dass eine Eigenbauantenne wesentlich bessere Werte liefert als eine käuflich erworbene. &lt;br /&gt;
&lt;br /&gt;
Eine zentrale Größe bei der Anpassung ist die Länge der Antenne. Wenn man einen Dipol verwendet, muss diese zweckmäßigerweise so groß sein wie ein Viertel der Wellenlänge (&amp;quot;Lambda/4&amp;quot;). Die sind bei 868 MHz ca. 8,6 Zentimeter. Antennenlängen die länger oder kürzer sind verschlechtern in der Regel die Anpassung. Daher ist eine z.B. 10 Zentimeter lange Antenne (obwohl länger) schlechter als 1/4 Lambda mit 8,6 Zentimeter.&lt;br /&gt;
&lt;br /&gt;
Weitere Informationen sind im {{Link2Forum|Topic=93021|LinkText=Antennenthread}} des Forums zu finden. &lt;br /&gt;
&lt;br /&gt;
Über besondere Antennenkonstruktionen (bitte nach Colinear, Jpole, Yagi suchen) oder Antennen die &amp;quot;Lambda/2&amp;quot; oder gar &amp;quot;Lambda&amp;quot; lang sind  (also ca. 17,2 bzw. 34,5 Zentimeter) kann ein höherer Gewinn erreicht werden. Einher geht aber gleichzeitig eine stärkere Richtwirkung der Antenne. Je kürzer die Antenne, desto kugelförmiger die Abstrahlung. Bei längeren Antennen wird die Abstrahlung mehr und mehr zylinderähnlich, also mit horizontaler Richtwirkung (und in die Richtung ist das Signal dann stärker, daher der Antennen&amp;quot;gewinn&amp;quot;).&lt;br /&gt;
Das hat auch Nachteile, speziell wenn man auch &amp;quot;nach oben&amp;quot; funken will. Besonders wenn man Antennen länger als eine λ/4 Antenne (8,6 Zentimeter) in einem mehretagigen Haus verwenden will, muss man diese daher in der Regel waagerecht/horizontal ausrichten, da alles was in Richtung der Spitze (und dem Fuss) der Antenne liegt schlecht empfangen wird.&lt;br /&gt;
&lt;br /&gt;
Daher: Je mehr Gewinn die Antenne aufweist, desto besser ist die Sende und Empfangsleistung, aber desto mehr Gedanken muss man sich um die Ausrichtung der Antenne machen, um alle Geräte zu empfangen / zu erreichen. &amp;quot;Mehr dB&amp;quot; und speziell &amp;quot;länger&amp;quot; ist also nicht automatisch besser. &lt;br /&gt;
&lt;br /&gt;
Zu beachten ist auch, dass die Sendeleistung der Module gesetzlich geregelt ist und Spezialantennen mit höherem Gewinn ggf. nur an Empfängern erlaubt sind.&lt;br /&gt;
&lt;br /&gt;
Falls man den CUL mit RP-SMA Stecker geordert hat, aber keine passend lange RP-SMA-Antenne verfügbar ist, kann (nur für erste Tests) auch eine abschraubbare Antenne für 802.11b/g WLAN-Geräte (2,4&amp;amp;nbsp;GHz) benutzt werden, so diese anschlusstechnisch auf den RP-SMA-Stecker des CUL passt (dies funktioniert zumindest mit FS20- und EM-Geräten). Deren Länge ist wie oben diskutiert aber nicht optimal, besser ist auf jeden Fall eine speziell auf den Einsatzzweck (Frequenz) abgestimmte Antenne.&lt;br /&gt;
&lt;br /&gt;
== Antennenlänge ==&lt;br /&gt;
Die genauen Antennenlängen sind praktisch schwer zu ermitteln, da auch Zuleitung auf dem CUL zugerechnet werden müssten und ggf Dämpfungen (also z.B. Durchführung der Antenne durch ein Gehäuse, oder gebogene Antennen) die Antennenlänge weiter beeinflussen. Gleichzeitig haben schon Abweichungen von wenigen Millimetern messbaren Einfluss. Die Antennenlänge ist daher immer nur ein Kompromiss.&lt;br /&gt;
&lt;br /&gt;
Exakt berechnet ohne Störeinflüsse wären folgende Antennenlängen nutzbar:&lt;br /&gt;
 868,35 MHz (z.B. HM, FS20, FHT …)&lt;br /&gt;
 1/4 Lambda = 8,63 Zentimeter &lt;br /&gt;
 1/2 Lambda = 17,26 Zentimeter &lt;br /&gt;
 1 Lambda = 34,52 Zentimeter  (Bereits sehr hohe Richtwirkung)&lt;br /&gt;
&lt;br /&gt;
433,92 MHz  (z.B. Intertechno …)&lt;br /&gt;
 1/4 Lambda = 17,27 Zentimeter &lt;br /&gt;
 1/2 Lambda = 34,54 Zentimeter &lt;br /&gt;
&lt;br /&gt;
Folgende Antennenlängen bieten sich praktisch an, diese sind immer etwas kürzer als die optimale Länge, dies wird z.T. durch Leiterlänge im CUL kompensiert.:&lt;br /&gt;
&lt;br /&gt;
 8,6 Zentimeter als 1/4 Lambda für 868,35 MHz&lt;br /&gt;
 17,2 Zentimeter als 1/2 Lambda für 868,35 MHz und zugleich 1/4 Lambda für 433,92 MHz&lt;br /&gt;
 34,5 Zentimeter als Lambda für 868,35 MHz und zugleich 1/2 Lambda für 433,92 MHz&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
&lt;br /&gt;
=== RF-Tuning ===&lt;br /&gt;
Im Gegensatz zu den original FHZ-Zentralen ist das CUL recht schmalbandig, d.h. die Sende- und Empfangsfrequenz wird genauer eingehalten als z.&amp;amp;nbsp;B. bei einer FHZ1x00PC. Dies kann im Zusammenhang mit den eher ungenauen Sendern (z.&amp;amp;nbsp;B. der FHT Raumregler) zu Empfangsproblemen führen. Es kann daher mitunter sinnvoll sein, die Sende- und Empfangsbandbreite des CUL etwas zu erhöhen. Dies senkt jedoch gleichzeitig die Empfindlichkeit.&lt;br /&gt;
&lt;br /&gt;
Bei Empfangsproblemen von z.&amp;amp;nbsp;B. HEM-Sensoren oder dem S300TH kann man folgendes testen:&lt;br /&gt;
&lt;br /&gt;
* Man kann die Frequenz des CUL auf genau 868,35 MHz einstellen. Standardmäßig ist hier aus Kompatibilitätsgründen 868,30 MHz eingestellt. Diese Einstellung wird fest im NVRAM gespeichert und braucht nur einmal vorgenommen zu werden.&lt;br /&gt;
*: &amp;lt;code&amp;gt;set CUL freq 868.350&amp;lt;/code&amp;gt;&lt;br /&gt;
* Es ist möglich die &amp;quot;decision boundary&amp;quot; zu vergrößern, frei beschrieben: die &amp;quot;Entscheidungsgrenze&amp;quot; ob die empfangene Signalflanke digital &amp;quot;0&amp;quot; oder &amp;quot;1&amp;quot; darstellte ({{Link2Forum|Topic=8572|Message=44388|LinkText=siehe Diskussion hier}}). Möglich sind die Werte &amp;quot;4&amp;quot;, &amp;quot;8&amp;quot; und &amp;quot;16&amp;quot;. Default-Einstellung ist hier &amp;quot;4&amp;quot;. Zur Steigerung der Empfangsqualität soll es hilfreich sein, hier &amp;quot;8&amp;quot; einzustellen. Mitunter bringt jedoch erst die Einstellung auf &amp;quot;16&amp;quot; signifikante Verbesserungen beim Empfang von S300TH-Sensoren.&lt;br /&gt;
*: &amp;lt;code&amp;gt;set CUL sens 8&amp;lt;/code&amp;gt;&lt;br /&gt;
* Oft hilft auch, die Bandbreite auf z.&amp;amp;nbsp;B. 464 kHz aufzuweiten.&lt;br /&gt;
*: &amp;lt;code&amp;gt;set CUL bWidth 464&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Selbstbau-/Bastelprojekte ==&lt;br /&gt;
Innerhalb der FHEM-Community werden mittlerweile diverse Bastelprojekte zum Selbstbau eines CUL betrieben. Eine Auswahl dieser Projekte:&lt;br /&gt;
* [[Selbstbau CUL]]&lt;br /&gt;
* [[FHEMduino]]&lt;br /&gt;
* [[SIGNALduino]]&lt;br /&gt;
* [[MapleCUN]] mit STM32 Mikrocontroller&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* Hersteller / Bezugsquelle für CUL: [http://www.busware.de/tiki-index.php?page=CUL busware.de]&lt;br /&gt;
* Google groups [https://groups.google.com/group/cul-fans/ CUL fans], mittlerweile durch das Board {{Link2Forum|Area=cul-fans}} im FHEM Forum ergänzt/ersetzt&lt;br /&gt;
* CUL commandref [https://fhem.de/commandref.html#CUL]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Interfaces]]&lt;br /&gt;
[[Kategorie:CUL|!]]&lt;br /&gt;
[[Kategorie:433MHz]]&lt;br /&gt;
[[Kategorie:868MHz]]&lt;/div&gt;</summary>
		<author><name>Soulman</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=CUL&amp;diff=38752</id>
		<title>CUL</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=CUL&amp;diff=38752"/>
		<updated>2023-12-06T16:00:11Z</updated>

		<summary type="html">&lt;p&gt;Soulman: definition ergänzt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein &#039;&#039;&#039;CUL&#039;&#039;&#039; (&#039;&#039;&#039;C&#039;&#039;&#039;C1101 &#039;&#039;&#039;U&#039;&#039;&#039;SB &#039;&#039;&#039;L&#039;&#039;&#039;ite) ist eine Radiofrequenz/USB-Schnittstelle bestehend aus einem USB-Dongle mit externer [[CUL Ausstattung|Antenne]]. Im USB-Stecker kann ein 8&amp;amp;nbsp;bit Atmel Prozessor die im ISM/SRD-Band empfangenen RF-Daten onboard vorverarbeiten. Je nach aufgespielter [[#FW|Firmware]] kann das CUL verschiedene 868MHz [[CUL HomeMatic und FS20|Protokolle]] empfangen und senden, insbesondere die FS20/FHT/S300/EM/HMS Protokollfamilien. Durch eine kurzzeitige Umschaltung auf 433&amp;amp;nbsp;MHz sind weitere Protokolle zugänglich, z.&amp;amp;nbsp;B. Intertechno, viele Baumarkt-Funksteckdosen.  &lt;br /&gt;
&lt;br /&gt;
Die Firmware (culfw) ist quelloffen.  Sie wird auch von verwandten Schnittstellen verwendet, siehe [[CUNO]] (RF+OneWire/LAN-Übergang), [[COC]] (RF+OneWire/Rasberrybus-Übergang), CSM usw.&lt;br /&gt;
&lt;br /&gt;
Im Umfeld von FS20/FHT/EM/S300/HMS (&amp;quot;[[Rfmode|rfmode]] - [[SlowRF]]&amp;quot;) werden die amplitudenmodulierten 1&amp;amp;nbsp;kHz breiten Signale per [[#FW|culfw]] direkt dekodiert und dann per USB weitergegeben.&lt;br /&gt;
&lt;br /&gt;
Das CUL kann mittels des &#039;&#039;&#039;[[CUL (Modul)|CUL Moduls]]&#039;&#039;&#039; (00_CUL.pm) von FHEM angesprochen und somit wie eine FHZ1X00PC verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Das CUL kann auch im HM-Mode als HomeMatic Zentrale alternativ zur CCU oder dem [[HMLAN Konfigurator]] betrieben werden. Bei CULs älter als Version&amp;amp;#160;3 ist jedoch der Speicher zu klein, um die Software für FS20/FHT/S300/EM/HMS und HomeMatic zugleich im Speicher zu halten, hier muss man sich beim [[CUL an einer Fritzbox 7390 flashen|Flashen]] der Firmware für eine Protokollfamilie entscheiden. Mit zwei CULs ist aber auch der Mischbetrieb an einem FHEM Hostrechner möglich. Es ist jedoch nicht angeraten, den CUL bei HM-Geräten zu verwenden, siehe {{Link2Forum|Topic=68145|LinkText=Link}}&lt;br /&gt;
&lt;br /&gt;
Ebenso gibt es ein Modul zur Ansteuerung der [[MAX]]! Heizungsteuerung. Auch hier ist ein Mischbetrieb (MAX! und z.&amp;amp;nbsp;B. FS20 gleichzeitig über ein CUL) obwohl technisch nicht unmöglich {{Link2Forum|Topic=10510|LinkText=nicht angeraten}}.&lt;br /&gt;
&lt;br /&gt;
Ferner ist der Einsatz eines CUL als [[RFR CUL]] für den &#039;&#039;SlowRF&#039;&#039; Mode (jedoch nicht für den &#039;&#039;HomeMatic&#039;&#039; Mode) möglich, um die Reichweite zu erhöhen. Die Verbindung erfolgt hierbei über Funk, sodass keine USB Verbindung zum FHEM Hostrechner erforderlich ist.&lt;br /&gt;
&lt;br /&gt;
Alle diese Modi sind in der Original-[[#FW|culfw]] enthalten und werden z.B. durch die Wahl des &#039;&#039;rfmode&#039;&#039; eingestellt.&lt;br /&gt;
&lt;br /&gt;
Obwohl die nominale Betriebsfrequenz der FHT- und FS20-Komponenten 868,35 MHz beträgt, ist bei aktuellen CUL-Firmwareversionen zum Betrieb mit FHEM die Frequenz  868,30 MHz vorgesehen. Dies hat sich als Kompromiss zum besseren Empfang von EM1000EM (Energiemonitor) Geräten bewährt, &#039;&#039;&#039;obwohl&#039;&#039;&#039; diese nominal mit 868,360 MHz arbeiten. Praktisch ist die Genauigkeit der Sendefrequenz der meisten &#039;&#039;SlowRF&#039;&#039; Geräte wegen der primitiven Sender sehr schlecht und kann deutlich von der nominalen Frequenz abweichen.&lt;br /&gt;
&lt;br /&gt;
Frequenz und Bandbreite können daher im &#039;&#039;SlowRF&#039;&#039; Mode frei angepasst und somit für die örtlichen Empfangsgegebenheiten optimiert werden.&lt;br /&gt;
&lt;br /&gt;
== CUL HW ==&lt;br /&gt;
Im Zusammenhang mit diesem Artikel ist vor allem vom &amp;quot;echten&amp;quot; CUL die Rede, als dem USB Hardware-Dongel des Hersteller Busware. Es gibt aber diverse andere Hardware-Schnittstellen, die sich ebenfalls wie ein CUL verhalten, z.b. Netzwerkaattached Module (CUNO), modulle zum direkten aufstecken auch einen Rapbi (COC), und auf Ardunino basierenende Lösugnen.&lt;br /&gt;
&lt;br /&gt;
== Definition in FHEM ==&lt;br /&gt;
Das CUL wird definiert mit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;define &amp;lt;name&amp;gt; CUL &amp;lt;device&amp;gt; &amp;lt;FHTID&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
als z.b.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;define myCUL CUL /dev/ttyUSB0 0000&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Da FHT zur Heizungssterung kaum noch eine Rolle spielen dürfte ist die Vergabe der FHT-ID 0000 sinnvoll, da das CUL dann nicht auf FHT Communication achtet.&lt;br /&gt;
&lt;br /&gt;
Was &amp;lt;device&amp;gt; ist hängt von der Art des CUL ab:&lt;br /&gt;
=== Geräte, die an USB angeschlossen sind (CUL/CUN) ===&lt;br /&gt;
&amp;lt;device&amp;gt; gibt die serielle Schnittstelle an, mit der der CUL kommuniziert. Der Name der seriellen Schnittstelle hängt von der gewählten Distribution und USB-Treiber ab, unter Linux ist dies das Kernel Modul cdc_acm und üblicherweise wird die Schnittstelle /dev/ttyACM0 genannt. Wenn die Linux Distribution über kein Kernel Modul cdc_acm verfügt, dann kann die Schnittstelle über usbserial mit dem folgenden Befehl erzeugt werden:&lt;br /&gt;
modprobe usbserial vendor=0x03eb product=0x204b&lt;br /&gt;
In diesem Fall ist diese Schnittstelle dann wahrscheinlich /dev/ttyUSB0.&lt;br /&gt;
&lt;br /&gt;
Wenn der Name der Schnittstelle ein @ enthält, kann nachfolgend die verwendete Baudrate angegeben werden, z.B.: /dev/ttyACM0@38400.&lt;br /&gt;
&lt;br /&gt;
Wenn die Baudrate mit &amp;quot;directio&amp;quot; angegeben wird (z.B.: /dev/ttyACM0@directio), wird das Perl Modul Device::SerialPort nicht benötigt und FHEM öffnet die Schnittstelle mit einfachem Dateizugriff. Dies sollte dann funktionieren, wenn das Betriebssystem vernünftige Standardwerte für die serielle Schnittstelle verwendet, wie z.B. einige Linux Distributionen oder macOS.&lt;br /&gt;
&lt;br /&gt;
=== Geräte, die mit dem Netzwerk verbunden sind (CUN(O)) ===&lt;br /&gt;
&amp;lt;device&amp;gt; gibt die Hostadresse:Port des Gerätes an, z.B. 192.168.0.244:2323&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Weiteres in der commandref [https://fhem.de/commandref.html#CUL]&lt;br /&gt;
&lt;br /&gt;
== Hinweise zum Betrieb mit FHEM ==&lt;br /&gt;
&#039;&#039;&#039;Anmerkung:&#039;&#039;&#039; Nachfolgende Beispiele sind so wie dargestellt in die FHEM-Eingabezeile oder per Telnet auf FHEM zu übertragen und per &amp;lt;Taste&amp;gt;Enter&amp;lt;/Taste&amp;gt; abzuschicken (nicht &amp;quot;save&amp;quot; klicken); &#039;&#039;&#039;&#039;&#039;myCUL&#039;&#039;&#039;&#039;&#039; ist dabei nur ein Platzhalter und durch den Namen &#039;&#039;&#039;Ihres&#039;&#039;&#039; CUL zu ersetzen. &lt;br /&gt;
&lt;br /&gt;
* Ist Empfang eingeschaltet ?&lt;br /&gt;
*: &amp;lt;code&amp;gt; get myCUL raw C35&amp;lt;/code&amp;gt; (13 = ja, z.&amp;amp;nbsp;b.: C35 = 0D / 13)&lt;br /&gt;
* Auslesen der culfw Version:&lt;br /&gt;
*: &amp;lt;code&amp;gt;get myCUL raw V&amp;lt;/code&amp;gt;&lt;br /&gt;
* LED ausschalten (Achtung: Buchstabe l (L) vorweg für LED, keine Zahl 1)&lt;br /&gt;
*: &amp;lt;code&amp;gt;set myCUL raw l00&amp;lt;/code&amp;gt;&lt;br /&gt;
* LED einschalten&lt;br /&gt;
*: &amp;lt;code&amp;gt;set myCUL raw l01&amp;lt;/code&amp;gt; Blinkt bei Senden oder Empfangen von Paketen&lt;br /&gt;
* LED soll blinken (einmal in der Sekunde)&lt;br /&gt;
*: &amp;lt;code&amp;gt;set myCUL raw l02&amp;lt;/code&amp;gt;&lt;br /&gt;
* Reboot / Reset des CUL:&lt;br /&gt;
*: &amp;lt;code&amp;gt;set myCUL raw B00&amp;lt;/code&amp;gt; Andere Werte als 00 starten das CUL im Bootloader-Modus (=&amp;amp;gt; neue Firmware)&lt;br /&gt;
* Freie CUL Sendezeit ([[1% Regel]]):&lt;br /&gt;
*: &amp;lt;code&amp;gt;get myCUL raw X&amp;lt;/code&amp;gt; 2. Wert ist Sendezeit in 10ms Slots, ein FS20 Befehl braucht ca. 210ms (also 21 Slots), eine FHT Kommunikation wesentlich mehr. Alternativ auch &amp;lt;code&amp;gt;get myCUL credit10ms&amp;lt;/code&amp;gt; ergibt Sendezeit in 10ms Slots&lt;br /&gt;
* Freie Kapazität des FHT Buffers&lt;br /&gt;
*: &amp;lt;code&amp;gt; get myCUL raw T03&amp;lt;/code&amp;gt; Ergebnis Bytes in HEX. Leer = 4a&lt;br /&gt;
* Inhalt des FHT Buffers&lt;br /&gt;
*: &amp;lt;code&amp;gt; get myCUL raw T02&amp;lt;/code&amp;gt; (CUL V2 Buffer ist 74 Bytes groß, Platz für 14 bis 31 FHT Messages). Rückgabe n/a = Buffer ist leer&lt;br /&gt;
* Eingestellte [[Was_ist_der_Hauscode%3F|FHT-ID]]&lt;br /&gt;
*: &amp;lt;code&amp;gt; get myCUL raw T01&amp;lt;/code&amp;gt; &lt;br /&gt;
* Eingestellte Frequenz, Bandbreite etc. Ausgeben&lt;br /&gt;
*: &amp;lt;code&amp;gt; get myCUL ccconf&amp;lt;/code&amp;gt;. &amp;lt;br&amp;gt;Rückgabe z.&amp;amp;nbsp;B.: &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;myCUL ccconf =&amp;amp;gt; freq:868.300MHz bWidth:325kHz rAmpl:42dB sens:4dB&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* eingestelle Bandbreite erhöhen (z.B. auf 464 kHz, mehr hat meist keinen Sinn):&lt;br /&gt;
*:&amp;lt;code&amp;gt;set myCUL bWidth 464&amp;lt;/code&amp;gt;&lt;br /&gt;
* Einstellen der Sendestärke:&lt;br /&gt;
*: &amp;lt;code&amp;gt;set myCUL raw x09&amp;lt;/code&amp;gt; Einstellen der Sendeleistung.&lt;br /&gt;
&lt;br /&gt;
Gültige Werte für die Sendeleistung sind 00-09. Verwendet werden sollten nur die Werte 05-09, diese entsprechen&lt;br /&gt;
-10/-5/0/5/10 Sendeleistung in dB. Default ist x08 = +5dB. Bitte im Interesse von Nachbarn und der Abhörsicherheit den kleinsten problemlos funktionierenden Wert einstellen. Dies ist meistens x07 oder x08. Da speziell die Kommunikation mit den FHTs bidirektional ist, kann die Kommunikation durch höhere Werte oft nicht verbessert werden, da die FHTs selber dadurch nicht stärker senden. Besser versuchen, Lage und Antennenausrichtung des CUL zu verändern. &lt;br /&gt;
&lt;br /&gt;
Werte x00-x04 sind &#039;&#039;&#039;mit&#039;&#039;&#039; Ramping (&#039;&#039;sanfter&#039;&#039; Flankenanstieg anstatt Rechteck) und führen zum Verlust der Kommunikationsfähigkeit mit anderen CULs, z.&amp;amp;nbsp;B. [[RFR CUL]], da die CULs Rampingsignale nicht verstehen (FS20 / FHT und ähnliche Empfänger aber sehr wohl). &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Beim CUL im HomeMatic-Modus kann man (ohne Firmware-Modifikation) die Empfangs-/Sendeparameter &#039;&#039;&#039;nicht&#039;&#039;&#039; verstellen. Die üblichen freq/x09 etc. haben hier keine Wirkung ({{Link2Forum|Topic=10203|Message=57191|LinkText=Quelle}}).&lt;br /&gt;
&lt;br /&gt;
Weiterhin kann man zunehmend mehr Debuggingoutput auf dem CUL einschalten mit&amp;amp;#160;:&lt;br /&gt;
* &amp;lt;code&amp;gt; set CUL1 raw X61&amp;lt;/code&amp;gt; Communication wird im Detail angezeigt&lt;br /&gt;
* &amp;lt;code&amp;gt;set CUL1 raw X25&amp;lt;/code&amp;gt; auch checksum Fehler / unerkannte Protokolle werden gemeldet&lt;br /&gt;
* &amp;lt;code&amp;gt;set CUL1 raw X2F&amp;lt;/code&amp;gt; alle empfangenen Flanken werden gemeldet&lt;br /&gt;
* &amp;lt;code&amp;gt;set CUL1 raw X80&amp;lt;/code&amp;gt; RSSI / Signalstärke jeder Flanke wird gemeldet&lt;br /&gt;
* &amp;lt;code&amp;gt;set CUL1 raw X21&amp;lt;/code&amp;gt; normal Modus&lt;br /&gt;
&lt;br /&gt;
Achtung: Auf Groß- und Kleinschreibung des &amp;quot;x,X&amp;quot; achten!&lt;br /&gt;
&lt;br /&gt;
Die kompletten Kommandos mit Erklärung für CUL sind in der [http://culfw.de/commandref.html commandref] zu finden.&lt;br /&gt;
&lt;br /&gt;
== Versionen ==&lt;br /&gt;
Das CUL gibt es in mehreren Versionen, die sich überwiegend in Prozessor und Speicherkonfiguration unterscheiden.&lt;br /&gt;
&lt;br /&gt;
* CUL V1 - AT90USB162 Prozessor, 0,5 kB RAM, 16 kB Flashmemory, 0,5 kB EEPROM. Einsatzfähigkeit unbekannt (aber vermutlich wie V2). Wird nicht mehr hergestellt.&lt;br /&gt;
* CUL V2 - AT90USB162 Prozessor, 0,5 kB RAM, 16 kB Flashmemory, 0,5 kB EEPROM. Einsatzfähig. Der Flashspeicher ist jedoch zu klein für eine culfw (CUL Firmware), die Code für &#039;&#039;SlowRF&#039;&#039; Geräte und zugleich &#039;&#039;HomeMatic&#039;&#039; Geräte enthält. Es muss also vor dem Flashen der Firmware zwischen zwei jeweils reduzierten Versionen gewählt werden. Da ein CUL ohnehin nicht beide Sendemodi &#039;&#039;&#039;zeitgleich&#039;&#039;&#039; betreiben kann, ist dies keine wirkliche Einschränkung. Wird nicht mehr hergestellt.&lt;br /&gt;
* CUL V3 - ATMega32U4 Prozessor, 2,5 kB RAM, 32 kB Flashmemory, 1 kB EEPROM). Voll einsatzfähig.&lt;br /&gt;
* CUL V4 - ATMega32U2 Prozessor, 1 kB RAM, 32 kB Flashmemory, 1 kB EEPROM. Voll einsatzfähig. Genaugenommen ein &amp;quot;Sparmodell&amp;quot; des V3, um Lieferengpässe des ATMega32U4 Prozessors zu umgehen. Der reduzierte RAM-Speicher verursacht (zumindest gegenwärtig) beim Betrieb mit culfw und FHEM keine Einschränkungen oder Nachteile. Achtung: Flashen des CULv4 setzt DFU-Programmer 0.5.4 oder höher voraus.&lt;br /&gt;
&lt;br /&gt;
Die für die aktuellen Modelle lieferbare Abschirmung ist in der Regel nicht notwendig.&lt;br /&gt;
&lt;br /&gt;
== Firmware {{Anker|FW}} ==&lt;br /&gt;
Die für den CUL und verwandte Hardware wie [[CUN]] und CUR im Zusammenhang mit FHEM überwiegend eingesetzte Firmware culfw findet sich auf der&lt;br /&gt;
* [http://culfw.de CUL Firmware Homepage]&lt;br /&gt;
Dort kann die jeweils aktuelle Version nachgesehen und heruntergeladen werden.&lt;br /&gt;
Alte Stände, Version für Entwickler und ganz aktuelle Änderungen findet man auf der&lt;br /&gt;
* [https://sourceforge.net/projects/culfw/ Sourceforge Projektseite der culfw]&lt;br /&gt;
Hier kann man sich z.B. mit&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
svn co svn://svn.code.sf.net/p/culfw/code/trunk/culfw&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
die aktuelle Version laden.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich gibt es [&amp;quot;leider&amp;quot;...!?] folgende Forks der originalen culfw mit dortigen speziellen Anpassungen/Abweichungen:&lt;br /&gt;
* [https://github.com/heliflieger/a-culfw Alternative culfw for cul devices] auf GitHub und im {{Link2Forum|Topic=35064|LinkText=Forum}} mit Anpassungen unter anderem für InterTechno. Hier könnte es aber zu Funktionseinschränkungen bei anderen Protokollen kommen. In dieser Version ist auch ein Portierung auf ARM-Prozessoren enthalten (siehe {{Link2Forum|Topic=38404|LinkText=Forum}}) mit der die CUL-Firmware auch auf dem HM-CFG-USB-2 und dem [[MAX]] Cube betrieben werden kann.&lt;br /&gt;
* {{Link2Forum|Topic=24436|LinkText=Timestamp Firmware}} mit speziellen Anpassungen für HomeMatic. Bei HomeMatic ist das Timing der Telegramme entscheidend sonst kann es zu &amp;quot;MISSING ACK&amp;quot; bzw. &amp;quot;RESPONSE TIMEOUT:RegisterRead&amp;quot; u.ä. Meldungen kommen.&lt;br /&gt;
&lt;br /&gt;
Alternativ zu den [a]culfw-Firmwares gibt es [[SIGNALduino]] (zumindest auf manchen Hardware-Konstellationen umgeflashed direkt anwendbar und 1:1 lauffähig; inkl. normierter/kompatibler Weiterleitung/Dispatching auf die gleichen zentralen Geräte-Protokoll-Dekodier-Module, die auch von anderer Transceiver-Hardware/-Firmware - CUL etc. - ähnlich angebunden werden (sollen); somit Kommunikation mit vielen Funk-Komponenten auch dort idealerweise immer 1:1 funktionierend).&lt;br /&gt;
&lt;br /&gt;
Generell ist das Angebot an Speicherplatz auf dem im CUL verwendeten ATMega32U2 sehr eingeschränkt, wodurch Erweiterungen ohne Abstriche an anderer Stelle kaum mehr möglich sind. Es wird also die optimale CUL-Firmware für alle Zwecke nie geben, so dass man die Auswahl am konkreten Bedarf klären muss. Wer die Firmware selbst compiliert kann gezielt Funktionen die nicht benötigt werden weglassen und dafür ggf. Funktionen die sonst nicht eingefügt sind hinzufügen.&lt;br /&gt;
&lt;br /&gt;
== Sendefrequenz ==&lt;br /&gt;
Das CUL gibt es in Ausführungen für 868 und 433 MHz. &lt;br /&gt;
Die Sende- und Empfangsfrequenz des CUL sind in weiten Bereichen einstellbar, im &#039;&#039;SlowRF&#039;&#039; Mode auch durch direkte Befehle aus FHEM (im &#039;&#039;HomeMatic&#039;&#039; Mode derzeit nicht unterstützt). Der bauliche Unterschied der 868 und 433 MHz CULs ist ein auf das Frequenzband richtig abgestimmter HF-Eingangskreis inklusive Antennenlänge.&lt;br /&gt;
&lt;br /&gt;
Es ist durchaus möglich, ein 868 MHz CUL auf 433 MHz einzustellen. Da dann aber die HF-Eingangskreis-Abstimmung und Antennenlänge nicht korrekt sind, ist Empfangs- und Sendeleistung suboptimal, die Reichweite sinkt. Dennoch wird diese Möglichkeit des freien Einstellens durch das FHEM Intertechnomodul genutzt, da Intertechnokomponenten mit 433 MHz arbeiten. Dazu wird beim Senden eines Intertechno-Befehls die Frequenz eines 868 MHz CULs kurz umgestellt.&lt;br /&gt;
Besser ist aber die Nutzung eines dedizierten 433 MHz CUL für Intertechno.&lt;br /&gt;
&lt;br /&gt;
== Antenne ==&lt;br /&gt;
Der CUL ist mit RP-SMA-Stecker für die Antenne aber auch mit angelöteter Drahtantenne lieferbar.&lt;br /&gt;
Funktional besteht kein Unterschied: auch die &amp;quot;richtige&amp;quot; Antenne ist (in diesem Fall) nur ein Draht, jedoch  gummiummantelt und eventuell mit einem Knickgelenk und einem Schraubanschluss versehen, d.h. die Drahtantenne sieht nur unschön aus.&lt;br /&gt;
&lt;br /&gt;
Bei einer Antenne sind zwei Dinge auseinanderzuhalten: Einmal die Anpassung sowie die Abstrahlungscharakteristik. &lt;br /&gt;
* &#039;&#039;&#039;Anpassung&#039;&#039;&#039; Eine Antenne ist typischerweise für eine bestimmte Frequenz konstruiert. Wenn die Konstruktionsfrequenz nicht mit der Frequenz übereinstimmt, auf der die Antenne senden und empfangen soll, ist die Anpassung schlecht. Dies führt zu Verlusten bei der Übertragung. Typische Kennwerte für eine Anpassung sind das Stehwellenverhältnis (SWR) sowie die Impedanz. Beide Größen können per Messgerät bestimmt werden, inzwischen gibt es für 150 Euro entsprechende Geräte. Wer eine Antenne selbst konstruiert, sollte ein solches Gerät zumindest ausborgen, um seine Antenne zu bestimmen.&lt;br /&gt;
* &#039;&#039;&#039;Abstrahlung&#039;&#039;&#039; Es gibt mehrere Arten von Antennen, die sich in der Art der Strahlung unterscheiden. Richtantennen versuchen Signale nur in eine bestimmte Richtung zu versenden, Dipole versuchen in die gesamte Umgebung zu senden bzw zu empfangen. Während es bei Anpassung nur die Kategorien &amp;quot;gut&amp;quot; und &amp;quot;schlecht&amp;quot; gibt, ist bei der Abstrahlung eher auf &amp;quot;zweckmäßig&amp;quot; und &amp;quot;unzweckmäßig&amp;quot; zu achten.&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich hängen Abstrahlung und Antennengewinn zusammen. Die Energie, die eine (perfekt angepasste) Antenne strahlt, wird durch die Antennenkonstruktion weder verdoppelt oder halbiert, sondern nur gebündelt. Während ein Dipol in alle Richtungen abstrahlt, bündelt eine Richtantenne dieselbe Energie in eine bestimmte Richtung. Insofern muss man bei der Antennenkonstruktion überlegen, woher die Signale kommen bzw wohin sie gehen sollen. Jeder Antennengewinn geht einher mit einer Einschränkung bei der Sende/Empfangsrichtung, es sei denn, man verbessert die Anpassung der Antenne. &lt;br /&gt;
&lt;br /&gt;
Leider kann man auch bei gekauften Antennen nicht davon ausgehen, dass sie korrekt angepasst sind. Es gibt Berichte im Forum, wonach es insbesondere bei 433 MHz-Antennen eher ein Glücksspiel ist, ob man eine vernünftig angepasste Antenne bekommt. Daher kann es durchaus sein, dass eine Eigenbauantenne wesentlich bessere Werte liefert als eine käuflich erworbene. &lt;br /&gt;
&lt;br /&gt;
Eine zentrale Größe bei der Anpassung ist die Länge der Antenne. Wenn man einen Dipol verwendet, muss diese zweckmäßigerweise so groß sein wie ein Viertel der Wellenlänge (&amp;quot;Lambda/4&amp;quot;). Die sind bei 868 MHz ca. 8,6 Zentimeter. Antennenlängen die länger oder kürzer sind verschlechtern in der Regel die Anpassung. Daher ist eine z.B. 10 Zentimeter lange Antenne (obwohl länger) schlechter als 1/4 Lambda mit 8,6 Zentimeter.&lt;br /&gt;
&lt;br /&gt;
Weitere Informationen sind im {{Link2Forum|Topic=93021|LinkText=Antennenthread}} des Forums zu finden. &lt;br /&gt;
&lt;br /&gt;
Über besondere Antennenkonstruktionen (bitte nach Colinear, Jpole, Yagi suchen) oder Antennen die &amp;quot;Lambda/2&amp;quot; oder gar &amp;quot;Lambda&amp;quot; lang sind  (also ca. 17,2 bzw. 34,5 Zentimeter) kann ein höherer Gewinn erreicht werden. Einher geht aber gleichzeitig eine stärkere Richtwirkung der Antenne. Je kürzer die Antenne, desto kugelförmiger die Abstrahlung. Bei längeren Antennen wird die Abstrahlung mehr und mehr zylinderähnlich, also mit horizontaler Richtwirkung (und in die Richtung ist das Signal dann stärker, daher der Antennen&amp;quot;gewinn&amp;quot;).&lt;br /&gt;
Das hat auch Nachteile, speziell wenn man auch &amp;quot;nach oben&amp;quot; funken will. Besonders wenn man Antennen länger als eine λ/4 Antenne (8,6 Zentimeter) in einem mehretagigen Haus verwenden will, muss man diese daher in der Regel waagerecht/horizontal ausrichten, da alles was in Richtung der Spitze (und dem Fuss) der Antenne liegt schlecht empfangen wird.&lt;br /&gt;
&lt;br /&gt;
Daher: Je mehr Gewinn die Antenne aufweist, desto besser ist die Sende und Empfangsleistung, aber desto mehr Gedanken muss man sich um die Ausrichtung der Antenne machen, um alle Geräte zu empfangen / zu erreichen. &amp;quot;Mehr dB&amp;quot; und speziell &amp;quot;länger&amp;quot; ist also nicht automatisch besser. &lt;br /&gt;
&lt;br /&gt;
Zu beachten ist auch, dass die Sendeleistung der Module gesetzlich geregelt ist und Spezialantennen mit höherem Gewinn ggf. nur an Empfängern erlaubt sind.&lt;br /&gt;
&lt;br /&gt;
Falls man den CUL mit RP-SMA Stecker geordert hat, aber keine passend lange RP-SMA-Antenne verfügbar ist, kann (nur für erste Tests) auch eine abschraubbare Antenne für 802.11b/g WLAN-Geräte (2,4&amp;amp;nbsp;GHz) benutzt werden, so diese anschlusstechnisch auf den RP-SMA-Stecker des CUL passt (dies funktioniert zumindest mit FS20- und EM-Geräten). Deren Länge ist wie oben diskutiert aber nicht optimal, besser ist auf jeden Fall eine speziell auf den Einsatzzweck (Frequenz) abgestimmte Antenne.&lt;br /&gt;
&lt;br /&gt;
== Antennenlänge ==&lt;br /&gt;
Die genauen Antennenlängen sind praktisch schwer zu ermitteln, da auch Zuleitung auf dem CUL zugerechnet werden müssten und ggf Dämpfungen (also z.B. Durchführung der Antenne durch ein Gehäuse, oder gebogene Antennen) die Antennenlänge weiter beeinflussen. Gleichzeitig haben schon Abweichungen von wenigen Millimetern messbaren Einfluss. Die Antennenlänge ist daher immer nur ein Kompromiss.&lt;br /&gt;
&lt;br /&gt;
Exakt berechnet ohne Störeinflüsse wären folgende Antennenlängen nutzbar:&lt;br /&gt;
 868,35 MHz (z.B. HM, FS20, FHT …)&lt;br /&gt;
 1/4 Lambda = 8,63 Zentimeter &lt;br /&gt;
 1/2 Lambda = 17,26 Zentimeter &lt;br /&gt;
 1 Lambda = 34,52 Zentimeter  (Bereits sehr hohe Richtwirkung)&lt;br /&gt;
&lt;br /&gt;
433,92 MHz  (z.B. Intertechno …)&lt;br /&gt;
 1/4 Lambda = 17,27 Zentimeter &lt;br /&gt;
 1/2 Lambda = 34,54 Zentimeter &lt;br /&gt;
&lt;br /&gt;
Folgende Antennenlängen bieten sich praktisch an, diese sind immer etwas kürzer als die optimale Länge, dies wird z.T. durch Leiterlänge im CUL kompensiert.:&lt;br /&gt;
&lt;br /&gt;
 8,6 Zentimeter als 1/4 Lambda für 868,35 MHz&lt;br /&gt;
 17,2 Zentimeter als 1/2 Lambda für 868,35 MHz und zugleich 1/4 Lambda für 433,92 MHz&lt;br /&gt;
 34,5 Zentimeter als Lambda für 868,35 MHz und zugleich 1/2 Lambda für 433,92 MHz&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
&lt;br /&gt;
=== RF-Tuning ===&lt;br /&gt;
Im Gegensatz zu den original FHZ-Zentralen ist das CUL recht schmalbandig, d.h. die Sende- und Empfangsfrequenz wird genauer eingehalten als z.&amp;amp;nbsp;B. bei einer FHZ1x00PC. Dies kann im Zusammenhang mit den eher ungenauen Sendern (z.&amp;amp;nbsp;B. der FHT Raumregler) zu Empfangsproblemen führen. Es kann daher mitunter sinnvoll sein, die Sende- und Empfangsbandbreite des CUL etwas zu erhöhen. Dies senkt jedoch gleichzeitig die Empfindlichkeit.&lt;br /&gt;
&lt;br /&gt;
Bei Empfangsproblemen von z.&amp;amp;nbsp;B. HEM-Sensoren oder dem S300TH kann man folgendes testen:&lt;br /&gt;
&lt;br /&gt;
* Man kann die Frequenz des CUL auf genau 868,35 MHz einstellen. Standardmäßig ist hier aus Kompatibilitätsgründen 868,30 MHz eingestellt. Diese Einstellung wird fest im NVRAM gespeichert und braucht nur einmal vorgenommen zu werden.&lt;br /&gt;
*: &amp;lt;code&amp;gt;set CUL freq 868.350&amp;lt;/code&amp;gt;&lt;br /&gt;
* Es ist möglich die &amp;quot;decision boundary&amp;quot; zu vergrößern, frei beschrieben: die &amp;quot;Entscheidungsgrenze&amp;quot; ob die empfangene Signalflanke digital &amp;quot;0&amp;quot; oder &amp;quot;1&amp;quot; darstellte ({{Link2Forum|Topic=8572|Message=44388|LinkText=siehe Diskussion hier}}). Möglich sind die Werte &amp;quot;4&amp;quot;, &amp;quot;8&amp;quot; und &amp;quot;16&amp;quot;. Default-Einstellung ist hier &amp;quot;4&amp;quot;. Zur Steigerung der Empfangsqualität soll es hilfreich sein, hier &amp;quot;8&amp;quot; einzustellen. Mitunter bringt jedoch erst die Einstellung auf &amp;quot;16&amp;quot; signifikante Verbesserungen beim Empfang von S300TH-Sensoren.&lt;br /&gt;
*: &amp;lt;code&amp;gt;set CUL sens 8&amp;lt;/code&amp;gt;&lt;br /&gt;
* Oft hilft auch, die Bandbreite auf z.&amp;amp;nbsp;B. 464 kHz aufzuweiten.&lt;br /&gt;
*: &amp;lt;code&amp;gt;set CUL bWidth 464&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Selbstbau-/Bastelprojekte ==&lt;br /&gt;
Innerhalb der FHEM-Community werden mittlerweile diverse Bastelprojekte zum Selbstbau eines CUL betrieben. Eine Auswahl dieser Projekte:&lt;br /&gt;
* [[Selbstbau CUL]]&lt;br /&gt;
* [[FHEMduino]]&lt;br /&gt;
* [[SIGNALduino]]&lt;br /&gt;
* [[MapleCUN]] mit STM32 Mikrocontroller&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* Hersteller / Bezugsquelle für CUL: [http://www.busware.de/tiki-index.php?page=CUL busware.de]&lt;br /&gt;
* Google groups [https://groups.google.com/group/cul-fans/ CUL fans], mittlerweile durch das Board {{Link2Forum|Area=cul-fans}} im FHEM Forum ergänzt/ersetzt&lt;br /&gt;
* CUL commandref [https://fhem.de/commandref.html#CUL]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Interfaces]]&lt;br /&gt;
[[Kategorie:CUL|!]]&lt;br /&gt;
[[Kategorie:433MHz]]&lt;br /&gt;
[[Kategorie:868MHz]]&lt;/div&gt;</summary>
		<author><name>Soulman</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=CUL&amp;diff=38751</id>
		<title>CUL</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=CUL&amp;diff=38751"/>
		<updated>2023-12-06T15:17:29Z</updated>

		<summary type="html">&lt;p&gt;Soulman: Umfangreiche Löschung von forenartigen Einträgen der Lösungsgeschichte einer Einzelperson, siehe Diskussion&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein &#039;&#039;&#039;CUL&#039;&#039;&#039; (&#039;&#039;&#039;C&#039;&#039;&#039;C1101 &#039;&#039;&#039;U&#039;&#039;&#039;SB &#039;&#039;&#039;L&#039;&#039;&#039;ite) ist eine Radiofrequenz/USB-Schnittstelle bestehend aus einem USB-Dongle mit externer [[CUL Ausstattung|Antenne]]. Im USB-Stecker kann ein 8&amp;amp;nbsp;bit Atmel Prozessor die im ISM/SRD-Band empfangenen RF-Daten onboard vorverarbeiten. Je nach aufgespielter [[#FW|Firmware]] kann das CUL verschiedene 868MHz [[CUL HomeMatic und FS20|Protokolle]] empfangen und senden, insbesondere die FS20/FHT/S300/EM/HMS Protokollfamilien. Durch eine kurzzeitige Umschaltung auf 433&amp;amp;nbsp;MHz sind weitere Protokolle zugänglich, z.&amp;amp;nbsp;B. Intertechno, viele Baumarkt-Funksteckdosen.  &lt;br /&gt;
&lt;br /&gt;
Die Firmware (culfw) ist quelloffen.  Sie wird auch von verwandten Schnittstellen verwendet, siehe [[CUNO]] (RF+OneWire/LAN-Übergang), [[COC]] (RF+OneWire/Rasberrybus-Übergang), CSM usw.&lt;br /&gt;
&lt;br /&gt;
Im Umfeld von FS20/FHT/EM/S300/HMS (&amp;quot;[[Rfmode|rfmode]] - [[SlowRF]]&amp;quot;) werden die amplitudenmodulierten 1&amp;amp;nbsp;kHz breiten Signale per [[#FW|culfw]] direkt dekodiert und dann per USB weitergegeben.&lt;br /&gt;
&lt;br /&gt;
Das CUL kann mittels des &#039;&#039;&#039;[[CUL (Modul)|CUL Moduls]]&#039;&#039;&#039; (00_CUL.pm) von FHEM angesprochen und somit wie eine FHZ1X00PC verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Das CUL kann auch im HM-Mode als HomeMatic Zentrale alternativ zur CCU oder dem [[HMLAN Konfigurator]] betrieben werden. Bei CULs älter als Version&amp;amp;#160;3 ist jedoch der Speicher zu klein, um die Software für FS20/FHT/S300/EM/HMS und HomeMatic zugleich im Speicher zu halten, hier muss man sich beim [[CUL an einer Fritzbox 7390 flashen|Flashen]] der Firmware für eine Protokollfamilie entscheiden. Mit zwei CULs ist aber auch der Mischbetrieb an einem FHEM Hostrechner möglich. Es ist jedoch nicht angeraten, den CUL bei HM-Geräten zu verwenden, siehe {{Link2Forum|Topic=68145|LinkText=Link}}&lt;br /&gt;
&lt;br /&gt;
Ebenso gibt es ein Modul zur Ansteuerung der [[MAX]]! Heizungsteuerung. Auch hier ist ein Mischbetrieb (MAX! und z.&amp;amp;nbsp;B. FS20 gleichzeitig über ein CUL) obwohl technisch nicht unmöglich {{Link2Forum|Topic=10510|LinkText=nicht angeraten}}.&lt;br /&gt;
&lt;br /&gt;
Ferner ist der Einsatz eines CUL als [[RFR CUL]] für den &#039;&#039;SlowRF&#039;&#039; Mode (jedoch nicht für den &#039;&#039;HomeMatic&#039;&#039; Mode) möglich, um die Reichweite zu erhöhen. Die Verbindung erfolgt hierbei über Funk, sodass keine USB Verbindung zum FHEM Hostrechner erforderlich ist.&lt;br /&gt;
&lt;br /&gt;
Alle diese Modi sind in der Original-[[#FW|culfw]] enthalten und werden z.B. durch die Wahl des &#039;&#039;rfmode&#039;&#039; eingestellt.&lt;br /&gt;
&lt;br /&gt;
Obwohl die nominale Betriebsfrequenz der FHT- und FS20-Komponenten 868,35 MHz beträgt, ist bei aktuellen CUL-Firmwareversionen zum Betrieb mit FHEM die Frequenz  868,30 MHz vorgesehen. Dies hat sich als Kompromiss zum besseren Empfang von EM1000EM (Energiemonitor) Geräten bewährt, &#039;&#039;&#039;obwohl&#039;&#039;&#039; diese nominal mit 868,360 MHz arbeiten. Praktisch ist die Genauigkeit der Sendefrequenz der meisten &#039;&#039;SlowRF&#039;&#039; Geräte wegen der primitiven Sender sehr schlecht und kann deutlich von der nominalen Frequenz abweichen.&lt;br /&gt;
&lt;br /&gt;
Frequenz und Bandbreite können daher im &#039;&#039;SlowRF&#039;&#039; Mode frei angepasst und somit für die örtlichen Empfangsgegebenheiten optimiert werden.&lt;br /&gt;
&lt;br /&gt;
== Hinweise zum Betrieb mit FHEM ==&lt;br /&gt;
&#039;&#039;&#039;Anmerkung:&#039;&#039;&#039; Nachfolgende Beispiele sind so wie dargestellt in die FHEM-Eingabezeile oder per Telnet auf FHEM zu übertragen und per &amp;lt;Taste&amp;gt;Enter&amp;lt;/Taste&amp;gt; abzuschicken (nicht &amp;quot;save&amp;quot; klicken); &#039;&#039;&#039;&#039;&#039;myCUL&#039;&#039;&#039;&#039;&#039; ist dabei nur ein Platzhalter und durch den Namen &#039;&#039;&#039;Ihres&#039;&#039;&#039; CUL zu ersetzen. &lt;br /&gt;
&lt;br /&gt;
* Ist Empfang eingeschaltet ?&lt;br /&gt;
*: &amp;lt;code&amp;gt; get myCUL raw C35&amp;lt;/code&amp;gt; (13 = ja, z.&amp;amp;nbsp;b.: C35 = 0D / 13)&lt;br /&gt;
* Auslesen der culfw Version:&lt;br /&gt;
*: &amp;lt;code&amp;gt;get myCUL raw V&amp;lt;/code&amp;gt;&lt;br /&gt;
* LED ausschalten (Achtung: Buchstabe l (L) vorweg für LED, keine Zahl 1)&lt;br /&gt;
*: &amp;lt;code&amp;gt;set myCUL raw l00&amp;lt;/code&amp;gt;&lt;br /&gt;
* LED einschalten&lt;br /&gt;
*: &amp;lt;code&amp;gt;set myCUL raw l01&amp;lt;/code&amp;gt; Blinkt bei Senden oder Empfangen von Paketen&lt;br /&gt;
* LED soll blinken (einmal in der Sekunde)&lt;br /&gt;
*: &amp;lt;code&amp;gt;set myCUL raw l02&amp;lt;/code&amp;gt;&lt;br /&gt;
* Reboot / Reset des CUL:&lt;br /&gt;
*: &amp;lt;code&amp;gt;set myCUL raw B00&amp;lt;/code&amp;gt; Andere Werte als 00 starten das CUL im Bootloader-Modus (=&amp;amp;gt; neue Firmware)&lt;br /&gt;
* Freie CUL Sendezeit ([[1% Regel]]):&lt;br /&gt;
*: &amp;lt;code&amp;gt;get myCUL raw X&amp;lt;/code&amp;gt; 2. Wert ist Sendezeit in 10ms Slots, ein FS20 Befehl braucht ca. 210ms (also 21 Slots), eine FHT Kommunikation wesentlich mehr. Alternativ auch &amp;lt;code&amp;gt;get myCUL credit10ms&amp;lt;/code&amp;gt; ergibt Sendezeit in 10ms Slots&lt;br /&gt;
* Freie Kapazität des FHT Buffers&lt;br /&gt;
*: &amp;lt;code&amp;gt; get myCUL raw T03&amp;lt;/code&amp;gt; Ergebnis Bytes in HEX. Leer = 4a&lt;br /&gt;
* Inhalt des FHT Buffers&lt;br /&gt;
*: &amp;lt;code&amp;gt; get myCUL raw T02&amp;lt;/code&amp;gt; (CUL V2 Buffer ist 74 Bytes groß, Platz für 14 bis 31 FHT Messages). Rückgabe n/a = Buffer ist leer&lt;br /&gt;
* Eingestellte [[Was_ist_der_Hauscode%3F|FHT-ID]]&lt;br /&gt;
*: &amp;lt;code&amp;gt; get myCUL raw T01&amp;lt;/code&amp;gt; &lt;br /&gt;
* Eingestellte Frequenz, Bandbreite etc. Ausgeben&lt;br /&gt;
*: &amp;lt;code&amp;gt; get myCUL ccconf&amp;lt;/code&amp;gt;. &amp;lt;br&amp;gt;Rückgabe z.&amp;amp;nbsp;B.: &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;myCUL ccconf =&amp;amp;gt; freq:868.300MHz bWidth:325kHz rAmpl:42dB sens:4dB&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* eingestelle Bandbreite erhöhen (z.B. auf 464 kHz, mehr hat meist keinen Sinn):&lt;br /&gt;
*:&amp;lt;code&amp;gt;set myCUL bWidth 464&amp;lt;/code&amp;gt;&lt;br /&gt;
* Einstellen der Sendestärke:&lt;br /&gt;
*: &amp;lt;code&amp;gt;set myCUL raw x09&amp;lt;/code&amp;gt; Einstellen der Sendeleistung.&lt;br /&gt;
&lt;br /&gt;
Gültige Werte für die Sendeleistung sind 00-09. Verwendet werden sollten nur die Werte 05-09, diese entsprechen&lt;br /&gt;
-10/-5/0/5/10 Sendeleistung in dB. Default ist x08 = +5dB. Bitte im Interesse von Nachbarn und der Abhörsicherheit den kleinsten problemlos funktionierenden Wert einstellen. Dies ist meistens x07 oder x08. Da speziell die Kommunikation mit den FHTs bidirektional ist, kann die Kommunikation durch höhere Werte oft nicht verbessert werden, da die FHTs selber dadurch nicht stärker senden. Besser versuchen, Lage und Antennenausrichtung des CUL zu verändern. &lt;br /&gt;
&lt;br /&gt;
Werte x00-x04 sind &#039;&#039;&#039;mit&#039;&#039;&#039; Ramping (&#039;&#039;sanfter&#039;&#039; Flankenanstieg anstatt Rechteck) und führen zum Verlust der Kommunikationsfähigkeit mit anderen CULs, z.&amp;amp;nbsp;B. [[RFR CUL]], da die CULs Rampingsignale nicht verstehen (FS20 / FHT und ähnliche Empfänger aber sehr wohl). &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Beim CUL im HomeMatic-Modus kann man (ohne Firmware-Modifikation) die Empfangs-/Sendeparameter &#039;&#039;&#039;nicht&#039;&#039;&#039; verstellen. Die üblichen freq/x09 etc. haben hier keine Wirkung ({{Link2Forum|Topic=10203|Message=57191|LinkText=Quelle}}).&lt;br /&gt;
&lt;br /&gt;
Weiterhin kann man zunehmend mehr Debuggingoutput auf dem CUL einschalten mit&amp;amp;#160;:&lt;br /&gt;
* &amp;lt;code&amp;gt; set CUL1 raw X61&amp;lt;/code&amp;gt; Communication wird im Detail angezeigt&lt;br /&gt;
* &amp;lt;code&amp;gt;set CUL1 raw X25&amp;lt;/code&amp;gt; auch checksum Fehler / unerkannte Protokolle werden gemeldet&lt;br /&gt;
* &amp;lt;code&amp;gt;set CUL1 raw X2F&amp;lt;/code&amp;gt; alle empfangenen Flanken werden gemeldet&lt;br /&gt;
* &amp;lt;code&amp;gt;set CUL1 raw X80&amp;lt;/code&amp;gt; RSSI / Signalstärke jeder Flanke wird gemeldet&lt;br /&gt;
* &amp;lt;code&amp;gt;set CUL1 raw X21&amp;lt;/code&amp;gt; normal Modus&lt;br /&gt;
&lt;br /&gt;
Achtung: Auf Groß- und Kleinschreibung des &amp;quot;x,X&amp;quot; achten!&lt;br /&gt;
&lt;br /&gt;
Die kompletten Kommandos mit Erklärung für CUL sind in der [http://culfw.de/commandref.html commandref] zu finden.&lt;br /&gt;
&lt;br /&gt;
== Versionen ==&lt;br /&gt;
Das CUL gibt es in mehreren Versionen, die sich überwiegend in Prozessor und Speicherkonfiguration unterscheiden.&lt;br /&gt;
&lt;br /&gt;
* CUL V1 - AT90USB162 Prozessor, 0,5 kB RAM, 16 kB Flashmemory, 0,5 kB EEPROM. Einsatzfähigkeit unbekannt (aber vermutlich wie V2). Wird nicht mehr hergestellt.&lt;br /&gt;
* CUL V2 - AT90USB162 Prozessor, 0,5 kB RAM, 16 kB Flashmemory, 0,5 kB EEPROM. Einsatzfähig. Der Flashspeicher ist jedoch zu klein für eine culfw (CUL Firmware), die Code für &#039;&#039;SlowRF&#039;&#039; Geräte und zugleich &#039;&#039;HomeMatic&#039;&#039; Geräte enthält. Es muss also vor dem Flashen der Firmware zwischen zwei jeweils reduzierten Versionen gewählt werden. Da ein CUL ohnehin nicht beide Sendemodi &#039;&#039;&#039;zeitgleich&#039;&#039;&#039; betreiben kann, ist dies keine wirkliche Einschränkung. Wird nicht mehr hergestellt.&lt;br /&gt;
* CUL V3 - ATMega32U4 Prozessor, 2,5 kB RAM, 32 kB Flashmemory, 1 kB EEPROM). Voll einsatzfähig.&lt;br /&gt;
* CUL V4 - ATMega32U2 Prozessor, 1 kB RAM, 32 kB Flashmemory, 1 kB EEPROM. Voll einsatzfähig. Genaugenommen ein &amp;quot;Sparmodell&amp;quot; des V3, um Lieferengpässe des ATMega32U4 Prozessors zu umgehen. Der reduzierte RAM-Speicher verursacht (zumindest gegenwärtig) beim Betrieb mit culfw und FHEM keine Einschränkungen oder Nachteile. Achtung: Flashen des CULv4 setzt DFU-Programmer 0.5.4 oder höher voraus.&lt;br /&gt;
&lt;br /&gt;
Die für die aktuellen Modelle lieferbare Abschirmung ist in der Regel nicht notwendig.&lt;br /&gt;
&lt;br /&gt;
== Firmware {{Anker|FW}} ==&lt;br /&gt;
Die für den CUL und verwandte Hardware wie [[CUN]] und CUR im Zusammenhang mit FHEM überwiegend eingesetzte Firmware culfw findet sich auf der&lt;br /&gt;
* [http://culfw.de CUL Firmware Homepage]&lt;br /&gt;
Dort kann die jeweils aktuelle Version nachgesehen und heruntergeladen werden.&lt;br /&gt;
Alte Stände, Version für Entwickler und ganz aktuelle Änderungen findet man auf der&lt;br /&gt;
* [https://sourceforge.net/projects/culfw/ Sourceforge Projektseite der culfw]&lt;br /&gt;
Hier kann man sich z.B. mit&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
svn co svn://svn.code.sf.net/p/culfw/code/trunk/culfw&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
die aktuelle Version laden.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich gibt es [&amp;quot;leider&amp;quot;...!?] folgende Forks der originalen culfw mit dortigen speziellen Anpassungen/Abweichungen:&lt;br /&gt;
* [https://github.com/heliflieger/a-culfw Alternative culfw for cul devices] auf GitHub und im {{Link2Forum|Topic=35064|LinkText=Forum}} mit Anpassungen unter anderem für InterTechno. Hier könnte es aber zu Funktionseinschränkungen bei anderen Protokollen kommen. In dieser Version ist auch ein Portierung auf ARM-Prozessoren enthalten (siehe {{Link2Forum|Topic=38404|LinkText=Forum}}) mit der die CUL-Firmware auch auf dem HM-CFG-USB-2 und dem [[MAX]] Cube betrieben werden kann.&lt;br /&gt;
* {{Link2Forum|Topic=24436|LinkText=Timestamp Firmware}} mit speziellen Anpassungen für HomeMatic. Bei HomeMatic ist das Timing der Telegramme entscheidend sonst kann es zu &amp;quot;MISSING ACK&amp;quot; bzw. &amp;quot;RESPONSE TIMEOUT:RegisterRead&amp;quot; u.ä. Meldungen kommen.&lt;br /&gt;
&lt;br /&gt;
Alternativ zu den [a]culfw-Firmwares gibt es [[SIGNALduino]] (zumindest auf manchen Hardware-Konstellationen umgeflashed direkt anwendbar und 1:1 lauffähig; inkl. normierter/kompatibler Weiterleitung/Dispatching auf die gleichen zentralen Geräte-Protokoll-Dekodier-Module, die auch von anderer Transceiver-Hardware/-Firmware - CUL etc. - ähnlich angebunden werden (sollen); somit Kommunikation mit vielen Funk-Komponenten auch dort idealerweise immer 1:1 funktionierend).&lt;br /&gt;
&lt;br /&gt;
Generell ist das Angebot an Speicherplatz auf dem im CUL verwendeten ATMega32U2 sehr eingeschränkt, wodurch Erweiterungen ohne Abstriche an anderer Stelle kaum mehr möglich sind. Es wird also die optimale CUL-Firmware für alle Zwecke nie geben, so dass man die Auswahl am konkreten Bedarf klären muss. Wer die Firmware selbst compiliert kann gezielt Funktionen die nicht benötigt werden weglassen und dafür ggf. Funktionen die sonst nicht eingefügt sind hinzufügen.&lt;br /&gt;
&lt;br /&gt;
== Sendefrequenz ==&lt;br /&gt;
Das CUL gibt es in Ausführungen für 868 und 433 MHz. &lt;br /&gt;
Die Sende- und Empfangsfrequenz des CUL sind in weiten Bereichen einstellbar, im &#039;&#039;SlowRF&#039;&#039; Mode auch durch direkte Befehle aus FHEM (im &#039;&#039;HomeMatic&#039;&#039; Mode derzeit nicht unterstützt). Der bauliche Unterschied der 868 und 433 MHz CULs ist ein auf das Frequenzband richtig abgestimmter HF-Eingangskreis inklusive Antennenlänge.&lt;br /&gt;
&lt;br /&gt;
Es ist durchaus möglich, ein 868 MHz CUL auf 433 MHz einzustellen. Da dann aber die HF-Eingangskreis-Abstimmung und Antennenlänge nicht korrekt sind, ist Empfangs- und Sendeleistung suboptimal, die Reichweite sinkt. Dennoch wird diese Möglichkeit des freien Einstellens durch das FHEM Intertechnomodul genutzt, da Intertechnokomponenten mit 433 MHz arbeiten. Dazu wird beim Senden eines Intertechno-Befehls die Frequenz eines 868 MHz CULs kurz umgestellt.&lt;br /&gt;
Besser ist aber die Nutzung eines dedizierten 433 MHz CUL für Intertechno.&lt;br /&gt;
&lt;br /&gt;
== Antenne ==&lt;br /&gt;
Der CUL ist mit RP-SMA-Stecker für die Antenne aber auch mit angelöteter Drahtantenne lieferbar.&lt;br /&gt;
Funktional besteht kein Unterschied: auch die &amp;quot;richtige&amp;quot; Antenne ist (in diesem Fall) nur ein Draht, jedoch  gummiummantelt und eventuell mit einem Knickgelenk und einem Schraubanschluss versehen, d.h. die Drahtantenne sieht nur unschön aus.&lt;br /&gt;
&lt;br /&gt;
Bei einer Antenne sind zwei Dinge auseinanderzuhalten: Einmal die Anpassung sowie die Abstrahlungscharakteristik. &lt;br /&gt;
* &#039;&#039;&#039;Anpassung&#039;&#039;&#039; Eine Antenne ist typischerweise für eine bestimmte Frequenz konstruiert. Wenn die Konstruktionsfrequenz nicht mit der Frequenz übereinstimmt, auf der die Antenne senden und empfangen soll, ist die Anpassung schlecht. Dies führt zu Verlusten bei der Übertragung. Typische Kennwerte für eine Anpassung sind das Stehwellenverhältnis (SWR) sowie die Impedanz. Beide Größen können per Messgerät bestimmt werden, inzwischen gibt es für 150 Euro entsprechende Geräte. Wer eine Antenne selbst konstruiert, sollte ein solches Gerät zumindest ausborgen, um seine Antenne zu bestimmen.&lt;br /&gt;
* &#039;&#039;&#039;Abstrahlung&#039;&#039;&#039; Es gibt mehrere Arten von Antennen, die sich in der Art der Strahlung unterscheiden. Richtantennen versuchen Signale nur in eine bestimmte Richtung zu versenden, Dipole versuchen in die gesamte Umgebung zu senden bzw zu empfangen. Während es bei Anpassung nur die Kategorien &amp;quot;gut&amp;quot; und &amp;quot;schlecht&amp;quot; gibt, ist bei der Abstrahlung eher auf &amp;quot;zweckmäßig&amp;quot; und &amp;quot;unzweckmäßig&amp;quot; zu achten.&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich hängen Abstrahlung und Antennengewinn zusammen. Die Energie, die eine (perfekt angepasste) Antenne strahlt, wird durch die Antennenkonstruktion weder verdoppelt oder halbiert, sondern nur gebündelt. Während ein Dipol in alle Richtungen abstrahlt, bündelt eine Richtantenne dieselbe Energie in eine bestimmte Richtung. Insofern muss man bei der Antennenkonstruktion überlegen, woher die Signale kommen bzw wohin sie gehen sollen. Jeder Antennengewinn geht einher mit einer Einschränkung bei der Sende/Empfangsrichtung, es sei denn, man verbessert die Anpassung der Antenne. &lt;br /&gt;
&lt;br /&gt;
Leider kann man auch bei gekauften Antennen nicht davon ausgehen, dass sie korrekt angepasst sind. Es gibt Berichte im Forum, wonach es insbesondere bei 433 MHz-Antennen eher ein Glücksspiel ist, ob man eine vernünftig angepasste Antenne bekommt. Daher kann es durchaus sein, dass eine Eigenbauantenne wesentlich bessere Werte liefert als eine käuflich erworbene. &lt;br /&gt;
&lt;br /&gt;
Eine zentrale Größe bei der Anpassung ist die Länge der Antenne. Wenn man einen Dipol verwendet, muss diese zweckmäßigerweise so groß sein wie ein Viertel der Wellenlänge (&amp;quot;Lambda/4&amp;quot;). Die sind bei 868 MHz ca. 8,6 Zentimeter. Antennenlängen die länger oder kürzer sind verschlechtern in der Regel die Anpassung. Daher ist eine z.B. 10 Zentimeter lange Antenne (obwohl länger) schlechter als 1/4 Lambda mit 8,6 Zentimeter.&lt;br /&gt;
&lt;br /&gt;
Weitere Informationen sind im {{Link2Forum|Topic=93021|LinkText=Antennenthread}} des Forums zu finden. &lt;br /&gt;
&lt;br /&gt;
Über besondere Antennenkonstruktionen (bitte nach Colinear, Jpole, Yagi suchen) oder Antennen die &amp;quot;Lambda/2&amp;quot; oder gar &amp;quot;Lambda&amp;quot; lang sind  (also ca. 17,2 bzw. 34,5 Zentimeter) kann ein höherer Gewinn erreicht werden. Einher geht aber gleichzeitig eine stärkere Richtwirkung der Antenne. Je kürzer die Antenne, desto kugelförmiger die Abstrahlung. Bei längeren Antennen wird die Abstrahlung mehr und mehr zylinderähnlich, also mit horizontaler Richtwirkung (und in die Richtung ist das Signal dann stärker, daher der Antennen&amp;quot;gewinn&amp;quot;).&lt;br /&gt;
Das hat auch Nachteile, speziell wenn man auch &amp;quot;nach oben&amp;quot; funken will. Besonders wenn man Antennen länger als eine λ/4 Antenne (8,6 Zentimeter) in einem mehretagigen Haus verwenden will, muss man diese daher in der Regel waagerecht/horizontal ausrichten, da alles was in Richtung der Spitze (und dem Fuss) der Antenne liegt schlecht empfangen wird.&lt;br /&gt;
&lt;br /&gt;
Daher: Je mehr Gewinn die Antenne aufweist, desto besser ist die Sende und Empfangsleistung, aber desto mehr Gedanken muss man sich um die Ausrichtung der Antenne machen, um alle Geräte zu empfangen / zu erreichen. &amp;quot;Mehr dB&amp;quot; und speziell &amp;quot;länger&amp;quot; ist also nicht automatisch besser. &lt;br /&gt;
&lt;br /&gt;
Zu beachten ist auch, dass die Sendeleistung der Module gesetzlich geregelt ist und Spezialantennen mit höherem Gewinn ggf. nur an Empfängern erlaubt sind.&lt;br /&gt;
&lt;br /&gt;
Falls man den CUL mit RP-SMA Stecker geordert hat, aber keine passend lange RP-SMA-Antenne verfügbar ist, kann (nur für erste Tests) auch eine abschraubbare Antenne für 802.11b/g WLAN-Geräte (2,4&amp;amp;nbsp;GHz) benutzt werden, so diese anschlusstechnisch auf den RP-SMA-Stecker des CUL passt (dies funktioniert zumindest mit FS20- und EM-Geräten). Deren Länge ist wie oben diskutiert aber nicht optimal, besser ist auf jeden Fall eine speziell auf den Einsatzzweck (Frequenz) abgestimmte Antenne.&lt;br /&gt;
&lt;br /&gt;
== Antennenlänge ==&lt;br /&gt;
Die genauen Antennenlängen sind praktisch schwer zu ermitteln, da auch Zuleitung auf dem CUL zugerechnet werden müssten und ggf Dämpfungen (also z.B. Durchführung der Antenne durch ein Gehäuse, oder gebogene Antennen) die Antennenlänge weiter beeinflussen. Gleichzeitig haben schon Abweichungen von wenigen Millimetern messbaren Einfluss. Die Antennenlänge ist daher immer nur ein Kompromiss.&lt;br /&gt;
&lt;br /&gt;
Exakt berechnet ohne Störeinflüsse wären folgende Antennenlängen nutzbar:&lt;br /&gt;
 868,35 MHz (z.B. HM, FS20, FHT …)&lt;br /&gt;
 1/4 Lambda = 8,63 Zentimeter &lt;br /&gt;
 1/2 Lambda = 17,26 Zentimeter &lt;br /&gt;
 1 Lambda = 34,52 Zentimeter  (Bereits sehr hohe Richtwirkung)&lt;br /&gt;
&lt;br /&gt;
433,92 MHz  (z.B. Intertechno …)&lt;br /&gt;
 1/4 Lambda = 17,27 Zentimeter &lt;br /&gt;
 1/2 Lambda = 34,54 Zentimeter &lt;br /&gt;
&lt;br /&gt;
Folgende Antennenlängen bieten sich praktisch an, diese sind immer etwas kürzer als die optimale Länge, dies wird z.T. durch Leiterlänge im CUL kompensiert.:&lt;br /&gt;
&lt;br /&gt;
 8,6 Zentimeter als 1/4 Lambda für 868,35 MHz&lt;br /&gt;
 17,2 Zentimeter als 1/2 Lambda für 868,35 MHz und zugleich 1/4 Lambda für 433,92 MHz&lt;br /&gt;
 34,5 Zentimeter als Lambda für 868,35 MHz und zugleich 1/2 Lambda für 433,92 MHz&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
&lt;br /&gt;
=== RF-Tuning ===&lt;br /&gt;
Im Gegensatz zu den original FHZ-Zentralen ist das CUL recht schmalbandig, d.h. die Sende- und Empfangsfrequenz wird genauer eingehalten als z.&amp;amp;nbsp;B. bei einer FHZ1x00PC. Dies kann im Zusammenhang mit den eher ungenauen Sendern (z.&amp;amp;nbsp;B. der FHT Raumregler) zu Empfangsproblemen führen. Es kann daher mitunter sinnvoll sein, die Sende- und Empfangsbandbreite des CUL etwas zu erhöhen. Dies senkt jedoch gleichzeitig die Empfindlichkeit.&lt;br /&gt;
&lt;br /&gt;
Bei Empfangsproblemen von z.&amp;amp;nbsp;B. HEM-Sensoren oder dem S300TH kann man folgendes testen:&lt;br /&gt;
&lt;br /&gt;
* Man kann die Frequenz des CUL auf genau 868,35 MHz einstellen. Standardmäßig ist hier aus Kompatibilitätsgründen 868,30 MHz eingestellt. Diese Einstellung wird fest im NVRAM gespeichert und braucht nur einmal vorgenommen zu werden.&lt;br /&gt;
*: &amp;lt;code&amp;gt;set CUL freq 868.350&amp;lt;/code&amp;gt;&lt;br /&gt;
* Es ist möglich die &amp;quot;decision boundary&amp;quot; zu vergrößern, frei beschrieben: die &amp;quot;Entscheidungsgrenze&amp;quot; ob die empfangene Signalflanke digital &amp;quot;0&amp;quot; oder &amp;quot;1&amp;quot; darstellte ({{Link2Forum|Topic=8572|Message=44388|LinkText=siehe Diskussion hier}}). Möglich sind die Werte &amp;quot;4&amp;quot;, &amp;quot;8&amp;quot; und &amp;quot;16&amp;quot;. Default-Einstellung ist hier &amp;quot;4&amp;quot;. Zur Steigerung der Empfangsqualität soll es hilfreich sein, hier &amp;quot;8&amp;quot; einzustellen. Mitunter bringt jedoch erst die Einstellung auf &amp;quot;16&amp;quot; signifikante Verbesserungen beim Empfang von S300TH-Sensoren.&lt;br /&gt;
*: &amp;lt;code&amp;gt;set CUL sens 8&amp;lt;/code&amp;gt;&lt;br /&gt;
* Oft hilft auch, die Bandbreite auf z.&amp;amp;nbsp;B. 464 kHz aufzuweiten.&lt;br /&gt;
*: &amp;lt;code&amp;gt;set CUL bWidth 464&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Selbstbau-/Bastelprojekte ==&lt;br /&gt;
Innerhalb der FHEM-Community werden mittlerweile diverse Bastelprojekte zum Selbstbau eines CUL betrieben. Eine Auswahl dieser Projekte:&lt;br /&gt;
* [[Selbstbau CUL]]&lt;br /&gt;
* [[FHEMduino]]&lt;br /&gt;
* [[SIGNALduino]]&lt;br /&gt;
* [[MapleCUN]] mit STM32 Mikrocontroller&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* Hersteller / Bezugsquelle für CUL: [http://www.busware.de/tiki-index.php?page=CUL busware.de]&lt;br /&gt;
* Google groups [https://groups.google.com/group/cul-fans/ CUL fans], mittlerweile durch das Board {{Link2Forum|Area=cul-fans}} im FHEM Forum ergänzt/ersetzt&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Interfaces]]&lt;br /&gt;
[[Kategorie:CUL|!]]&lt;br /&gt;
[[Kategorie:433MHz]]&lt;br /&gt;
[[Kategorie:868MHz]]&lt;/div&gt;</summary>
		<author><name>Soulman</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Diskussion:CUL&amp;diff=38750</id>
		<title>Diskussion:CUL</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Diskussion:CUL&amp;diff=38750"/>
		<updated>2023-12-06T15:16:23Z</updated>

		<summary type="html">&lt;p&gt;Soulman: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Abschnittslöschungen aus dem Artikel==&lt;br /&gt;
Ich habe mir erlaubt mal diesen ganzen Abschnitt mit den LockUps, Kabeldicken, ach ne doch nicht?, nanCUL Problemen und so aus dem Artikel zu entfernen.&lt;br /&gt;
Das sind im Grunde eher Forumseinträge und es hilft dem Interessierten nicht unbedingt weiter wenn er im Artikel lesen muss, was eine einzelner Nutzer mal dachte was seine spezifischen Probleme löste und das war - &amp;quot;update&amp;quot;- dann doch nicht der Fall.&lt;br /&gt;
&lt;br /&gt;
Auch die Hinweise auf eine Fehlkonfiguration von Sendpool gehört hier nicht rein, wenn schon dann in den Artikel zu &amp;quot;Sendpool&amp;quot;. Es so darzustellen als sei es ein Bug in der culfw, weil das CUL bei Fehlkonfiguration ... fehlfunktioniert ... halte ich auch für eher weit hergeholt.&lt;br /&gt;
&lt;br /&gt;
Kurzum: So funktionieren Wikiartikel eher nicht denke ich, da sollten gesicherte Erkenntnisse stehen.&lt;br /&gt;
&lt;br /&gt;
Insgesamt muss das, wenn es drin bleiben soll, deutlich gekürzt und die Vermutungen und persönliche Einzelerfahrungen bereinigt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
_______________gelöschter___abschnitt___________________________________________________&lt;br /&gt;
&lt;br /&gt;
Übertragungs-Stall nach zu vielen Einträgen in der Queue&lt;br /&gt;
&lt;br /&gt;
Ich habe mich ewig damit rumgeärgert, dass die Übertragung zu bestimmten häufig angesprochenen Geräten zusammenbrach, sobald die Queue zu lang wurde (FHEM: &#039;list CUL&#039;).&lt;br /&gt;
Irgendwann habe ich dann zufällig herausgefunden, dass dieses sehr fragwürdige Anwachsen der Queue an einer krassen [[Sendpool]]-Fehlkonfiguration lag: ich hatte dort ein Transceiver-Device mit angegeben, welches den [[Sendpool]]-Mechanismus (noch) gar nicht unterstützt!&lt;br /&gt;
Sobald ich dieses falsche Gerät aus der Sendpool-Element-Liste entfernt hatte, war Ruhe --&amp;gt; BUG im Modul (es kann nicht sein, dass ein Device ohne [[Sendpool]]-Support das Queue-Handling so zerschießt). Dieser Bug existiert allerdings wohl weiterhin (das Perl-Handling war mir etwas zu verwirrend, um direkt zu sehen, wo das Problem ist) --&amp;gt; sollte nachgestellt und gefixt werden.&lt;br /&gt;
&lt;br /&gt;
Harter Lockup des CUL&lt;br /&gt;
&lt;br /&gt;
Trotz behobenem (erkanntem) Queue-Problem gibt es weiterhin Probleme (&amp;quot;Problem #2&amp;quot;): es passiert - recht selten -, dass sich der nanoCUL komplett aufhängt, mit hektisch blinkender LED.&lt;br /&gt;
Es ist in diesem Fall noch nicht einmal mit dem Reset-Taster möglich, den Stick zu resetten - es ist also tatsächlich nötig, das USB-Kabel komplett zu ziehen. Wenigstens automatisieren lassen würde sich dieser Workaround wohl per [https://stackoverflow.com/questions/4702216/controlling-a-usb-power-supply-on-off-with-linux uhubctl].&lt;br /&gt;
Wäre hilfreich, zu wissen, wie man dieses Problem sinnvoll tracen (somit: festnageln) kann.&lt;br /&gt;
&lt;br /&gt;
Device-Attribute wie &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; etc. könnten evt. den Zeitpunkt der letzten Aktivität verdeutlichen; dann im FHEM-Log um diesen Zeitpunkt herum suchen, um Auffälligkeiten/Spezialitäten zu erkennen. Und dann muss man, wenn man Pech hat, eine custom culfw bauen, die entsprechendes Reporting mit eingebaut hat...&lt;br /&gt;
&lt;br /&gt;
(nanoCUL; V 1.26.00 a-culfw Build: 267).&lt;br /&gt;
&lt;br /&gt;
UPDATE: die Lösung des Problems steht evtl. im Forum (Lockup beseitigt durch Optiboot bootloader): &lt;br /&gt;
: {{Link2Forum|Topic=73144|Message=977406|LinkText=[Gelöst] Nanocul LED blinkt schnell}}.&lt;br /&gt;
[https://www.ebay.de/itm/1-3-mal-Flash-Service-fur-ZigBee-nanoCUL-JeeLink-Shelly-Sonoff-Blitzwolf-Gosund/264472055531] scheint das zu bestätigen:&lt;br /&gt;
&amp;quot;Weiterhin bieten wir beim nanoCUL an, einen alternativen Bootloader (Optiboot Bootloader) zu flashen.&lt;br /&gt;
Dieser verhindert das Abstürzen des nanoCUL&#039;s im Betrieb z.B. bei FHEM. (Stichwort: opened)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
--&amp;gt; Empfehlung: Redundanz für nahtlosen Weiterbetrieb schaffen: weiteren CUL kaufen, dessen Inbetriebnahme erfolgreich testen, dann einen der CULs auf optiboot umflashen (...lassen? Siehe bekanntes Online-Auktionshaus...), und testen.&lt;br /&gt;
(Idee: dreckiger Workaround: mit mehreren CULs könnte man sich auch ein Script schreiben, das zwischen ihnen umschalten kann, sobald es mal wieder Probleme gibt)&lt;br /&gt;
&lt;br /&gt;
Ein weiterer Bericht über CUL-Lockups (dort reproduzierbar/deterministisch, und Regression-Bug): [https://github.com/heliflieger/a-culfw/issues/23 Selfmade Cul freezing with blinking LED when sending ITv3 messages      #23]&lt;br /&gt;
&lt;br /&gt;
Randnotiz: interessante Optiboot-Modifikation, die es trotz Hardware-Sperren erreicht, per Software den Bootloader-Bereich zu flashen: [https://hackaday.com/2015/07/03/arduinos-and-other-avrs-write-to-own-flash/ Arduinos (and Other AVRs) Write To Own Flash]&lt;br /&gt;
&lt;br /&gt;
Evt. ist auch ein USB-Port-Reset ein funktionierender Workaround (bitte Text als bestätigt umformulieren, falls das hilft): [https://www.computerhilfen.de/info/usb-reset-am-raspberry-pi-usb-ports-zuruecksetzen.html], erwähnt in diesem {{Link2Forum|Topic=77380|Message=783352|LinkText=Forenbeitrag}}.&lt;br /&gt;
UPDATE: ein erster Test (Device herausfinden [https://unix.stackexchange.com/questions/81754/how-to-match-a-ttyusbx-device-to-a-usb-serial-device] via fhem log infos etc., fhem shutdown, usbreset, start fhem) hat bei mir nicht funktioniert (&amp;quot;get ccconf&amp;quot; --&amp;gt; &amp;quot;No FD&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Ständige Lockups&lt;br /&gt;
Falls Lockups gefühlt &amp;quot;ständig&amp;quot; passieren sollten (alle paar Tage, oder fast täglich insb. bei warmem Wetter), dann könnte es z.B. an einem schlechten/kaputten Kabel liegen (bei mir: dünne USB-2-&amp;quot;Drachenschnur&amp;quot;, mit Bissmarken o.ä. - durch ein gutes dickes USB-3-Kabel ersetzt und sofort dramatisch robuster - UPDATE: das war der erste Eindruck innerhalb weniger Tage, aber längerfristig war es gefühlt nicht wirklich besser).&lt;br /&gt;
&lt;br /&gt;
_____________________________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
Ich will hier dem Ersteller dieses Erfahrungsbereichtes nicht auf die Füsse treten, zumal man da eine &amp;quot;Leidengeschichte&amp;quot;rauslesen kann, aber wir sollten überlegen, was  andern Lesern tatsächlich verwertbare Informationen liefert.&lt;br /&gt;
--[[Benutzer:Soulman|Soulman]] ([[Benutzer Diskussion:Soulman|Diskussion]]) 16:15, 6. Dez. 2023 (CET)&lt;/div&gt;</summary>
		<author><name>Soulman</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Diskussion:CUL&amp;diff=38749</id>
		<title>Diskussion:CUL</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Diskussion:CUL&amp;diff=38749"/>
		<updated>2023-12-06T15:15:41Z</updated>

		<summary type="html">&lt;p&gt;Soulman: Begründung einer grösseren Löschung&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ich habe mir erlaubt mal diesen ganzen Abschnitt mit den LockUps, Kabeldicken, ach ne doch nicht?, nanCUL Problemen und so aus dem Artikel zu entfernen.&lt;br /&gt;
Das sind im Grunde eher Forumseinträge und es hilft dem Interessierten nicht unbedingt weiter wenn er im Artikel lesen muss, was eine einzelner Nutzer mal dachte was seine spezifischen Probleme löste und das war - &amp;quot;update&amp;quot;- dann doch nicht der Fall.&lt;br /&gt;
&lt;br /&gt;
Auch die Hinweise auf eine Fehlkonfiguration von Sendpool gehört hier nicht rein, wenn schon dann in den Artikel zu &amp;quot;Sendpool&amp;quot;. Es so darzustellen als sei es ein Bug in der culfw, weil das CUL bei Fehlkonfiguration ... fehlfunktioniert ... halte ich auch für eher weit hergeholt.&lt;br /&gt;
&lt;br /&gt;
Kurzum: So funktionieren Wikiartikel eher nicht denke ich, da sollten gesicherte Erkenntnisse stehen.&lt;br /&gt;
&lt;br /&gt;
Insgesamt muss das, wenn es drin bleiben soll, deutlich gekürzt und die Vermutungen und persönliche Einzelerfahrungen bereinigt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
_______________gelöschter___abschnitt___________________________________________________&lt;br /&gt;
&lt;br /&gt;
Übertragungs-Stall nach zu vielen Einträgen in der Queue&lt;br /&gt;
&lt;br /&gt;
Ich habe mich ewig damit rumgeärgert, dass die Übertragung zu bestimmten häufig angesprochenen Geräten zusammenbrach, sobald die Queue zu lang wurde (FHEM: &#039;list CUL&#039;).&lt;br /&gt;
Irgendwann habe ich dann zufällig herausgefunden, dass dieses sehr fragwürdige Anwachsen der Queue an einer krassen [[Sendpool]]-Fehlkonfiguration lag: ich hatte dort ein Transceiver-Device mit angegeben, welches den [[Sendpool]]-Mechanismus (noch) gar nicht unterstützt!&lt;br /&gt;
Sobald ich dieses falsche Gerät aus der Sendpool-Element-Liste entfernt hatte, war Ruhe --&amp;gt; BUG im Modul (es kann nicht sein, dass ein Device ohne [[Sendpool]]-Support das Queue-Handling so zerschießt). Dieser Bug existiert allerdings wohl weiterhin (das Perl-Handling war mir etwas zu verwirrend, um direkt zu sehen, wo das Problem ist) --&amp;gt; sollte nachgestellt und gefixt werden.&lt;br /&gt;
&lt;br /&gt;
Harter Lockup des CUL&lt;br /&gt;
&lt;br /&gt;
Trotz behobenem (erkanntem) Queue-Problem gibt es weiterhin Probleme (&amp;quot;Problem #2&amp;quot;): es passiert - recht selten -, dass sich der nanoCUL komplett aufhängt, mit hektisch blinkender LED.&lt;br /&gt;
Es ist in diesem Fall noch nicht einmal mit dem Reset-Taster möglich, den Stick zu resetten - es ist also tatsächlich nötig, das USB-Kabel komplett zu ziehen. Wenigstens automatisieren lassen würde sich dieser Workaround wohl per [https://stackoverflow.com/questions/4702216/controlling-a-usb-power-supply-on-off-with-linux uhubctl].&lt;br /&gt;
Wäre hilfreich, zu wissen, wie man dieses Problem sinnvoll tracen (somit: festnageln) kann.&lt;br /&gt;
&lt;br /&gt;
Device-Attribute wie &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; etc. könnten evt. den Zeitpunkt der letzten Aktivität verdeutlichen; dann im FHEM-Log um diesen Zeitpunkt herum suchen, um Auffälligkeiten/Spezialitäten zu erkennen. Und dann muss man, wenn man Pech hat, eine custom culfw bauen, die entsprechendes Reporting mit eingebaut hat...&lt;br /&gt;
&lt;br /&gt;
(nanoCUL; V 1.26.00 a-culfw Build: 267).&lt;br /&gt;
&lt;br /&gt;
UPDATE: die Lösung des Problems steht evtl. im Forum (Lockup beseitigt durch Optiboot bootloader): &lt;br /&gt;
: {{Link2Forum|Topic=73144|Message=977406|LinkText=[Gelöst] Nanocul LED blinkt schnell}}.&lt;br /&gt;
[https://www.ebay.de/itm/1-3-mal-Flash-Service-fur-ZigBee-nanoCUL-JeeLink-Shelly-Sonoff-Blitzwolf-Gosund/264472055531] scheint das zu bestätigen:&lt;br /&gt;
&amp;quot;Weiterhin bieten wir beim nanoCUL an, einen alternativen Bootloader (Optiboot Bootloader) zu flashen.&lt;br /&gt;
Dieser verhindert das Abstürzen des nanoCUL&#039;s im Betrieb z.B. bei FHEM. (Stichwort: opened)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
--&amp;gt; Empfehlung: Redundanz für nahtlosen Weiterbetrieb schaffen: weiteren CUL kaufen, dessen Inbetriebnahme erfolgreich testen, dann einen der CULs auf optiboot umflashen (...lassen? Siehe bekanntes Online-Auktionshaus...), und testen.&lt;br /&gt;
(Idee: dreckiger Workaround: mit mehreren CULs könnte man sich auch ein Script schreiben, das zwischen ihnen umschalten kann, sobald es mal wieder Probleme gibt)&lt;br /&gt;
&lt;br /&gt;
Ein weiterer Bericht über CUL-Lockups (dort reproduzierbar/deterministisch, und Regression-Bug): [https://github.com/heliflieger/a-culfw/issues/23 Selfmade Cul freezing with blinking LED when sending ITv3 messages      #23]&lt;br /&gt;
&lt;br /&gt;
Randnotiz: interessante Optiboot-Modifikation, die es trotz Hardware-Sperren erreicht, per Software den Bootloader-Bereich zu flashen: [https://hackaday.com/2015/07/03/arduinos-and-other-avrs-write-to-own-flash/ Arduinos (and Other AVRs) Write To Own Flash]&lt;br /&gt;
&lt;br /&gt;
Evt. ist auch ein USB-Port-Reset ein funktionierender Workaround (bitte Text als bestätigt umformulieren, falls das hilft): [https://www.computerhilfen.de/info/usb-reset-am-raspberry-pi-usb-ports-zuruecksetzen.html], erwähnt in diesem {{Link2Forum|Topic=77380|Message=783352|LinkText=Forenbeitrag}}.&lt;br /&gt;
UPDATE: ein erster Test (Device herausfinden [https://unix.stackexchange.com/questions/81754/how-to-match-a-ttyusbx-device-to-a-usb-serial-device] via fhem log infos etc., fhem shutdown, usbreset, start fhem) hat bei mir nicht funktioniert (&amp;quot;get ccconf&amp;quot; --&amp;gt; &amp;quot;No FD&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Ständige Lockups&lt;br /&gt;
Falls Lockups gefühlt &amp;quot;ständig&amp;quot; passieren sollten (alle paar Tage, oder fast täglich insb. bei warmem Wetter), dann könnte es z.B. an einem schlechten/kaputten Kabel liegen (bei mir: dünne USB-2-&amp;quot;Drachenschnur&amp;quot;, mit Bissmarken o.ä. - durch ein gutes dickes USB-3-Kabel ersetzt und sofort dramatisch robuster - UPDATE: das war der erste Eindruck innerhalb weniger Tage, aber längerfristig war es gefühlt nicht wirklich besser).&lt;br /&gt;
&lt;br /&gt;
_____________________________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
Ich will hier dem Ersteller dieses Erfahrungsbereichtes nicht auf die Füsse treten, zumal man da eine &amp;quot;Leidengeschichte&amp;quot;rauslesen kann, aber wir sollten überlegen, was  andern Lesern tatsächlich verwertbare Informationen liefert.&lt;br /&gt;
--[[Benutzer:Soulman|Soulman]] ([[Benutzer Diskussion:Soulman|Diskussion]]) 16:15, 6. Dez. 2023 (CET)&lt;/div&gt;</summary>
		<author><name>Soulman</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=FHT80TF-2&amp;diff=38722</id>
		<title>FHT80TF-2</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=FHT80TF-2&amp;diff=38722"/>
		<updated>2023-11-16T15:27:20Z</updated>

		<summary type="html">&lt;p&gt;Soulman: Ergänzungen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Hardware&lt;br /&gt;
|Bild=FHT80TF.jpg&lt;br /&gt;
|Bildbeschreibung=Tür-/ Fensterkontakt, kleine Bauform&lt;br /&gt;
|HWProtocol=FHT&lt;br /&gt;
|HWType=Sensor&lt;br /&gt;
|HWCategory=FHT&lt;br /&gt;
|HWComm=868 MHz&lt;br /&gt;
|HWChannels=1&lt;br /&gt;
|HWVoltage=3V&lt;br /&gt;
|HWPowerConsumption=Batterielaufzeit bis zu 5 Jahre&lt;br /&gt;
|HWPoweredBy=2xLR03 (AAA)&lt;br /&gt;
|HWSize=25x117x17 mm (Sensor)&amp;lt;br&amp;gt;11x48x12 mm (Magnet)&lt;br /&gt;
|HWDeviceFHEM=[[CUL_FHTTK|09_CUL_FHTTK.pm]]&lt;br /&gt;
|HWManufacturer=ELV&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der &#039;&#039;&#039;FHT80TF Tür-/Fensterkontakt&#039;&#039;&#039;, ein Zubehörteil zum [[FHT80b]] Raumregler, dient zur Erkennung einer offenen Tür, eines offenen Fensters oder ähnlicher Meldesituationen.  Das Geräte existiert in zwei Bauformen, dem älteren und deutlich grösseren FHT80TF und dem kleineren FHT80TF-2 (Bild). Die Geräte sind funktional identisch. Sie können auch ohne FHT Raumregler verwendet und durch das Modul [[CUL FHTTK]] ausgewertet werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung: Dieses Gerät ist abgekündigt (wird nicht mehr hergestellt).&#039;&#039;&#039;{{Link2Forum|Topic=60219}}&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
Mittels des FHT80TF kann überprüft werden, ob eine Tür oder ein Fenster im zu heizenden Raum offen ist. Ist dies der Fall, wird der FHT80b, mit dem der Tür/Fensterkontakt gepairt ist, die Heiztemperatur auf die separat einstellbare &amp;quot;Fenstertemperatur&amp;quot; einregeln. Wird das Fenster (und damit der Kontakt) wieder geschlossen, so regelt der FHT80b wieder auf die aktuell eingestellte Temperatur hoch.&lt;br /&gt;
&lt;br /&gt;
Der FHT80TF besteht aus dem eigentlichen Gehäuse mit Sender und Batteriefach (2x Micro) und einem separaten Magneten, der im geschlossenen Zustand des Fensters oder der Tür einen Reedkontakt im Inneren des Sendergehäuses betätigt. Das FHT80TF Gehäuse hat zwecks wahlfreier Installation einen solchen Kontakt auf beiden Gehäuseseiten, sowie einen Anschluss für externe Kontakte (normally Closed). Es kann nur einer der internen Kontakte verwendet werden, ein interner und externe Kontakte oder nur externe. Alle Kontakte sind in Reihe geschaltet, es ist also keine Einzelauswertung möglich.&lt;br /&gt;
&lt;br /&gt;
== Hinweise zum Betrieb mit FHEM ==&lt;br /&gt;
In der Standard FHT/FS20 Umgebung ist die Einsetzbarkeit des FHT80TF eingeschränkt, da er nur vom gepairten FHT80b zwecks Temperaturabsenkung ausgewertet wird. &lt;br /&gt;
&lt;br /&gt;
FHEM kann einen FHT80TF jedoch überdies direkt als Device auswerten, sodass sich damit ähnlich wie beim HMS Device [[HMS 100 TFK]] oder dem FS20 TFK Schließzustände von Türen, Toren und Fenstern direkt auswerten lassen. Voraussetzung ist allerdings ein [[CUL]], CUNO oder COC  als [[Interface|Funkschnittstelle / Zentrale]].&lt;br /&gt;
&lt;br /&gt;
Der sechsstellige (hexadezimale) Devicecode des FHT80TF lässt sich nicht ändern und wird während der Produktion eindeutig vergeben. Es wird also kein Hauscode vergeben und der FHT80TF ist auch kein FS20 Sender.&lt;br /&gt;
=== Definition ===&lt;br /&gt;
Der jeweilige Devicecode kann über das Logfile ermittelt werden.  Wird ein neuer Türkontakt erkannt, erscheint im Logfile &amp;quot;FHTTK unknown device 123abc, please define it.&amp;quot; (wobei 123abc ein Stellvertreter für den tatsächlichen Devicecode des Fensterkontaktes ist, der dem Logfileeintrag zu entnehmen ist), der Fensterkontakt kann dann mit&lt;br /&gt;
:&amp;lt;code&amp;gt;define &amp;amp;lt;name&amp;amp;gt; [[CUL_FHTTK]] &amp;amp;lt;devicecode&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
definiert werden.&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zum FS20 TFK wird die Statusänderung des Kontaktes nicht sofort übermittelt. Die Sendung wird nicht durch Öffnen oder Schliessen unmittelbar ausgelöst, vielmehr sendet das Modul in Abständen zwischen um die vier Minuten eine Statusnachricht über den aktuellen Zustand der Kontakte. Mehr dazu unter [[FHT80TF-2#Protokoll|Protokoll]]. Der Einsatz in [[Alarmanlage|Alarmanlagen]] oder ähnlichen Anwendungen ist daher nur eingeschränkt möglich. Vorteilhaft ist jedoch der geringere Preis gegenüber einem FS20 TFK.&lt;br /&gt;
&lt;br /&gt;
=== Anwendungsbeispiel ===&lt;br /&gt;
Die Programmierung eines [[notify]] ist unter [[FHTTK: Benachrichtigung bei offenem Fenster]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
Im Wesentlichen ist zu beachten, dass das FHTTK neben dem Fensterzustand (Open oder Closed) auch den Batteriezustand (ok oder Low.Batt) meldet. Ein bedingtes Notify muss also definieren, welcher Wert abgefragt werden soll.&lt;br /&gt;
&lt;br /&gt;
z.&amp;amp;nbsp;B.: &amp;lt;code&amp;gt;define mach_was_bei_Fenster_auf notify myFHTTK:Window:Open ...&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Über die Attribute bei der Definition können im Webinterface auch Zustand und Batteriestatus als Icon angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
z.&amp;amp;nbsp;B.: &amp;lt;code&amp;gt;attr Tuer_Balkon devStateIcon Open:fts_door_open@red Closed:fts_door@green Closed,.Low.Batt:measure_battery_25@yellow Open,.Low.Batt:measure_battery_25@red&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier würde der Zustand des FHTTK bei geöffneter Tür mit einen roten &amp;quot;Door Open&amp;quot; Icon, und im geschlossen Zustan mit dem &amp;quot;Door&amp;quot; Icon dargestellt. Wenn jedoch die Batterie sich dem Ende nähert, die offene Tür mit einem roten Batterie Leer Icon und wenn sie geschlossen ist mit gelben Batterie Leer Icon. &lt;br /&gt;
&lt;br /&gt;
Den Batteriezustand zu beachten ist beim FHTTK wichtig, siehe unten.&lt;br /&gt;
&lt;br /&gt;
== Batterielebensdauer ==&lt;br /&gt;
Der Stromverbrauch des Gerätes ist sehr gering. (Gute) Batterien halten mehrere Jahre. Da in diesen Zeiträumen die Selbstentladung eine ebenso grosse Rolle spielt wie der Stromverbrauch des Gerätes, halten die Batterien um so länger, je &#039;&#039;&#039;kälter&#039;&#039;&#039; es ist (Selbstentladung sinkt mit der Temperatur deutlich ab). Im Aussenbereich wurden Batterielebensdauern von bis zu acht Jahren beobachtet.&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
* Bei Unterspannung (fast leere Batterie) fangen vor allem die FHT80TF (alte grösser Bauform) gelegentlich an, wild auf dem 868 MHz Band zu funken und blockieren hierdurch fast alle anderen Funkteilnehmer. Besonders betroffen sind FS20 Sensoren und Aktoren sowie FHT Kommunikation, aber auch HM, MAX! und ähnlich wird gestört. Dieser Effekt tritt ab etwa 1,1 Volt Zellenspannung ein. Der Zeitraum von der erste LOW BATT Warnung bis zum Effekt ist in der Regel sehr kurz, etwa 1-3 Tage. Daher bei der ersten Warnung Batterien sofort wechseln.&lt;br /&gt;
&lt;br /&gt;
== Sonstiges ==&lt;br /&gt;
* Das Gerät arbeitet zuverlässig bis ca. -20 Grad, kann bei entsprechend wasserdichter Anbringung auch im Aussenbereich eingesetzt werden.&lt;br /&gt;
* Durch die Möglichkeit, einen eigenen Kontakt an Klemmen im Inneren anzuschliessen, lassen sich auch Lösungen für andere Einsatzzwecke realisieren.&lt;br /&gt;
* Da der Tür-/Fensterkontakt von alleine ca. alle vier Minuten seinen Status sendet, lässt er sich auch gut zum Ausmessen der [[SlowRF]] Funklage eines Gebäudes verwenden. Den Tür-/Fensterkontakt im Haus an die zu untersuchenden Stellen legen und mittels FHEM  RSSI beobachten. FS20 / FHT etc. arbeitet gut bei RSSI oberhalb -80, mäßig zwischen -80 und  -85 und bei RSSI kleiner als -85 unzuverlässig bis gar nicht.&lt;br /&gt;
* Die &amp;quot;Antenne&amp;quot; der älteren Bauform ist eine Attrappe&lt;br /&gt;
&lt;br /&gt;
== Protokoll ==&lt;br /&gt;
&lt;br /&gt;
Das benutzte Protokoll der FHT Baugruppen wird auf der Seite von FHZ4Linux [http://fhz4linux.info/tiki-index.php?page=FHT%20protocol FHT Protokoll] beschrieben. Ein FHT80TF-2 sendet in bestimmten Zeitabständen seinen momentanen Status. Dabei kann man in einen Hauptintervall und in einen Statusänderungsintervall unterscheiden. Erst genannter Intervall sendet immer in einem gleichen Abstand von 240 + x Sekunden seinen Status (unten Fett hervorgehoben) und zweit genannter geschieht intern immer in (240 + x) / 4 Sekunden. Sollte nun innerhalb des Hauptintervalls ein Statuswechsel von &amp;quot;on&amp;quot; auf &amp;quot;off&amp;quot; bzw. &amp;quot;Open&amp;quot; auf &amp;quot;Closed&amp;quot; eintreten, wird nach Ablauf von 1x (240 + x) / 4 (Statusänderungsintervall) der neue Status gesendet und noch einmal nach (240 + x) / 4 wiederholt. Danach verfällt der TF-2 wieder in den Hauptintervall, beginnend bei 0. Die Variable x wird aus dem Adressbyte vom Fensterkontakt berechnet, ähnlich dem Intervall für den [[FHT80b#Hinweise_zum_Betrieb_mit_FHEM|FHT8v]]. Es werden nur die 3 niederwertigen Bits verwendet.&amp;lt;br /&amp;gt; Beispiel: FHTTF-2 ID 8631&#039;&#039;&#039;0A&#039;&#039;&#039; -&amp;gt; 0x0A &amp;amp; 0x07 = &#039;&#039;&#039;2&#039;&#039;&#039; -&amp;gt; (16 - (&#039;&#039;&#039;2&#039;&#039;&#039; * 2)) = 12 Sekunden.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Formel:&amp;lt;br /&amp;gt;&lt;br /&gt;
:x = (16 - (Adressbyte &amp;amp; 0x7) * 2)&amp;lt;br /&amp;gt;&lt;br /&gt;
:y = 240 + x&lt;br /&gt;
:y == Hauptintervall von 4 min + x&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! FHT Code !! HC1 !! HC2 !! Adressbyte !! Adressbyte &amp;amp; 0x7 !! Intervall&lt;br /&gt;
|-&lt;br /&gt;
| F7 FD 57 || 1111 0111 || 1111 1101 || 0101 0&#039;&#039;&#039;111&#039;&#039;&#039; || 7 || 4:02&lt;br /&gt;
|-&lt;br /&gt;
| 83 C0 D7 || 1000 0011 || 1100 0000 || 1101 0&#039;&#039;&#039;111&#039;&#039;&#039; || 7 || 4:02&lt;br /&gt;
|-&lt;br /&gt;
| 86 30 0A || 1000 0110 || 0011 0000 || 0000 1&#039;&#039;&#039;010&#039;&#039;&#039; || 2 || 4:12&lt;br /&gt;
|-&lt;br /&gt;
| 86 31 0A || 1000 0110 || 0011 0001 || 0000 1&#039;&#039;&#039;010&#039;&#039;&#039; || 2 || 4:12&lt;br /&gt;
|-&lt;br /&gt;
| CA 54 01 || 1100 1010 || 0101 0100 || 0000 0&#039;&#039;&#039;001&#039;&#039;&#039; || 1 || 4:14&lt;br /&gt;
|-&lt;br /&gt;
| 64 C8 70 || 0110 0100 || 1100 1000 || 0111 0&#039;&#039;&#039;000&#039;&#039;&#039; || 0 || 4:16&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
2013-10-07_21:17:15 Fenster Window: off&amp;lt;br /&amp;gt;&lt;br /&gt;
2013-10-07_21:21:17 Fenster Window: on&amp;lt;br /&amp;gt;&lt;br /&gt;
2013-10-07_21:22:17 Fenster Window: on&amp;lt;br /&amp;gt;&lt;br /&gt;
2013-10-07_21:26:19 Fenster Window: on&amp;lt;br /&amp;gt;&lt;br /&gt;
2013-10-07_21:30:21 Fenster Window: on&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2013-10-07_21:34:23 Fenster Window: on&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2013-10-07_21:38:25 Fenster Window: on&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
2013-10-07_21:50:32 Fenster Window: on&amp;lt;br /&amp;gt;&lt;br /&gt;
2013-10-07_21:54:34 Fenster Window: off&amp;lt;br /&amp;gt;&lt;br /&gt;
2013-10-07_21:55:34 Fenster Window: off&amp;lt;br /&amp;gt;&lt;br /&gt;
2013-10-07_21:59:36 Fenster Window: off&amp;lt;br /&amp;gt;&lt;br /&gt;
2013-10-07_22:03:38 Fenster Window: off&amp;lt;br /&amp;gt;&lt;br /&gt;
2013-10-07_22:06:40 Fenster Window: on&amp;lt;br /&amp;gt;&lt;br /&gt;
2013-10-07_22:07:40 Fenster Window: on&amp;lt;br /&amp;gt;&lt;br /&gt;
2013-10-07_22:08:41 Fenster Window: off&amp;lt;br /&amp;gt;&lt;br /&gt;
2013-10-07_22:09:41 Fenster Window: off&amp;lt;br /&amp;gt;&lt;br /&gt;
2013-10-07_22:13:43 Fenster Window: off&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Ergänzung zur Synchronisierung:&lt;br /&gt;
&lt;br /&gt;
Der Synchronisierungsprozess mit einem FHT 80 Regler wird mit einer Nachricht 0x0C (Befehlsbyte) begonnen und einem folgenden 0x0F (Befehlsbyte) abgeschlossen. Erst dann ist der TF am FHT angemeldet.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* Bedienungsanleitung (PDF {{DocLink|elv|/service/manuals/84919_FHT80TF_2_UM.pdf}})&lt;br /&gt;
* {{Link2Forum|Topic=27465|LinkText=Diskussionsthread}} dazu&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:FHT Components]]&lt;br /&gt;
[[Kategorie:Kontaktsensor (magnetisch)]]&lt;br /&gt;
[[Kategorie:868MHz]]&lt;/div&gt;</summary>
		<author><name>Soulman</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=FHT80TF-2&amp;diff=38721</id>
		<title>FHT80TF-2</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=FHT80TF-2&amp;diff=38721"/>
		<updated>2023-11-16T15:24:40Z</updated>

		<summary type="html">&lt;p&gt;Soulman: /* Sonstiges */ Ergänzung&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Hardware&lt;br /&gt;
|Bild=FHT80TF.jpg&lt;br /&gt;
|Bildbeschreibung=Tür-/ Fensterkontakt, kleine Bauform&lt;br /&gt;
|HWProtocol=FHT&lt;br /&gt;
|HWType=Sensor&lt;br /&gt;
|HWCategory=FHT&lt;br /&gt;
|HWComm=868 MHz&lt;br /&gt;
|HWChannels=1&lt;br /&gt;
|HWVoltage=3V&lt;br /&gt;
|HWPowerConsumption=Batterielaufzeit bis zu 5 Jahre&lt;br /&gt;
|HWPoweredBy=2xLR03 (AAA)&lt;br /&gt;
|HWSize=25x117x17 mm (Sensor)&amp;lt;br&amp;gt;11x48x12 mm (Magnet)&lt;br /&gt;
|HWDeviceFHEM=[[CUL_FHTTK|09_CUL_FHTTK.pm]]&lt;br /&gt;
|HWManufacturer=ELV&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der &#039;&#039;&#039;FHT80TF Tür-/Fensterkontakt&#039;&#039;&#039;, ein Zubehörteil zum [[FHT80b]] Raumregler, dient zur Erkennung einer offenen Tür, eines offenen Fensters oder ähnlicher Meldesituationen.  Das Geräte existiert in zwei Bauformen, dem älteren und deutlich grösseren FHT80TF und dem kleineren FHT80TF-2 (Bild). Die Geräte sind funktional identisch.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung: Dieses Gerät ist abgekündigt (wird nicht mehr hergestellt).&#039;&#039;&#039;{{Link2Forum|Topic=60219}}&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
Mittels des FHT80TF kann überprüft werden, ob eine Tür oder ein Fenster im zu heizenden Raum offen ist. Ist dies der Fall, wird der FHT80b, mit dem der Tür/Fensterkontakt gepairt ist, die Heiztemperatur auf die separat einstellbare &amp;quot;Fenstertemperatur&amp;quot; einregeln. Wird das Fenster (und damit der Kontakt) wieder geschlossen, so regelt der FHT80b wieder auf die aktuell eingestellte Temperatur hoch.&lt;br /&gt;
&lt;br /&gt;
Der FHT80TF besteht aus dem eigentlichen Gehäuse mit Sender und Batteriefach (2x Micro) und einem separaten Magneten, der im geschlossenen Zustand des Fensters oder der Tür einen Reedkontakt im Inneren des Sendergehäuses betätigt. Das FHT80TF Gehäuse hat zwecks wahlfreier Installation einen solchen Kontakt auf beiden Gehäuseseiten, sowie einen Anschluss für externe Kontakte (normally Closed). Es kann nur einer der internen Kontakte verwendet werden, ein interner und externe Kontakte oder nur externe. Alle Kontakte sind in Reihe geschaltet, es ist also keine Einzelauswertung möglich.&lt;br /&gt;
&lt;br /&gt;
== Hinweise zum Betrieb mit FHEM ==&lt;br /&gt;
In der Standard FHT/FS20 Umgebung ist die Einsetzbarkeit des FHT80TF eingeschränkt, da er nur vom gepairten FHT80b zwecks Temperaturabsenkung ausgewertet wird. &lt;br /&gt;
&lt;br /&gt;
FHEM kann einen FHT80TF jedoch überdies direkt als Device auswerten, sodass sich damit ähnlich wie beim HMS Device [[HMS 100 TFK]] oder dem FS20 TFK Schließzustände von Türen, Toren und Fenstern direkt auswerten lassen. Voraussetzung ist allerdings ein [[CUL]], CUNO oder COC  als [[Interface|Funkschnittstelle / Zentrale]].&lt;br /&gt;
&lt;br /&gt;
Der sechsstellige (hexadezimale) Devicecode des FHT80TF lässt sich nicht ändern und wird während der Produktion eindeutig vergeben. Es wird also kein Hauscode vergeben und der FHT80TF ist auch kein FS20 Sender.&lt;br /&gt;
=== Definition ===&lt;br /&gt;
Der jeweilige Devicecode kann über das Logfile ermittelt werden.  Wird ein neuer Türkontakt erkannt, erscheint im Logfile &amp;quot;FHTTK unknown device 123abc, please define it.&amp;quot; (wobei 123abc ein Stellvertreter für den tatsächlichen Devicecode des Fensterkontaktes ist, der dem Logfileeintrag zu entnehmen ist), der Fensterkontakt kann dann mit&lt;br /&gt;
:&amp;lt;code&amp;gt;define &amp;amp;lt;name&amp;amp;gt; [[CUL_FHTTK]] &amp;amp;lt;devicecode&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
definiert werden.&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zum FS20 TFK wird die Statusänderung des Kontaktes nicht sofort übermittelt. Die Sendung wird nicht durch Öffnen oder Schliessen unmittelbar ausgelöst, vielmehr sendet das Modul in Abständen zwischen um die vier Minuten eine Statusnachricht über den aktuellen Zustand der Kontakte. Mehr dazu unter [[FHT80TF-2#Protokoll|Protokoll]]. Der Einsatz in [[Alarmanlage|Alarmanlagen]] oder ähnlichen Anwendungen ist daher nur eingeschränkt möglich. Vorteilhaft ist jedoch der geringere Preis gegenüber einem FS20 TFK.&lt;br /&gt;
&lt;br /&gt;
=== Anwendungsbeispiel ===&lt;br /&gt;
Die Programmierung eines [[notify]] ist unter [[FHTTK: Benachrichtigung bei offenem Fenster]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
Im Wesentlichen ist zu beachten, dass das FHTTK neben dem Fensterzustand (Open oder Closed) auch den Batteriezustand (ok oder Low.Batt) meldet. Ein bedingtes Notify muss also definieren, welcher Wert abgefragt werden soll.&lt;br /&gt;
&lt;br /&gt;
z.&amp;amp;nbsp;B.: &amp;lt;code&amp;gt;define mach_was_bei_Fenster_auf notify myFHTTK:Window:Open ...&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Über die Attribute bei der Definition können im Webinterface auch Zustand und Batteriestatus als Icon angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
z.&amp;amp;nbsp;B.: &amp;lt;code&amp;gt;attr Tuer_Balkon devStateIcon Open:fts_door_open@red Closed:fts_door@green Closed,.Low.Batt:measure_battery_25@yellow Open,.Low.Batt:measure_battery_25@red&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier würde der Zustand des FHTTK bei geöffneter Tür mit einen roten &amp;quot;Door Open&amp;quot; Icon, und im geschlossen Zustan mit dem &amp;quot;Door&amp;quot; Icon dargestellt. Wenn jedoch die Batterie sich dem Ende nähert, die offene Tür mit einem roten Batterie Leer Icon und wenn sie geschlossen ist mit gelben Batterie Leer Icon. &lt;br /&gt;
&lt;br /&gt;
Den Batteriezustand zu beachten ist beim FHTTK wichtig, siehe unten.&lt;br /&gt;
&lt;br /&gt;
== Batterielebensdauer ==&lt;br /&gt;
Der Stromverbrauch des Gerätes ist sehr gering. (Gute) Batterien halten mehrere Jahre. Da in diesen Zeiträumen die Selbstentladung eine ebenso grosse Rolle spielt wie der Stromverbrauch des Gerätes, halten die Batterien um so länger, je &#039;&#039;&#039;kälter&#039;&#039;&#039; es ist (Selbstentladung sinkt mit der Temperatur deutlich ab). Im Aussenbereich wurden Batterielebensdauern von bis zu acht Jahren beobachtet.&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
* Bei Unterspannung (fast leere Batterie) fangen vor allem die FHT80TF (alte grösser Bauform) gelegentlich an, wild auf dem 868 MHz Band zu funken und blockieren hierdurch fast alle anderen Funkteilnehmer. Besonders betroffen sind FS20 Sensoren und Aktoren sowie FHT Kommunikation, aber auch HM, MAX! und ähnlich wird gestört. Dieser Effekt tritt ab etwa 1,1 Volt Zellenspannung ein. Der Zeitraum von der erste LOW BATT Warnung bis zum Effekt ist in der Regel sehr kurz, etwa 1-3 Tage. Daher bei der ersten Warnung Batterien sofort wechseln.&lt;br /&gt;
&lt;br /&gt;
== Sonstiges ==&lt;br /&gt;
* Das Gerät arbeitet zuverlässig bis ca. -20 Grad, kann bei entsprechend wasserdichter Anbringung auch im Aussenbereich eingesetzt werden.&lt;br /&gt;
* Durch die Möglichkeit, einen eigenen Kontakt an Klemmen im Inneren anzuschliessen, lassen sich auch Lösungen für andere Einsatzzwecke realisieren.&lt;br /&gt;
* Da der Tür-/Fensterkontakt von alleine ca. alle vier Minuten seinen Status sendet, lässt er sich auch gut zum Ausmessen der [[SlowRF]] Funklage eines Gebäudes verwenden. Den Tür-/Fensterkontakt im Haus an die zu untersuchenden Stellen legen und mittels FHEM  RSSI beobachten. FS20 / FHT etc. arbeitet gut bei RSSI oberhalb -80, mäßig zwischen -80 und  -85 und bei RSSI kleiner als -85 unzuverlässig bis gar nicht.&lt;br /&gt;
* Die &amp;quot;Antenne&amp;quot; der älteren Bauform ist eine Attrappe&lt;br /&gt;
&lt;br /&gt;
== Protokoll ==&lt;br /&gt;
&lt;br /&gt;
Das benutzte Protokoll der FHT Baugruppen wird auf der Seite von FHZ4Linux [http://fhz4linux.info/tiki-index.php?page=FHT%20protocol FHT Protokoll] beschrieben. Ein FHT80TF-2 sendet in bestimmten Zeitabständen seinen momentanen Status. Dabei kann man in einen Hauptintervall und in einen Statusänderungsintervall unterscheiden. Erst genannter Intervall sendet immer in einem gleichen Abstand von 240 + x Sekunden seinen Status (unten Fett hervorgehoben) und zweit genannter geschieht intern immer in (240 + x) / 4 Sekunden. Sollte nun innerhalb des Hauptintervalls ein Statuswechsel von &amp;quot;on&amp;quot; auf &amp;quot;off&amp;quot; bzw. &amp;quot;Open&amp;quot; auf &amp;quot;Closed&amp;quot; eintreten, wird nach Ablauf von 1x (240 + x) / 4 (Statusänderungsintervall) der neue Status gesendet und noch einmal nach (240 + x) / 4 wiederholt. Danach verfällt der TF-2 wieder in den Hauptintervall, beginnend bei 0. Die Variable x wird aus dem Adressbyte vom Fensterkontakt berechnet, ähnlich dem Intervall für den [[FHT80b#Hinweise_zum_Betrieb_mit_FHEM|FHT8v]]. Es werden nur die 3 niederwertigen Bits verwendet.&amp;lt;br /&amp;gt; Beispiel: FHTTF-2 ID 8631&#039;&#039;&#039;0A&#039;&#039;&#039; -&amp;gt; 0x0A &amp;amp; 0x07 = &#039;&#039;&#039;2&#039;&#039;&#039; -&amp;gt; (16 - (&#039;&#039;&#039;2&#039;&#039;&#039; * 2)) = 12 Sekunden.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Formel:&amp;lt;br /&amp;gt;&lt;br /&gt;
:x = (16 - (Adressbyte &amp;amp; 0x7) * 2)&amp;lt;br /&amp;gt;&lt;br /&gt;
:y = 240 + x&lt;br /&gt;
:y == Hauptintervall von 4 min + x&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! FHT Code !! HC1 !! HC2 !! Adressbyte !! Adressbyte &amp;amp; 0x7 !! Intervall&lt;br /&gt;
|-&lt;br /&gt;
| F7 FD 57 || 1111 0111 || 1111 1101 || 0101 0&#039;&#039;&#039;111&#039;&#039;&#039; || 7 || 4:02&lt;br /&gt;
|-&lt;br /&gt;
| 83 C0 D7 || 1000 0011 || 1100 0000 || 1101 0&#039;&#039;&#039;111&#039;&#039;&#039; || 7 || 4:02&lt;br /&gt;
|-&lt;br /&gt;
| 86 30 0A || 1000 0110 || 0011 0000 || 0000 1&#039;&#039;&#039;010&#039;&#039;&#039; || 2 || 4:12&lt;br /&gt;
|-&lt;br /&gt;
| 86 31 0A || 1000 0110 || 0011 0001 || 0000 1&#039;&#039;&#039;010&#039;&#039;&#039; || 2 || 4:12&lt;br /&gt;
|-&lt;br /&gt;
| CA 54 01 || 1100 1010 || 0101 0100 || 0000 0&#039;&#039;&#039;001&#039;&#039;&#039; || 1 || 4:14&lt;br /&gt;
|-&lt;br /&gt;
| 64 C8 70 || 0110 0100 || 1100 1000 || 0111 0&#039;&#039;&#039;000&#039;&#039;&#039; || 0 || 4:16&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
2013-10-07_21:17:15 Fenster Window: off&amp;lt;br /&amp;gt;&lt;br /&gt;
2013-10-07_21:21:17 Fenster Window: on&amp;lt;br /&amp;gt;&lt;br /&gt;
2013-10-07_21:22:17 Fenster Window: on&amp;lt;br /&amp;gt;&lt;br /&gt;
2013-10-07_21:26:19 Fenster Window: on&amp;lt;br /&amp;gt;&lt;br /&gt;
2013-10-07_21:30:21 Fenster Window: on&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2013-10-07_21:34:23 Fenster Window: on&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2013-10-07_21:38:25 Fenster Window: on&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
2013-10-07_21:50:32 Fenster Window: on&amp;lt;br /&amp;gt;&lt;br /&gt;
2013-10-07_21:54:34 Fenster Window: off&amp;lt;br /&amp;gt;&lt;br /&gt;
2013-10-07_21:55:34 Fenster Window: off&amp;lt;br /&amp;gt;&lt;br /&gt;
2013-10-07_21:59:36 Fenster Window: off&amp;lt;br /&amp;gt;&lt;br /&gt;
2013-10-07_22:03:38 Fenster Window: off&amp;lt;br /&amp;gt;&lt;br /&gt;
2013-10-07_22:06:40 Fenster Window: on&amp;lt;br /&amp;gt;&lt;br /&gt;
2013-10-07_22:07:40 Fenster Window: on&amp;lt;br /&amp;gt;&lt;br /&gt;
2013-10-07_22:08:41 Fenster Window: off&amp;lt;br /&amp;gt;&lt;br /&gt;
2013-10-07_22:09:41 Fenster Window: off&amp;lt;br /&amp;gt;&lt;br /&gt;
2013-10-07_22:13:43 Fenster Window: off&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Ergänzung zur Synchronisierung:&lt;br /&gt;
&lt;br /&gt;
Der Synchronisierungsprozess mit einem FHT 80 Regler wird mit einer Nachricht 0x0C (Befehlsbyte) begonnen und einem folgenden 0x0F (Befehlsbyte) abgeschlossen. Erst dann ist der TF am FHT angemeldet.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* Bedienungsanleitung (PDF {{DocLink|elv|/service/manuals/84919_FHT80TF_2_UM.pdf}})&lt;br /&gt;
* {{Link2Forum|Topic=27465|LinkText=Diskussionsthread}} dazu&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:FHT Components]]&lt;br /&gt;
[[Kategorie:Kontaktsensor (magnetisch)]]&lt;br /&gt;
[[Kategorie:868MHz]]&lt;/div&gt;</summary>
		<author><name>Soulman</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=FHT80TF-2&amp;diff=38720</id>
		<title>FHT80TF-2</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=FHT80TF-2&amp;diff=38720"/>
		<updated>2023-11-16T15:20:17Z</updated>

		<summary type="html">&lt;p&gt;Soulman: /* Bekannte Probleme */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Hardware&lt;br /&gt;
|Bild=FHT80TF.jpg&lt;br /&gt;
|Bildbeschreibung=Tür-/ Fensterkontakt, kleine Bauform&lt;br /&gt;
|HWProtocol=FHT&lt;br /&gt;
|HWType=Sensor&lt;br /&gt;
|HWCategory=FHT&lt;br /&gt;
|HWComm=868 MHz&lt;br /&gt;
|HWChannels=1&lt;br /&gt;
|HWVoltage=3V&lt;br /&gt;
|HWPowerConsumption=Batterielaufzeit bis zu 5 Jahre&lt;br /&gt;
|HWPoweredBy=2xLR03 (AAA)&lt;br /&gt;
|HWSize=25x117x17 mm (Sensor)&amp;lt;br&amp;gt;11x48x12 mm (Magnet)&lt;br /&gt;
|HWDeviceFHEM=[[CUL_FHTTK|09_CUL_FHTTK.pm]]&lt;br /&gt;
|HWManufacturer=ELV&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der &#039;&#039;&#039;FHT80TF Tür-/Fensterkontakt&#039;&#039;&#039;, ein Zubehörteil zum [[FHT80b]] Raumregler, dient zur Erkennung einer offenen Tür, eines offenen Fensters oder ähnlicher Meldesituationen.  Das Geräte existiert in zwei Bauformen, dem älteren und deutlich grösseren FHT80TF und dem kleineren FHT80TF-2 (Bild). Die Geräte sind funktional identisch.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung: Dieses Gerät ist abgekündigt (wird nicht mehr hergestellt).&#039;&#039;&#039;{{Link2Forum|Topic=60219}}&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
Mittels des FHT80TF kann überprüft werden, ob eine Tür oder ein Fenster im zu heizenden Raum offen ist. Ist dies der Fall, wird der FHT80b, mit dem der Tür/Fensterkontakt gepairt ist, die Heiztemperatur auf die separat einstellbare &amp;quot;Fenstertemperatur&amp;quot; einregeln. Wird das Fenster (und damit der Kontakt) wieder geschlossen, so regelt der FHT80b wieder auf die aktuell eingestellte Temperatur hoch.&lt;br /&gt;
&lt;br /&gt;
Der FHT80TF besteht aus dem eigentlichen Gehäuse mit Sender und Batteriefach (2x Micro) und einem separaten Magneten, der im geschlossenen Zustand des Fensters oder der Tür einen Reedkontakt im Inneren des Sendergehäuses betätigt. Das FHT80TF Gehäuse hat zwecks wahlfreier Installation einen solchen Kontakt auf beiden Gehäuseseiten, sowie einen Anschluss für externe Kontakte (normally Closed). Es kann nur einer der internen Kontakte verwendet werden, ein interner und externe Kontakte oder nur externe. Alle Kontakte sind in Reihe geschaltet, es ist also keine Einzelauswertung möglich.&lt;br /&gt;
&lt;br /&gt;
== Hinweise zum Betrieb mit FHEM ==&lt;br /&gt;
In der Standard FHT/FS20 Umgebung ist die Einsetzbarkeit des FHT80TF eingeschränkt, da er nur vom gepairten FHT80b zwecks Temperaturabsenkung ausgewertet wird. &lt;br /&gt;
&lt;br /&gt;
FHEM kann einen FHT80TF jedoch überdies direkt als Device auswerten, sodass sich damit ähnlich wie beim HMS Device [[HMS 100 TFK]] oder dem FS20 TFK Schließzustände von Türen, Toren und Fenstern direkt auswerten lassen. Voraussetzung ist allerdings ein [[CUL]], CUNO oder COC  als [[Interface|Funkschnittstelle / Zentrale]].&lt;br /&gt;
&lt;br /&gt;
Der sechsstellige (hexadezimale) Devicecode des FHT80TF lässt sich nicht ändern und wird während der Produktion eindeutig vergeben. Es wird also kein Hauscode vergeben und der FHT80TF ist auch kein FS20 Sender.&lt;br /&gt;
=== Definition ===&lt;br /&gt;
Der jeweilige Devicecode kann über das Logfile ermittelt werden.  Wird ein neuer Türkontakt erkannt, erscheint im Logfile &amp;quot;FHTTK unknown device 123abc, please define it.&amp;quot; (wobei 123abc ein Stellvertreter für den tatsächlichen Devicecode des Fensterkontaktes ist, der dem Logfileeintrag zu entnehmen ist), der Fensterkontakt kann dann mit&lt;br /&gt;
:&amp;lt;code&amp;gt;define &amp;amp;lt;name&amp;amp;gt; [[CUL_FHTTK]] &amp;amp;lt;devicecode&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
definiert werden.&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zum FS20 TFK wird die Statusänderung des Kontaktes nicht sofort übermittelt. Die Sendung wird nicht durch Öffnen oder Schliessen unmittelbar ausgelöst, vielmehr sendet das Modul in Abständen zwischen um die vier Minuten eine Statusnachricht über den aktuellen Zustand der Kontakte. Mehr dazu unter [[FHT80TF-2#Protokoll|Protokoll]]. Der Einsatz in [[Alarmanlage|Alarmanlagen]] oder ähnlichen Anwendungen ist daher nur eingeschränkt möglich. Vorteilhaft ist jedoch der geringere Preis gegenüber einem FS20 TFK.&lt;br /&gt;
&lt;br /&gt;
=== Anwendungsbeispiel ===&lt;br /&gt;
Die Programmierung eines [[notify]] ist unter [[FHTTK: Benachrichtigung bei offenem Fenster]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
Im Wesentlichen ist zu beachten, dass das FHTTK neben dem Fensterzustand (Open oder Closed) auch den Batteriezustand (ok oder Low.Batt) meldet. Ein bedingtes Notify muss also definieren, welcher Wert abgefragt werden soll.&lt;br /&gt;
&lt;br /&gt;
z.&amp;amp;nbsp;B.: &amp;lt;code&amp;gt;define mach_was_bei_Fenster_auf notify myFHTTK:Window:Open ...&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Über die Attribute bei der Definition können im Webinterface auch Zustand und Batteriestatus als Icon angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
z.&amp;amp;nbsp;B.: &amp;lt;code&amp;gt;attr Tuer_Balkon devStateIcon Open:fts_door_open@red Closed:fts_door@green Closed,.Low.Batt:measure_battery_25@yellow Open,.Low.Batt:measure_battery_25@red&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier würde der Zustand des FHTTK bei geöffneter Tür mit einen roten &amp;quot;Door Open&amp;quot; Icon, und im geschlossen Zustan mit dem &amp;quot;Door&amp;quot; Icon dargestellt. Wenn jedoch die Batterie sich dem Ende nähert, die offene Tür mit einem roten Batterie Leer Icon und wenn sie geschlossen ist mit gelben Batterie Leer Icon. &lt;br /&gt;
&lt;br /&gt;
Den Batteriezustand zu beachten ist beim FHTTK wichtig, siehe unten.&lt;br /&gt;
&lt;br /&gt;
== Batterielebensdauer ==&lt;br /&gt;
Der Stromverbrauch des Gerätes ist sehr gering. (Gute) Batterien halten mehrere Jahre. Da in diesen Zeiträumen die Selbstentladung eine ebenso grosse Rolle spielt wie der Stromverbrauch des Gerätes, halten die Batterien um so länger, je &#039;&#039;&#039;kälter&#039;&#039;&#039; es ist (Selbstentladung sinkt mit der Temperatur deutlich ab). Im Aussenbereich wurden Batterielebensdauern von bis zu acht Jahren beobachtet.&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
* Bei Unterspannung (fast leere Batterie) fangen vor allem die FHT80TF (alte grösser Bauform) gelegentlich an, wild auf dem 868 MHz Band zu funken und blockieren hierdurch fast alle anderen Funkteilnehmer. Besonders betroffen sind FS20 Sensoren und Aktoren sowie FHT Kommunikation, aber auch HM, MAX! und ähnlich wird gestört. Dieser Effekt tritt ab etwa 1,1 Volt Zellenspannung ein. Der Zeitraum von der erste LOW BATT Warnung bis zum Effekt ist in der Regel sehr kurz, etwa 1-3 Tage. Daher bei der ersten Warnung Batterien sofort wechseln.&lt;br /&gt;
&lt;br /&gt;
== Sonstiges ==&lt;br /&gt;
* Das Gerät arbeitet zuverlässig bis ca. -20 Grad, kann bei entsprechend wasserdichter Anbringung auch im Aussenbereich eingesetzt werden.&lt;br /&gt;
* Durch die Möglichkeit, einen eigenen Kontakt an Klemmen im Inneren anzuschliessen, lassen sich auch Lösungen für andere Einsatzzwecke realisieren.&lt;br /&gt;
* Da der Tür-/Fensterkontakt von alleine ca. alle vier Minuten seinen Status sendet, lässt er sich auch gut zum Ausmessen der [[SlowRF]] Funklage eines Gebäudes verwenden. Den Tür-/Fensterkontakt im Haus an die zu untersuchenden Stellen legen und mittels FHEM  RSSI beobachten. FS20 / FHT etc. arbeitet gut bei RSSI oberhalb -80, mäßig zwischen -80 und  -85 und bei RSSI kleiner als -85 unzuverlässig bis gar nicht.&lt;br /&gt;
&lt;br /&gt;
== Protokoll ==&lt;br /&gt;
&lt;br /&gt;
Das benutzte Protokoll der FHT Baugruppen wird auf der Seite von FHZ4Linux [http://fhz4linux.info/tiki-index.php?page=FHT%20protocol FHT Protokoll] beschrieben. Ein FHT80TF-2 sendet in bestimmten Zeitabständen seinen momentanen Status. Dabei kann man in einen Hauptintervall und in einen Statusänderungsintervall unterscheiden. Erst genannter Intervall sendet immer in einem gleichen Abstand von 240 + x Sekunden seinen Status (unten Fett hervorgehoben) und zweit genannter geschieht intern immer in (240 + x) / 4 Sekunden. Sollte nun innerhalb des Hauptintervalls ein Statuswechsel von &amp;quot;on&amp;quot; auf &amp;quot;off&amp;quot; bzw. &amp;quot;Open&amp;quot; auf &amp;quot;Closed&amp;quot; eintreten, wird nach Ablauf von 1x (240 + x) / 4 (Statusänderungsintervall) der neue Status gesendet und noch einmal nach (240 + x) / 4 wiederholt. Danach verfällt der TF-2 wieder in den Hauptintervall, beginnend bei 0. Die Variable x wird aus dem Adressbyte vom Fensterkontakt berechnet, ähnlich dem Intervall für den [[FHT80b#Hinweise_zum_Betrieb_mit_FHEM|FHT8v]]. Es werden nur die 3 niederwertigen Bits verwendet.&amp;lt;br /&amp;gt; Beispiel: FHTTF-2 ID 8631&#039;&#039;&#039;0A&#039;&#039;&#039; -&amp;gt; 0x0A &amp;amp; 0x07 = &#039;&#039;&#039;2&#039;&#039;&#039; -&amp;gt; (16 - (&#039;&#039;&#039;2&#039;&#039;&#039; * 2)) = 12 Sekunden.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Formel:&amp;lt;br /&amp;gt;&lt;br /&gt;
:x = (16 - (Adressbyte &amp;amp; 0x7) * 2)&amp;lt;br /&amp;gt;&lt;br /&gt;
:y = 240 + x&lt;br /&gt;
:y == Hauptintervall von 4 min + x&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! FHT Code !! HC1 !! HC2 !! Adressbyte !! Adressbyte &amp;amp; 0x7 !! Intervall&lt;br /&gt;
|-&lt;br /&gt;
| F7 FD 57 || 1111 0111 || 1111 1101 || 0101 0&#039;&#039;&#039;111&#039;&#039;&#039; || 7 || 4:02&lt;br /&gt;
|-&lt;br /&gt;
| 83 C0 D7 || 1000 0011 || 1100 0000 || 1101 0&#039;&#039;&#039;111&#039;&#039;&#039; || 7 || 4:02&lt;br /&gt;
|-&lt;br /&gt;
| 86 30 0A || 1000 0110 || 0011 0000 || 0000 1&#039;&#039;&#039;010&#039;&#039;&#039; || 2 || 4:12&lt;br /&gt;
|-&lt;br /&gt;
| 86 31 0A || 1000 0110 || 0011 0001 || 0000 1&#039;&#039;&#039;010&#039;&#039;&#039; || 2 || 4:12&lt;br /&gt;
|-&lt;br /&gt;
| CA 54 01 || 1100 1010 || 0101 0100 || 0000 0&#039;&#039;&#039;001&#039;&#039;&#039; || 1 || 4:14&lt;br /&gt;
|-&lt;br /&gt;
| 64 C8 70 || 0110 0100 || 1100 1000 || 0111 0&#039;&#039;&#039;000&#039;&#039;&#039; || 0 || 4:16&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
2013-10-07_21:17:15 Fenster Window: off&amp;lt;br /&amp;gt;&lt;br /&gt;
2013-10-07_21:21:17 Fenster Window: on&amp;lt;br /&amp;gt;&lt;br /&gt;
2013-10-07_21:22:17 Fenster Window: on&amp;lt;br /&amp;gt;&lt;br /&gt;
2013-10-07_21:26:19 Fenster Window: on&amp;lt;br /&amp;gt;&lt;br /&gt;
2013-10-07_21:30:21 Fenster Window: on&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2013-10-07_21:34:23 Fenster Window: on&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2013-10-07_21:38:25 Fenster Window: on&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
2013-10-07_21:50:32 Fenster Window: on&amp;lt;br /&amp;gt;&lt;br /&gt;
2013-10-07_21:54:34 Fenster Window: off&amp;lt;br /&amp;gt;&lt;br /&gt;
2013-10-07_21:55:34 Fenster Window: off&amp;lt;br /&amp;gt;&lt;br /&gt;
2013-10-07_21:59:36 Fenster Window: off&amp;lt;br /&amp;gt;&lt;br /&gt;
2013-10-07_22:03:38 Fenster Window: off&amp;lt;br /&amp;gt;&lt;br /&gt;
2013-10-07_22:06:40 Fenster Window: on&amp;lt;br /&amp;gt;&lt;br /&gt;
2013-10-07_22:07:40 Fenster Window: on&amp;lt;br /&amp;gt;&lt;br /&gt;
2013-10-07_22:08:41 Fenster Window: off&amp;lt;br /&amp;gt;&lt;br /&gt;
2013-10-07_22:09:41 Fenster Window: off&amp;lt;br /&amp;gt;&lt;br /&gt;
2013-10-07_22:13:43 Fenster Window: off&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Ergänzung zur Synchronisierung:&lt;br /&gt;
&lt;br /&gt;
Der Synchronisierungsprozess mit einem FHT 80 Regler wird mit einer Nachricht 0x0C (Befehlsbyte) begonnen und einem folgenden 0x0F (Befehlsbyte) abgeschlossen. Erst dann ist der TF am FHT angemeldet.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* Bedienungsanleitung (PDF {{DocLink|elv|/service/manuals/84919_FHT80TF_2_UM.pdf}})&lt;br /&gt;
* {{Link2Forum|Topic=27465|LinkText=Diskussionsthread}} dazu&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:FHT Components]]&lt;br /&gt;
[[Kategorie:Kontaktsensor (magnetisch)]]&lt;br /&gt;
[[Kategorie:868MHz]]&lt;/div&gt;</summary>
		<author><name>Soulman</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=FHT80TF-2&amp;diff=38719</id>
		<title>FHT80TF-2</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=FHT80TF-2&amp;diff=38719"/>
		<updated>2023-11-16T15:15:39Z</updated>

		<summary type="html">&lt;p&gt;Soulman: Ergänzungen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Hardware&lt;br /&gt;
|Bild=FHT80TF.jpg&lt;br /&gt;
|Bildbeschreibung=Tür-/ Fensterkontakt, kleine Bauform&lt;br /&gt;
|HWProtocol=FHT&lt;br /&gt;
|HWType=Sensor&lt;br /&gt;
|HWCategory=FHT&lt;br /&gt;
|HWComm=868 MHz&lt;br /&gt;
|HWChannels=1&lt;br /&gt;
|HWVoltage=3V&lt;br /&gt;
|HWPowerConsumption=Batterielaufzeit bis zu 5 Jahre&lt;br /&gt;
|HWPoweredBy=2xLR03 (AAA)&lt;br /&gt;
|HWSize=25x117x17 mm (Sensor)&amp;lt;br&amp;gt;11x48x12 mm (Magnet)&lt;br /&gt;
|HWDeviceFHEM=[[CUL_FHTTK|09_CUL_FHTTK.pm]]&lt;br /&gt;
|HWManufacturer=ELV&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der &#039;&#039;&#039;FHT80TF Tür-/Fensterkontakt&#039;&#039;&#039;, ein Zubehörteil zum [[FHT80b]] Raumregler, dient zur Erkennung einer offenen Tür, eines offenen Fensters oder ähnlicher Meldesituationen.  Das Geräte existiert in zwei Bauformen, dem älteren und deutlich grösseren FHT80TF und dem kleineren FHT80TF-2 (Bild). Die Geräte sind funktional identisch.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung: Dieses Gerät ist abgekündigt (wird nicht mehr hergestellt).&#039;&#039;&#039;{{Link2Forum|Topic=60219}}&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
Mittels des FHT80TF kann überprüft werden, ob eine Tür oder ein Fenster im zu heizenden Raum offen ist. Ist dies der Fall, wird der FHT80b, mit dem der Tür/Fensterkontakt gepairt ist, die Heiztemperatur auf die separat einstellbare &amp;quot;Fenstertemperatur&amp;quot; einregeln. Wird das Fenster (und damit der Kontakt) wieder geschlossen, so regelt der FHT80b wieder auf die aktuell eingestellte Temperatur hoch.&lt;br /&gt;
&lt;br /&gt;
Der FHT80TF besteht aus dem eigentlichen Gehäuse mit Sender und Batteriefach (2x Micro) und einem separaten Magneten, der im geschlossenen Zustand des Fensters oder der Tür einen Reedkontakt im Inneren des Sendergehäuses betätigt. Das FHT80TF Gehäuse hat zwecks wahlfreier Installation einen solchen Kontakt auf beiden Gehäuseseiten, sowie einen Anschluss für externe Kontakte (normally Closed). Es kann nur einer der internen Kontakte verwendet werden, ein interner und externe Kontakte oder nur externe. Alle Kontakte sind in Reihe geschaltet, es ist also keine Einzelauswertung möglich.&lt;br /&gt;
&lt;br /&gt;
== Hinweise zum Betrieb mit FHEM ==&lt;br /&gt;
In der Standard FHT/FS20 Umgebung ist die Einsetzbarkeit des FHT80TF eingeschränkt, da er nur vom gepairten FHT80b zwecks Temperaturabsenkung ausgewertet wird. &lt;br /&gt;
&lt;br /&gt;
FHEM kann einen FHT80TF jedoch überdies direkt als Device auswerten, sodass sich damit ähnlich wie beim HMS Device [[HMS 100 TFK]] oder dem FS20 TFK Schließzustände von Türen, Toren und Fenstern direkt auswerten lassen. Voraussetzung ist allerdings ein [[CUL]], CUNO oder COC  als [[Interface|Funkschnittstelle / Zentrale]].&lt;br /&gt;
&lt;br /&gt;
Der sechsstellige (hexadezimale) Devicecode des FHT80TF lässt sich nicht ändern und wird während der Produktion eindeutig vergeben. Es wird also kein Hauscode vergeben und der FHT80TF ist auch kein FS20 Sender.&lt;br /&gt;
=== Definition ===&lt;br /&gt;
Der jeweilige Devicecode kann über das Logfile ermittelt werden.  Wird ein neuer Türkontakt erkannt, erscheint im Logfile &amp;quot;FHTTK unknown device 123abc, please define it.&amp;quot; (wobei 123abc ein Stellvertreter für den tatsächlichen Devicecode des Fensterkontaktes ist, der dem Logfileeintrag zu entnehmen ist), der Fensterkontakt kann dann mit&lt;br /&gt;
:&amp;lt;code&amp;gt;define &amp;amp;lt;name&amp;amp;gt; [[CUL_FHTTK]] &amp;amp;lt;devicecode&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
definiert werden.&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zum FS20 TFK wird die Statusänderung des Kontaktes nicht sofort übermittelt. Die Sendung wird nicht durch Öffnen oder Schliessen unmittelbar ausgelöst, vielmehr sendet das Modul in Abständen zwischen um die vier Minuten eine Statusnachricht über den aktuellen Zustand der Kontakte. Mehr dazu unter [[FHT80TF-2#Protokoll|Protokoll]]. Der Einsatz in [[Alarmanlage|Alarmanlagen]] oder ähnlichen Anwendungen ist daher nur eingeschränkt möglich. Vorteilhaft ist jedoch der geringere Preis gegenüber einem FS20 TFK.&lt;br /&gt;
&lt;br /&gt;
=== Anwendungsbeispiel ===&lt;br /&gt;
Die Programmierung eines [[notify]] ist unter [[FHTTK: Benachrichtigung bei offenem Fenster]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
Im Wesentlichen ist zu beachten, dass das FHTTK neben dem Fensterzustand (Open oder Closed) auch den Batteriezustand (ok oder Low.Batt) meldet. Ein bedingtes Notify muss also definieren, welcher Wert abgefragt werden soll.&lt;br /&gt;
&lt;br /&gt;
z.&amp;amp;nbsp;B.: &amp;lt;code&amp;gt;define mach_was_bei_Fenster_auf notify myFHTTK:Window:Open ...&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Über die Attribute bei der Definition können im Webinterface auch Zustand und Batteriestatus als Icon angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
z.&amp;amp;nbsp;B.: &amp;lt;code&amp;gt;attr Tuer_Balkon devStateIcon Open:fts_door_open@red Closed:fts_door@green Closed,.Low.Batt:measure_battery_25@yellow Open,.Low.Batt:measure_battery_25@red&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier würde der Zustand des FHTTK bei geöffneter Tür mit einen roten &amp;quot;Door Open&amp;quot; Icon, und im geschlossen Zustan mit dem &amp;quot;Door&amp;quot; Icon dargestellt. Wenn jedoch die Batterie sich dem Ende nähert, die offene Tür mit einem roten Batterie Leer Icon und wenn sie geschlossen ist mit gelben Batterie Leer Icon. &lt;br /&gt;
&lt;br /&gt;
Den Batteriezustand zu beachten ist beim FHTTK wichtig, siehe unten.&lt;br /&gt;
&lt;br /&gt;
== Batterielebensdauer ==&lt;br /&gt;
Der Stromverbrauch des Gerätes ist sehr gering. (Gute) Batterien halten mehrere Jahre. Da in diesen Zeiträumen die Selbstentladung eine ebenso grosse Rolle spielt wie der Stromverbrauch des Gerätes, halten die Batterien um so länger, je &#039;&#039;&#039;kälter&#039;&#039;&#039; es ist (Selbstentladung sinkt mit der Temperatur deutlich ab). Im Aussenbereich wurden Batterielebensdauern von bis zu acht Jahren beobachtet.&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
* Bei Unterspannung (fast leere Batterie) fangen die Sensoren an wild auf dem 868 MHz Band zu funken und blockieren hierdurch fast alle anderen Funkteilnehmer. Besonders betroffen sind FS20 Sensoren und Aktoren sowie FHT Kommunikation, aber auch HM, MAX! und ähnlich wird gestört. Dieser Effekt tritt ab etwa 1,1 Volt Zellenspannung ein. Der Zeitraum von der erste LOW BATT Warnung bis zum Effekt ist in der Regel sehr kurz, etwa 1-3 Tage. Daher bei der ersten Warnung Batterien sofort wechseln.&lt;br /&gt;
&lt;br /&gt;
== Sonstiges ==&lt;br /&gt;
* Das Gerät arbeitet zuverlässig bis ca. -20 Grad, kann bei entsprechend wasserdichter Anbringung auch im Aussenbereich eingesetzt werden.&lt;br /&gt;
* Durch die Möglichkeit, einen eigenen Kontakt an Klemmen im Inneren anzuschliessen, lassen sich auch Lösungen für andere Einsatzzwecke realisieren.&lt;br /&gt;
* Da der Tür-/Fensterkontakt von alleine ca. alle vier Minuten seinen Status sendet, lässt er sich auch gut zum Ausmessen der [[SlowRF]] Funklage eines Gebäudes verwenden. Den Tür-/Fensterkontakt im Haus an die zu untersuchenden Stellen legen und mittels FHEM  RSSI beobachten. FS20 / FHT etc. arbeitet gut bei RSSI oberhalb -80, mäßig zwischen -80 und  -85 und bei RSSI kleiner als -85 unzuverlässig bis gar nicht.&lt;br /&gt;
&lt;br /&gt;
== Protokoll ==&lt;br /&gt;
&lt;br /&gt;
Das benutzte Protokoll der FHT Baugruppen wird auf der Seite von FHZ4Linux [http://fhz4linux.info/tiki-index.php?page=FHT%20protocol FHT Protokoll] beschrieben. Ein FHT80TF-2 sendet in bestimmten Zeitabständen seinen momentanen Status. Dabei kann man in einen Hauptintervall und in einen Statusänderungsintervall unterscheiden. Erst genannter Intervall sendet immer in einem gleichen Abstand von 240 + x Sekunden seinen Status (unten Fett hervorgehoben) und zweit genannter geschieht intern immer in (240 + x) / 4 Sekunden. Sollte nun innerhalb des Hauptintervalls ein Statuswechsel von &amp;quot;on&amp;quot; auf &amp;quot;off&amp;quot; bzw. &amp;quot;Open&amp;quot; auf &amp;quot;Closed&amp;quot; eintreten, wird nach Ablauf von 1x (240 + x) / 4 (Statusänderungsintervall) der neue Status gesendet und noch einmal nach (240 + x) / 4 wiederholt. Danach verfällt der TF-2 wieder in den Hauptintervall, beginnend bei 0. Die Variable x wird aus dem Adressbyte vom Fensterkontakt berechnet, ähnlich dem Intervall für den [[FHT80b#Hinweise_zum_Betrieb_mit_FHEM|FHT8v]]. Es werden nur die 3 niederwertigen Bits verwendet.&amp;lt;br /&amp;gt; Beispiel: FHTTF-2 ID 8631&#039;&#039;&#039;0A&#039;&#039;&#039; -&amp;gt; 0x0A &amp;amp; 0x07 = &#039;&#039;&#039;2&#039;&#039;&#039; -&amp;gt; (16 - (&#039;&#039;&#039;2&#039;&#039;&#039; * 2)) = 12 Sekunden.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Formel:&amp;lt;br /&amp;gt;&lt;br /&gt;
:x = (16 - (Adressbyte &amp;amp; 0x7) * 2)&amp;lt;br /&amp;gt;&lt;br /&gt;
:y = 240 + x&lt;br /&gt;
:y == Hauptintervall von 4 min + x&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! FHT Code !! HC1 !! HC2 !! Adressbyte !! Adressbyte &amp;amp; 0x7 !! Intervall&lt;br /&gt;
|-&lt;br /&gt;
| F7 FD 57 || 1111 0111 || 1111 1101 || 0101 0&#039;&#039;&#039;111&#039;&#039;&#039; || 7 || 4:02&lt;br /&gt;
|-&lt;br /&gt;
| 83 C0 D7 || 1000 0011 || 1100 0000 || 1101 0&#039;&#039;&#039;111&#039;&#039;&#039; || 7 || 4:02&lt;br /&gt;
|-&lt;br /&gt;
| 86 30 0A || 1000 0110 || 0011 0000 || 0000 1&#039;&#039;&#039;010&#039;&#039;&#039; || 2 || 4:12&lt;br /&gt;
|-&lt;br /&gt;
| 86 31 0A || 1000 0110 || 0011 0001 || 0000 1&#039;&#039;&#039;010&#039;&#039;&#039; || 2 || 4:12&lt;br /&gt;
|-&lt;br /&gt;
| CA 54 01 || 1100 1010 || 0101 0100 || 0000 0&#039;&#039;&#039;001&#039;&#039;&#039; || 1 || 4:14&lt;br /&gt;
|-&lt;br /&gt;
| 64 C8 70 || 0110 0100 || 1100 1000 || 0111 0&#039;&#039;&#039;000&#039;&#039;&#039; || 0 || 4:16&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
2013-10-07_21:17:15 Fenster Window: off&amp;lt;br /&amp;gt;&lt;br /&gt;
2013-10-07_21:21:17 Fenster Window: on&amp;lt;br /&amp;gt;&lt;br /&gt;
2013-10-07_21:22:17 Fenster Window: on&amp;lt;br /&amp;gt;&lt;br /&gt;
2013-10-07_21:26:19 Fenster Window: on&amp;lt;br /&amp;gt;&lt;br /&gt;
2013-10-07_21:30:21 Fenster Window: on&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2013-10-07_21:34:23 Fenster Window: on&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2013-10-07_21:38:25 Fenster Window: on&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
2013-10-07_21:50:32 Fenster Window: on&amp;lt;br /&amp;gt;&lt;br /&gt;
2013-10-07_21:54:34 Fenster Window: off&amp;lt;br /&amp;gt;&lt;br /&gt;
2013-10-07_21:55:34 Fenster Window: off&amp;lt;br /&amp;gt;&lt;br /&gt;
2013-10-07_21:59:36 Fenster Window: off&amp;lt;br /&amp;gt;&lt;br /&gt;
2013-10-07_22:03:38 Fenster Window: off&amp;lt;br /&amp;gt;&lt;br /&gt;
2013-10-07_22:06:40 Fenster Window: on&amp;lt;br /&amp;gt;&lt;br /&gt;
2013-10-07_22:07:40 Fenster Window: on&amp;lt;br /&amp;gt;&lt;br /&gt;
2013-10-07_22:08:41 Fenster Window: off&amp;lt;br /&amp;gt;&lt;br /&gt;
2013-10-07_22:09:41 Fenster Window: off&amp;lt;br /&amp;gt;&lt;br /&gt;
2013-10-07_22:13:43 Fenster Window: off&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Ergänzung zur Synchronisierung:&lt;br /&gt;
&lt;br /&gt;
Der Synchronisierungsprozess mit einem FHT 80 Regler wird mit einer Nachricht 0x0C (Befehlsbyte) begonnen und einem folgenden 0x0F (Befehlsbyte) abgeschlossen. Erst dann ist der TF am FHT angemeldet.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* Bedienungsanleitung (PDF {{DocLink|elv|/service/manuals/84919_FHT80TF_2_UM.pdf}})&lt;br /&gt;
* {{Link2Forum|Topic=27465|LinkText=Diskussionsthread}} dazu&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:FHT Components]]&lt;br /&gt;
[[Kategorie:Kontaktsensor (magnetisch)]]&lt;br /&gt;
[[Kategorie:868MHz]]&lt;/div&gt;</summary>
		<author><name>Soulman</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HomeMatic_Namen_verstehen&amp;diff=37821</id>
		<title>HomeMatic Namen verstehen</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HomeMatic_Namen_verstehen&amp;diff=37821"/>
		<updated>2022-12-16T16:47:32Z</updated>

		<summary type="html">&lt;p&gt;Soulman: /* Montageart */  WM55 ergänzt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[HomeMatic]] Sender und Aktoren sind oft mit den Bezeichnungen des Herstellers (die ELV Tochtergesellschaft eQ-3) benannt.&lt;br /&gt;
&lt;br /&gt;
Da es sich um Buchstaben und Zahlenkürzel handelt, ist nicht immer sofort erkennbar, um was für ein Gerät es sich handelt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Namensschema ==&lt;br /&gt;
Die Namen sind jedoch meist nach einem Schema aufgebaut, der Aufbau ist:&lt;br /&gt;
&lt;br /&gt;
Medientyp - Generelle Funktion - Sensor/Sender/Aktorfunktion [mit Taster] - [Montageart]&lt;br /&gt;
&lt;br /&gt;
also z.&amp;amp;nbsp;B. HM-LC-SW1-FM&lt;br /&gt;
&lt;br /&gt;
Die Gross- und Kleinschreibung wird nicht durchgängig stringent eingehalten. So wird die Aktorfunktion Schalter mal mit SW, mal mit Sw bezeichnet.&lt;br /&gt;
[ ] umschliessen optionale Bestandteile&lt;br /&gt;
&lt;br /&gt;
Ferner hält sich ELV nicht vollumfänglich an sein Namenschema.&lt;br /&gt;
Die LED Statusanzeige heisst z.&amp;amp;nbsp;B. HM-OU-LED16, müsste nach Namenschema aber eigentlich HM-Dis-16 heissen.&lt;br /&gt;
Zudem sind ähnliche Geräte mit Zusatzfunktionen völlig anders benannt (siehe Beispiele). &lt;br /&gt;
&lt;br /&gt;
Es bedeuten (Liste unvollständig):&lt;br /&gt;
&lt;br /&gt;
== Medientyp ==&lt;br /&gt;
* HM = HomeMatic Funk&lt;br /&gt;
* HMW = HomeMatic Wired&lt;br /&gt;
* HB = [[HomeBrew]] = HomeMatic Eigenentwicklungen, Nachbauten und Erweiterungen&lt;br /&gt;
* HBW = [[HomeBrew]] = HomeMatic-Wired Eigenentwicklungen, Nachbauten und Erweiterungen&lt;br /&gt;
&lt;br /&gt;
== Funktion ==&lt;br /&gt;
* CC = Heizungssteuerung (Climate Control)&lt;br /&gt;
* CFG = Konfiguration (Configuration)&lt;br /&gt;
* Dis = Anzeige (Display)&lt;br /&gt;
* ES = Energieversorgung (Energy Systems)&lt;br /&gt;
* IO = Eingang/Ausgang (Input/Output, nur bei HomeMatic Wired)&lt;br /&gt;
* LC = Licht/Strom (Light Control)&lt;br /&gt;
* LGW = LAN-Schnittstelle (LAN Gateway)&lt;br /&gt;
* MOD = Modul (Module)&lt;br /&gt;
* OU = Klang (evtl. allgemein als Output Unit, ?)&lt;br /&gt;
* PB[U] = Wandtaster (Push Button [Unit, z.B. Unterputzaktoren mit integrierten Tastern (Schalterersatz)])&lt;br /&gt;
* PBI = Tasterschnittstelle (Push Button Interface)&lt;br /&gt;
* RC = Fernbedienung (Remote Control)&lt;br /&gt;
* SCI = Schalterzustandserkennung (Shutter Contact Interface)&lt;br /&gt;
* SEC = Sicherheit/Überwachung (Security) (teilweise auch Sec)&lt;br /&gt;
* Sen = Sensor&lt;br /&gt;
* SwI = Schalterinterface (Switch Interface)&lt;br /&gt;
* Sys = Systemerweiterung (nur vom Repeater bekannt)&lt;br /&gt;
* TC = Temperatursteuerung (temperature control), eigentlich eine Untergruppe von CC&lt;br /&gt;
* UW = Umweltsensor (nur bei HomeBrew)&lt;br /&gt;
* WDSxx = Feuchte- und/oder Temperatursensor&lt;br /&gt;
* 1W = Ankopplung an [[:Kategorie:1-Wire|1-Wire Komponenten]]&lt;br /&gt;
&lt;br /&gt;
== Sensor/Sender/Aktorfunktion ==&lt;br /&gt;
* BLx = Jalousieaktor mit x Kanälen (Blind) (oft auch Blx)&lt;br /&gt;
* CF[M] = Gong und Blitz/Licht (und Klang-Speicher) (Chime with Flash (and Memory))&lt;br /&gt;
* DB = Türklingel (Door Bell)&lt;br /&gt;
* DimxT = Dimmer mit x Kanälen mit Phasen&#039;&#039;&#039;ab&#039;&#039;&#039;schnittsteuerung (&#039;&#039;&#039;t&#039;&#039;&#039;railing edge, für ohmsche und elektronische Lasten)&lt;br /&gt;
* DimxL = Dimmer mit x Kanälen mit Phasen&#039;&#039;&#039;an&#039;&#039;&#039;schnittsteuerung (&#039;&#039;&#039;l&#039;&#039;&#039;eading edge, für ohmsche und induktive Lasten)&lt;br /&gt;
* EM = Sender (Emitter, ?)&lt;br /&gt;
* EP = (Sensor für) Elektrische Impulse&lt;br /&gt;
* KEY = Schließsystem&lt;br /&gt;
* Px = Paniksender mit x Kanälen (Panic)&lt;br /&gt;
* T = Temperatursensor&lt;br /&gt;
* TH = Temperatur und Feuchtesensor (Temperature &amp;amp;amp; Humidity)&lt;br /&gt;
* TiS = Neigungssensor (Tilt Sensor)&lt;br /&gt;
* Re = Empfänger (Receiver, ?)&lt;br /&gt;
* RT = Heizkörperthermostat (Radiator Thermostat)&lt;br /&gt;
* SC[o] = Tür- / Fenster / Schliesserkontakt (Shutter Contact (optical))&lt;br /&gt;
* SCD = Luftgütesensor (Sensor Carbon Dioxide)&lt;br /&gt;
* SFA = Sirenen- und Blitz-Aktor (sirene and flash actuator)&lt;br /&gt;
* SWx = Schaltaktor mit x Kanälen (Switch) (oft auch Swx)&lt;br /&gt;
* VD = Stellantrieb (Ventile Drive)&lt;br /&gt;
* WDS = Wassermelder&lt;br /&gt;
* MDIR = Infrarot Bewegungsmelder (Motion Detector Infrared)&lt;br /&gt;
* 1 = Einkanal&lt;br /&gt;
* 2 = Zweikanal&lt;br /&gt;
* 4 = Vierkanal&lt;br /&gt;
* 8 = Achtkanal&lt;br /&gt;
* 12 = Zwölfkanal&lt;br /&gt;
* 16 = Sechzehnkanal&lt;br /&gt;
* 19 = Neunzehnkanal&lt;br /&gt;
&lt;br /&gt;
== Montageart ==&lt;br /&gt;
Optional, nur soweit bedeutsam, z.&amp;amp;nbsp;B. um Geräte ansonsten gleicher Funktion zu unterscheiden, wird die Montageart angefügt:&lt;br /&gt;
&lt;br /&gt;
* CV = Zwischendeckenmontage (Ceiling mount)&lt;br /&gt;
* DN = Heizkörpermontage (???)&lt;br /&gt;
* DR = Hutschienenmontage (DIN Rail)&lt;br /&gt;
* FM = Unterputz (Floating Mount)&lt;br /&gt;
* PL = Zwischenstecker (Plug) (oft auch Pl)&lt;br /&gt;
* SM = Aufputz (Surface Mount)&lt;br /&gt;
* WM = beliebige Festmontage, meist Aufklebegerät (Wall Mount)&lt;br /&gt;
* WM55 = Wandmontage mit 55er Rahmen und Grundplatte&lt;br /&gt;
* I = Innenmontage (Indoor)&lt;br /&gt;
* O = Aussenmontage (Outdoor)&lt;br /&gt;
* T = Frei aufstellbares Gerät (eventuell von &amp;quot;Tabletop&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
==Sonstiges==&lt;br /&gt;
&lt;br /&gt;
* B = schwarz&lt;br /&gt;
* W = weiss (auch SW?)&lt;br /&gt;
* PCB = Bausatz / Platinenversion&lt;br /&gt;
&lt;br /&gt;
== Beispiel ==&lt;br /&gt;
[[HM-LC-SW1-FM Schaltaktor 1-fach UP|HM-LC-SW1-FM]] = HomeMatic Funk - Licht/Strom - Schaltaktor mit einem Kanal - Unterputzmontage&lt;br /&gt;
&lt;br /&gt;
[[HM-LC-Sw2PB-FM Schaltaktor mit Tasteraufsatz 2fach|HM-LC-Sw2PB-FM]] = HomeMatic Funk - Licht/Strom - Schaltaktor mit zwei Kanälen UND Tastern - Unterputzmontage&lt;br /&gt;
&lt;br /&gt;
[[HM-LC-Sw1-Pl2_Funk-Zwischenstecker-Schaltaktor_1fach|HM-LC-Sw1-Pl2]] = HomeMatic Funk - Licht/Strom - Schaltaktor mit einem Kanal - Zwischenstecker (auch als HM-LC-Sw1-Pl-DN-R1 erhätlich &lt;br /&gt;
&lt;br /&gt;
[[HM-ES-PMSw1-Pl_Funk-Schaltaktor_1-fach_mit_Leistungsmessung|HM-ES-PMSw1-Pl]] = HomeMatic Funk - Energiesysteme - Leistungsmessung+Schaltaktor mit einem Kanal - Zwischenstecker (eben nicht HM-&#039;&#039;&#039;LC&#039;&#039;&#039;-&#039;&#039;&#039;PM&#039;&#039;&#039;Sw1-Pl, im Vergleich dazu)&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
[[Kategorie:HomeBrew]]&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;/div&gt;</summary>
		<author><name>Soulman</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Trick_der_Woche&amp;diff=37521</id>
		<title>Trick der Woche</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Trick_der_Woche&amp;diff=37521"/>
		<updated>2022-08-09T22:29:59Z</updated>

		<summary type="html">&lt;p&gt;Soulman: /* Grundlastmodul */ typos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diese Seite enthält Tipps und Tricks, die zu unbedeutend sind, einen eigenen Artikel zu rechtfertigen, alternative Schreibweisen/Lösungen für eine Problem darstellen, Ungenauigkeiten oder unklare Formulierungen in den offiziellen Dokumenten ergänzen und ähnliches. Jeder Eintrag ist typischerweise sehr kurz (wenige Zeilen lang) und beleuchtet vielleicht nur einen Aspekt von FHEM, er kann allgemeiner Natur sein, oder sich auf ein spezielles Gerät oder einen speziellen Anwendungsfall beziehen.&lt;br /&gt;
&lt;br /&gt;
== August 2022==&lt;br /&gt;
=== Update ===&lt;br /&gt;
Wenn der Befehl &amp;quot;Update&amp;quot; nicht funktioniert und insbesondere die Fehlermeldung &#039;&#039;Bad hostname &#039;fhem.de:80&#039;&#039;&#039; zurück gibt, kann es sinnvoll sein, den Parameter  -noSSL zu versuchen. Details dazu im Artikel [[Update]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Januar 2022==&lt;br /&gt;
=== günstiger Luftfeuchtesensor ===&lt;br /&gt;
Der [[HM-CC-TC Funk-Wandthermostat]] ist schon lange abgekündigt. Er wird derzeit oft recht günstig im Netz angeboten und eignet sich daher als billiger &amp;quot;StandAlone&amp;quot; Temperatur- und Luftfeuchtesensor, auch wenn er keinen Ventielantrieb steuern soll.&lt;br /&gt;
&lt;br /&gt;
== Dezember 2020 ==&lt;br /&gt;
=== Performance von Notifys ===&lt;br /&gt;
Im Tipp vom Dezember 2013 [[Trick der Woche#notify durch mehrere Ereignisse auslösen lassen|notify durch mehrere Ereignisse auslösen lassen]] heisst es:&lt;br /&gt;
:&#039;&#039;[…] Wenn man aber möchte, dass z.B. &amp;quot;on&amp;quot; und &amp;quot;off&amp;quot; auslöst (um etwa Dim-Befehle auszuschliessen), kann dies wie folgt erreicht werden:&#039;&#039;&lt;br /&gt;
::&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:(on|off) …&amp;lt;/code&amp;gt;&lt;br /&gt;
Performanter ist allerdings:&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:o[nf]+  …&amp;lt;/code&amp;gt;&lt;br /&gt;
wobei &#039;&#039;&#039;o[nf]+&#039;&#039;&#039; eine &amp;quot;Regexp&amp;quot; für beliebige Zeichenketten ist, die mit &#039;&#039;&#039;o&#039;&#039;&#039; anfangen und &#039;&#039;&#039;n&#039;&#039;&#039; und/oder &#039;&#039;&#039;f&#039;&#039;&#039; enthalten, also (auch) on und off.&lt;br /&gt;
&lt;br /&gt;
Alternativ kann auch:&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:on|MeinSchalter:off … &amp;lt;/code&amp;gt;&lt;br /&gt;
verwendet werden.&lt;br /&gt;
Die letzten beiden Varianten sparen Ausführungszeit. Ganz allgemein ist es besser, im notify das Suchmuster mit einem [[Regulärer Ausdruck|regulären Ausdruck]] (Regexp) eng zu definieren.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:on ... &amp;lt;/code&amp;gt;&lt;br /&gt;
ist performanter als&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter { if ($EVENT eq &amp;quot;on&amp;quot; ... &amp;lt;/code&amp;gt;&lt;br /&gt;
auch wenn das Ergebnis gleich ist.&lt;br /&gt;
&lt;br /&gt;
Allerdings ist &lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:on ... &amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas1 notify MeinSchalter:off ... &amp;lt;/code&amp;gt;&lt;br /&gt;
langsamer als&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchaltero[nf]+ { if ($EVENT eq &amp;quot;on&amp;quot;  ) { fhem( ) } else { fhem(&amp;quot;... &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Oktober 2020 ==&lt;br /&gt;
=== Entprellen ===&lt;br /&gt;
Will man ein notify innerhalb eines bestimmten Zeitraumes nur einmal auslösen lassen, auch wenn er in diesem Zeitraum mehrfach getriggered werden sollte, so bietet sich das [[Attribut]] &#039;&#039;&#039;disabledAfterTrigger&#039;&#039;&#039; an:&lt;br /&gt;
:&amp;lt;code&amp;gt;attr &amp;lt;notify_device&amp;gt; disabledAfterTrigger &amp;lt;Anzahl Sekunden&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Oktober 2019 ==&lt;br /&gt;
=== Funkstörungen durch leere Batterien ===&lt;br /&gt;
Unerklärliche Funkstörungen besonders im SlowRF Bereich (z.b. FS20) mit stark verminderter Reichweite von CULs, gestörter [[RFR CUL]] Kommunikation etc. gestörtem Empfang von Funktelegrammen aller Art können ihre Ursache darin haben, dass einige Geräte mit (fast) leeren Batterien unkontrolliert senden und dadurch den Kanal mit Störsignalen verschmutzen. Anfällig sind insbesondere ältere FHT Fenstersensoren wie der [[FHT80TF]], die mit fast leeren Batterien eine Art Rauschen aussenden und damit die &#039;&#039;&#039;komplette&#039;&#039;&#039; FS20 Kommunikation lahmlegen können, Störungen beeinflussen auch andere Funkprotokolle im selben Frequenzbereich, wie z.b. HM.&lt;br /&gt;
Also im Falle unerklärlicher und weitreicher Funkstörungen die Batterien aller Geräte überprüfen.&lt;br /&gt;
&lt;br /&gt;
== Februar 2019 ==&lt;br /&gt;
=== Unterräume anlegen ===&lt;br /&gt;
[[Datei:Unterraeume.png|350px|thumb|right|Beispiel für einen gegliederten Raum &amp;quot;Steuerung&amp;quot;]]&lt;br /&gt;
In [[FHEMWEB]] besteht neben der Möglichkeit, Geräte dadurch übersichtlich anzuordnen, indem diese Gruppen und einfachen Räumen zugeordnet werden, auch die Möglichkeit, Räume weiter zu gliedern und Unterräume zu verwenden. Dazu wird nach der Angabe des Hauptraums der Unterraum, getrennt durch ein &amp;quot;-&amp;gt;&amp;quot; angegeben. Beispiele:&lt;br /&gt;
 attr &amp;lt;DEVICENAME&amp;gt; room Steuerung-&amp;gt;Logik&lt;br /&gt;
 attr &amp;lt;DEVICENAME&amp;gt; room Steuerung-&amp;gt;Heizung&lt;br /&gt;
&#039;&#039;&#039;Hinweis&#039;&#039;&#039;: Legt man zusätzlich einen Raum &#039;&#039;Steuerung&#039;&#039; an, erscheint dieser als zusätzlicher Eintrag in der Raumliste.&lt;br /&gt;
&lt;br /&gt;
== Januar 2019 ==&lt;br /&gt;
=== HomeMatic IP ===&lt;br /&gt;
Das [[HomeMatic IP]]-Protokoll unterscheidet sich deutlich vom bisherigen HomeMatic Protokoll, im Grunde ist es ein anderes System, das nur dem Namen nach dem älteren HomeMatic gleicht. HM-IP Geräte können aktuell (Anfang 2019) nur über eine systemeigene Zentrale CCU2 (als physisch vorhandenes Interface) und die HomeMatic-Module in FHEM integriert werden, sind in FHEM jedoch &#039;&#039;&#039;nicht&#039;&#039;&#039; unmittelbar als Homematic-Geräte ansprechbar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Dezember 2018 ==&lt;br /&gt;
===HomeMatic Heizungsregler Uhrzeit einstellen===&lt;br /&gt;
HomeMatic Thermostate / Heizungsregler  wie der HM-CC-TC der der HM-TC-IT-WM-W-EU etc. synchronisieren ihre Uhrzeit täglich etwa gegen Mitternacht mit der Zentrale. Man kann dieses Update aber jederzeit erzingen durch den Befehl  &lt;br /&gt;
 set &amp;lt;DEVICENAME&amp;gt; sysTime&lt;br /&gt;
&lt;br /&gt;
== November 2018 ==&lt;br /&gt;
===HomeMatic Heizunggeräte gebraucht gekauft===&lt;br /&gt;
HomeMatic Heizunggeräte gebraucht gekauft und jetzt lassen sie sich nicht richtig peeren oder pairen?&lt;br /&gt;
Das Problem ist meistens, dass die Geräte noch mit der Zentrale des Verkäufers gepairt oder mit anderen Geräten gepeert sind. &lt;br /&gt;
Mit Thermostaten wie der [[HM-CC-TC Funk-Wandthermostat]] oder der Nachfolger [[HM-TC-IT-WM-W-EU Funk-Wandthermostat AP]] können mit Ventilantrieben wie dem [[HM-CC-VD Funk-Stellantrieb]] nur gepeert werden, wenn &lt;br /&gt;
* die Thermostaten nicht selbst schon mit einer Zentrale (im FHEM Umfeld also z.b. einer [[Virtueller Controller VCCU]] oder [[HM-[[HM-CFG-LAN LAN Konfigurations-Adapter]] oder ähnliches) gepairt wurden&lt;br /&gt;
* die Ventilantriebe nicht selbst mit einer Zentrale gepairt oder mit einem Thermostaten gepeert wurden.&lt;br /&gt;
&lt;br /&gt;
Es ist daher sinnvoll zuerst alle Geräte zurückzusetzen, da viele Verkäufer dies vergessen. Wie das geht steht in der Anleitung.&lt;br /&gt;
Beispiele:&lt;br /&gt;
* HM-CC-TC -&amp;gt; MENU lange drücken, dann Sonderfunktion &amp;quot;RES&amp;quot; anwählen, mit OK-Taste bestätigen&lt;br /&gt;
* HM-CC-VD -&amp;gt; Anlernknopf 10 Sekunden lang drücken. Der Antrieb geht in Zustand A2, nachdem er das Ventil 1x auf- und zugefahren hat geht er in A3, Knopf nochmals drücken.&lt;br /&gt;
* HM-TC-IT-WM-W-EU -&amp;gt; Batterien entfernen, alle 3 Tasten gedrückt halten, Batterien einlegen, warten bis &amp;quot;rES&amp;quot; im Display erscheint, Tasten loslassen&lt;br /&gt;
&lt;br /&gt;
== Januar 2018 ==&lt;br /&gt;
=== at absolutem Datum ===&lt;br /&gt;
Vielen ist nicht klar, dass man mit dem &amp;quot;define … at&amp;quot; auch einfach ein absolutes Datum definieren kann (obwohl es in der Commandref steht). Anstatt umfangreicher DOIF Konstrukte oder &amp;quot;define … at&amp;quot; die täglich ablaufen und testen ob der gewünschte Tag schon erreicht ist, geht auch ein einfaches:&lt;br /&gt;
&lt;br /&gt;
 define Licht_Neujahr_2019 at 2019-01-03T06:01:01 set Licht1 on&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Allgemein: &lt;br /&gt;
 define &amp;lt;name&amp;gt; at [&amp;lt;datespec&amp;gt;] &amp;lt;command&amp;gt; &lt;br /&gt;
wobei &amp;lt;datespec&amp;gt; =  (YYYY-MM-DDTHH:MM:SS) (also in ISO8601 Schreibweise).&lt;br /&gt;
Wichtig ist die Angabe mit Sekunden, die nicht weggelassen werden können.&lt;br /&gt;
&lt;br /&gt;
== Dezember 2017 ==&lt;br /&gt;
=== perl Version ===&lt;br /&gt;
Gelegentlich taucht die Frage auf, welche perl Version zum Betrieb von FHEM minimal erforderlich ist. Bedauerlicherweise lässt sich das aber aktuell nicht definitiv bestimmen.&lt;br /&gt;
Rudolf König testet zur Zeit (Ende 2017) mit v5.16 (5 Jahre alt) und v5.24 (ca. 1 Jahr alt). &lt;br /&gt;
Sollte sich herausstellen, dass eines seiner Module (vor allem fhem.pl selbst) nicht mit der jeweils &#039;&#039;aktuellen&#039;&#039; perl Version funktioniert, so wird das Modul entsprechend kompatibel gemacht.&lt;br /&gt;
Andererseits verwendet Rudolf König nach eigener Aussage (bewusst) keine Features, die eine höhere Version als perl 5.8.3 (immerhin älter als 13 Jahre) voraussetzen. Tatsächlich zeigen aktuelle Installation auf relativ alten BuffaloLinkstation Systemen, dass FEHM mit perl 5.8.3 prinzipiell lauffähig ist.&lt;br /&gt;
&lt;br /&gt;
Rudolf König prüft als Maintainer von fhem.pl aber nicht, welche Mindestversionen andere Entwickler in Ihren Modulen benötigen. Es ist daher möglich oder sogar wahrscheinlich, das einzelne Module höhere Versionen als 5.8.3 benötigen.&lt;br /&gt;
&lt;br /&gt;
Es gibt aktuell keinen Weg, die Mindestanforderungen z.b. automatisiert zu ermitteln.&lt;br /&gt;
&lt;br /&gt;
== November 2017 ==&lt;br /&gt;
=== Grundlastmodul ===&lt;br /&gt;
Mit einem Grundlastmodul ist es möglich, LED Leuchtmittel an einem Schaltaktor / Dimmer zu betreiben. Dies ist bei manchen nicht möglich, da einige LEDs nachglimmen oder flackern. Das Grundlastmodul, welches parallel zum Verbraucher angeschlossen wird, kann diesen Effekt aufheben, da ein Verbraucher mit ohmscher Last simuliert wird.&lt;br /&gt;
Das Modul ermöglicht eventuell auch den Betrieb eines [[RSL 2-Draht Einbauschalter]]s, der bei LED Leuchtmitteln ansonsten nicht eingesetzt werden kann, da zum Betrieb eine Restspannung über den Verbraucher benötigt wird, der bei LED Lampen mit Vorschaltgerät nicht vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
In Frage kommt z.b. ein Eltako ELTA Grundlastelement GLE / PTC, das ca. 5-8 Euro kostet.&lt;br /&gt;
Technisch handelt sich dabei um einen PTC, also einen Widerstand mit positivem Temperaturkoeffizient, d.h. der Widerstand sinkt deutlich, wenn das Element kälter wird. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das genannte Grundlastelement hat folgende Daten: &lt;br /&gt;
 Kaltwiderstand: 3500 Ω&lt;br /&gt;
 Einschaltstrom bei 230 V: 65 mA (ca. 15 W)&lt;br /&gt;
 Verlustleistung nach 60 Sekunden: 0,65 W &lt;br /&gt;
&lt;br /&gt;
Im kalten Zustand lässt der PTC bei 230 Volt einen Strom von ca. 0,065 Ampere zu.  &lt;br /&gt;
Das reicht, um von Schaltaktoren, Freischaltern, Dimmern etc. als die erforderliche Grundlast erkannt zu werden.&lt;br /&gt;
Wird der Stromkreis eingeschaltet, fliesst auch tatsächlich Strom durch den PTC, der sich dadurch schnell erwärmt (das Element wird tatsächlich sogar relativ heiss). Dadurch steigt steigt der Widerstand auf ca 50000-60000 Ohm an und die Verlustleistung sinkt auf unter 1 Watt. Der PTC regelt sich jetzt selber auf eine bestimmte Temperatur und Widerstand ein.&lt;br /&gt;
&lt;br /&gt;
Wird ausgeschaltet, so fliest über den PTC immer noch ein kleiner Reststrom von ca 0,005 Ampere, der als Grundlast reicht, um z.b. Spannungen abzubauen, die LEDs nachflackern lassen, dieser steigt mit Erkalten rasch an, dadurch werden auch Schalter wie die [[RSL 2-Draht Einbauschalter]] mit genug Strom versorgt.&lt;br /&gt;
&lt;br /&gt;
Theoretisch kann also auch ein PTC mit diesen Werten und einer Leistung von ca. 20 Watt selbst gebaut werden, der Preis der Einzelteile liegt bei unter 2 Euro. Das Eltako Element ist bereits mit Isolierung und Anschlussleitungen versehen, mit eigner Arbeitszeit ist der Preisvorteil beim Selberbau also gering.&lt;br /&gt;
&lt;br /&gt;
== Februar 2017 ==&lt;br /&gt;
=== at Zeiten ===&lt;br /&gt;
 at 03:00      -&amp;gt;  1x um 3 Uhr (wann immer das nächste mal 3 Uhr ist, ggf. erst morgen)&lt;br /&gt;
 at *03:00     -&amp;gt;  jeden Tag um 3 Uhr&lt;br /&gt;
 at +03:00     -&amp;gt;  in 3 Stunden&lt;br /&gt;
 at +*03:00    -&amp;gt;  in 3 Stunden und dann alle 3 Stunden erneut&lt;br /&gt;
 at +*{4}03:00 -&amp;gt;  in 3 Stunden und dann alle 3 Stunden erneut, aber nur 4x ausführen.&lt;br /&gt;
&lt;br /&gt;
== Oktober 2016 ==&lt;br /&gt;
=== Grundlagen der Heizungssteuerung ===&lt;br /&gt;
Der Artikel [[Grundlagen der Heizungssteuerung]] soll einen zentralen Einstiegspunkt und eine Übersicht der Möglichkeiten insb. für Neulinge in FHEM bieten.&lt;br /&gt;
&lt;br /&gt;
=== Batterieüberwachung für Geräte ohne Batteriestatus ===&lt;br /&gt;
Es gibt Möglichkeiten um auch bei Geräten ohne Batteriestatus-Reading eine schwache Batterie erkennen zu können: [[Batterie%C3%BCberwachung#Ger.C3.A4te_ohne_Batteriestatus|Geräte ohne Batteriestatus]].&lt;br /&gt;
&lt;br /&gt;
== Mai 2016 ==&lt;br /&gt;
=== DbLog reparieren ===&lt;br /&gt;
Sollte ein fhem mit DbLog Probleme machen, oder auf der SQL-Konsole Fehler werfen, so ist eine Reparatur der DB fällig. Das ist auf der Kommandozeile verhältnismäßig einfach möglich und wird im Kapitel [[DbLog#Datenbank reparieren]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
=== DbLog bearbeiten ===&lt;br /&gt;
Unerwünschte Einträge in den Loggings treten immer wieder mal auf. Wie man dies in einer Datenbank korrigiert, dazu gibt das Kapitel [[DbLog#Bearbeitung von Datenbank-Einträgen]] eine erste Einführung.&lt;br /&gt;
&lt;br /&gt;
=== Pollenflug ===&lt;br /&gt;
In dieser schönen Jahreszeit werden manche durch Heuschnupfen geplagt. Auf der Seite [[Pollenflug]] wird beschrieben, wie man eine Pollenvorhersage in fhem einbinden kann - hilft zwar nicht gegen das Niesen, ist aber trotzdem ganz informativ... ;-)&lt;br /&gt;
&lt;br /&gt;
== April 2016 ==&lt;br /&gt;
=== HomeMatic und VCCU ===&lt;br /&gt;
HomeMatic Nutzer sollten unbedingt eine [[Virtueller Controller VCCU|VCCU]] einrichten und nutzen.&lt;br /&gt;
Die Einrichtung ist unaufwändig und schafft jede Menge Vorteile, auch beim Einsetzen nur einer Schnittstelle wie z.B. einem [[HM-CFG-LAN LAN Konfigurations-Adapter]]. Auch die nachträglich Einrichtung ist problemlos, sofern vorher nur ein I/O Gerät (&amp;quot;Funkschnittstelle&amp;quot;) verwendet wurde.&lt;br /&gt;
&lt;br /&gt;
== Dezember 2015 ==&lt;br /&gt;
===defmod===&lt;br /&gt;
In vielen Fällen will man mit einer Aktion gleichzeitig eine andere Aktion bereits für später festlegen, z.b. nach Einschalten  einer Heizung durch einen Bewegungsmelder diese eine Stunde später wieder ausschalten.&lt;br /&gt;
&lt;br /&gt;
Dies kann z.B. durch ein Konstrukt dieser Art erledigt werden:&lt;br /&gt;
:&amp;lt;code&amp;gt;define Heizung_an notify Bewegung set HZG_WZ desired-temp 22 ;; define reset_Heizung at +01:00:00 set HZG_WZ desired-temp 16&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nachteilig ist, dass bei einer weiteren Auslösung des Bewegungsmelders die Heizzeit nicht verlängert wird, da eine Neudefinition von &#039;&#039;&#039;reset_Heizung&#039;&#039;&#039; mit der Fehlermeldung &#039;&#039;&#039;reset_Heizung already exists, delete it first&#039;&#039;&#039; quittiert wird. Die Lösung bisher war, das alte &#039;&#039;&#039;reset_Heizung&#039;&#039;&#039; zunächst zu löschen und dann erneut mit neuem Zeitstempel anzulegen:&lt;br /&gt;
:&amp;lt;code&amp;gt;define Heizung_an notify Bewegung set HZG_WZ desired-temp 22 ;; delete reset_Heizung ;; define reset_Heizung at +01:00:00 set HZG_WZ desired-temp 16&amp;lt;/code&amp;gt;&lt;br /&gt;
Aber auch dieses umständliche Konstrukt hat noch einen Nachteil: Es erzeugt bei einer ersten Auslösung eine Fehlermeldung, weil &#039;&#039;&#039;reset_Heizung&#039;&#039;&#039; noch nicht exisitert und daher nicht gelöscht werden kann.  Dies liesse sich abfangen, was die Konstruktion weiter verkomplizieren würde.&lt;br /&gt;
&lt;br /&gt;
Daher hat Rudolf König mit FHEM 5.6 den neuen Befehel &amp;quot;defmod&amp;quot; eingeführt, der ein noch nicht existieredendes define neu anlegt (wie &amp;quot;define&amp;quot;), eine bereits vorhandenes aber direkt ändert (wie &amp;quot;delete&amp;quot; und danach &amp;quot;define&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Dadurch lässt sich verkürzt schreiben:&lt;br /&gt;
:&amp;lt;code&amp;gt;define Heizung_an notify Bewegung set HZG_WZ desired-temp 22 ;; defmod reset_Heizung at +01:00:00 set HZG_WZ desired-temp 16&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== April 2015 ==&lt;br /&gt;
===FS20 Timer===&lt;br /&gt;
FS20 Aktoren beherrschen zwei verschiedene Timer-Methoden.&lt;br /&gt;
&lt;br /&gt;
Angenommen ein FS20 Device heisse &amp;quot;Lampe&amp;quot; und sei z.B. ein [[FS20_SU_Unterputz-Funk-Schalter|FS20 SU]] (Unterputzschalter), dann kann man mit FHEM sowohl &lt;br /&gt;
:&amp;lt;code&amp;gt; set Lampe on-for-timer 30&amp;lt;/code&amp;gt;&lt;br /&gt;
verwenden um die Lampe 30 Sekunden einzuschalten, aber auch zunächst in den FS20 SU die maximale Einschaltdauer einprogrammieren:&lt;br /&gt;
:&amp;lt;code&amp;gt; set Lampe timer 30&amp;lt;/code&amp;gt;&lt;br /&gt;
Dannach wird jedes normale&lt;br /&gt;
:&amp;lt;code&amp;gt; set Lampe on&amp;lt;/code&amp;gt;&lt;br /&gt;
die Lampe für nur 30 Sekunden einschalten.&lt;br /&gt;
&lt;br /&gt;
Als Timerwerte kommen in beiden Fällen die bekannten [[Trick_der_Woche#FS20_Timerzeiten|128 Sekundenwerte]] von 0,25 Sekunden bis Etwa 4,5 Stunden in Frage.&lt;br /&gt;
&lt;br /&gt;
Es ist offenbar nicht bei allen Aktoren möglich einen einmal eingestellten Timer zu löschen, neue Werte eingeben aber sehr wohl.&lt;br /&gt;
&lt;br /&gt;
Mehr hier: [[FS20_Allgemein#Gerätetimer setzen / löschen|FS20 timer]].&lt;br /&gt;
&lt;br /&gt;
== Februar 2015 ==&lt;br /&gt;
=== 1-wire am GPIO4-Port des RaspberryPi funktioniert nicht mehr nach Systemupdate ===&lt;br /&gt;
Es kann passieren, dass nach einem Systemupdate (apt-get update oder apt-get dist-upgrade) die 1-wire-Geräte am GPIO4-Port plötzlich nicht mehr funktionieren. Eine Problemlösung dazu ist im Artikel &amp;quot;[[Raspberry Pi und 1-Wire#1-wire am GPIO4-Port funktioniert nicht mehr nach Systemupdate]]&amp;quot; beschrieben.&lt;br /&gt;
&lt;br /&gt;
=== Backup der Konfiguration (fhem.cfg und fhem.state) bei jedem &amp;quot;save&amp;quot; ===&lt;br /&gt;
Der nachfolgende Codeschnipsel erstellt bei jedem &amp;quot;save&amp;quot; eine Kopie der aktuellen [[Konfiguration]] (fhem.cfg und fhem.state) in ein Verzeichnis &amp;quot;backup_cfg-state&amp;quot; welches unter /opt/fhem/ zu finden ist. Somit kann bei einem Fehler jederzeit auf den letzten Stand zurückgegangen werden.&lt;br /&gt;
Zuerst ins FHEM Befehlsfeld den folgenden Befehl eingeben:&lt;br /&gt;
:&amp;lt;code&amp;gt;{ `mkdir backup_cfg-state` } &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach folgendes [[notify]] anlegen:&lt;br /&gt;
 define backupCfg notify global:SAVE {\&lt;br /&gt;
 my $now = TimeNow();; $now =~ s/ /_/g;; \&lt;br /&gt;
 `cp $attr{global}{configfile} ./backup_cfg-state/fhem.cfg.$now`;;\&lt;br /&gt;
 `cp $attr{global}{statefile} ./backup_cfg-state/fhem.state.$now`;;\&lt;br /&gt;
 } &lt;br /&gt;
&lt;br /&gt;
Quelle: {{Link2Forum|Topic=30873|Message=234412|LinkText=FHEM-Forum}}&lt;br /&gt;
&lt;br /&gt;
== Januar 2015 ==&lt;br /&gt;
=== CUL &amp;amp; CO über Serial ID-einbinden ===&lt;br /&gt;
Bei mehreren USB-Geräten kann es vorkommen, dass sie vertauscht werden z.B. &#039;&#039;/dev/ttyUSB0&#039;&#039; zu&#039;&#039; /dev/ttyUSB1&#039;&#039; oder &#039;&#039;/dev/ttyACM0&#039;&#039; zu &#039;&#039;/dev/ttyACM1&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Um dies zu umgehen, kann man sie über ihre Serial-ID in FHEM einbinden.&lt;br /&gt;
&lt;br /&gt;
Dieser Befehl zeigt die Serial-ID:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;ls -l /dev/serial/by-id&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier die Beispielausgabe eines CUL868, JeeLink, RFXtrx und eines CUL433&lt;br /&gt;
&lt;br /&gt;
 user@xxxx:~# ls -l /dev/serial/by-id&lt;br /&gt;
 lrwxrwxrwx 1 root root 13 Jan  9 23:34 usb-busware.de_CUL868-if00 -&amp;gt; ../../ttyACM0&lt;br /&gt;
 lrwxrwxrwx 1 root root 13 Jan  9 13:26 usb-FTDI_FT232R_USB_UART_A901RQ9F-if00-port0-&amp;gt; ../../ttyUSB0&lt;br /&gt;
 lrwxrwxrwx 1 root root 13 Jan  9 13:26 usb-RFXCOM_RFXtrx433_A1WZWL5Y-if00-port0-&amp;gt; ../../ttyUSB1&lt;br /&gt;
 lrwxrwxrwx 1 root root 13 Jan  9 21:29 usb-busware.de_CUL433-if00 -&amp;gt; ../../ttyACM1 &lt;br /&gt;
&lt;br /&gt;
Damit lässt sich folgende Definition erstellen:&lt;br /&gt;
&lt;br /&gt;
z.B. für einen CUL868&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define CUL868 CUL /dev/serial/by-id/usb-busware.de_CUL868-if00@9600 1134&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oder einen JeeLink&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define Jeelink JeeLink /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A901RQ9F-if00-port0@57600&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Einschränkung:&#039;&#039;&#039; Bei CULs von Busware lassen sich nur CUL433 und CUL868 unterscheiden. Zwei CUL868 haben z.B. immer die gleiche Serial-ID.&lt;br /&gt;
&lt;br /&gt;
=== HM LAN Konfig-Adapter Antenne verbessern===&lt;br /&gt;
Die Antenne des [[HM-CFG-LAN LAN Konfigurations-Adapter]] kann man mit etwas Bastelgeschick verlängern um den Empfang zu verbessern. &lt;br /&gt;
&lt;br /&gt;
Sinnvoll ist die Verlängerung auf 1/2 Lambda  (868MHz = 17,27 cm) oder gar 1 Lambda.&lt;br /&gt;
1 Lambda Antennen haben starke Richtwirkung in Form eines gedachten Zylinders, dessen Mittelachse die Antenne ist.&lt;br /&gt;
D.h., Alles was sich in Richtung des Anfangs und des Endes des Antennedrahtes befindet, hat schlechteren Empfang als mit einer kurzen Antenne. Daher muss man die Antenne ggf. genauer ausrichten.&lt;br /&gt;
&lt;br /&gt;
Anleitungen dazu werden an verschiedenen Stellen veröffentlicht, z.B. in &lt;br /&gt;
[http://www.ip-symcon.de/forum/threads/18411-Umbau-HM-LAN-Adapter-auf-Lambda-1-2-Dipol-Antenne diesem Beitrag] im IP-Symcon Forum (anders als der Namen der Anleitung vermuten lässt, liegt hier kein Dipol vor, sondern eine &amp;quot;normale&amp;quot; 1 Lambda Antenne.)&lt;br /&gt;
&lt;br /&gt;
Prinzipiell so dünnen Draht wie möglich verwenden.&lt;br /&gt;
&lt;br /&gt;
Wer noch mehr rausholen will, kann auch zusätzlichen Aufwand betreiben und die Antenne etwas von der Elektronik entfernen, die nämlich Störstrahlung in die Antenne einkoppelt. Oder eine Groundplane bauen.&lt;br /&gt;
Ein Anleitung für die CCU (analog auch für den HM LAN Konfig-Adapter einsetzbar) gibt es [http://www.techwriter.de/beispiel/funkeige.htm hier].&lt;br /&gt;
&lt;br /&gt;
== Dezember 2014 ==&lt;br /&gt;
=== FHT80TF als &amp;quot;Prüfsender&amp;quot; einsetzen  ===&lt;br /&gt;
Da der [[FHT80TF-2]] günstig ist und seinen Zustand ca. alle zwei Minuten sendet, kann er gut zum Ermitteln der Funklage von [[SlowRF]] Komponenten genutzt werden, auch wenn diese nicht senden. Den RSSI einer FS20 Schaltsteckdose kann man z.B. nicht wissen, da die Dose nur ein Empfänger ist. Wenn eine Dose nicht gut funktioniert und man den Verdacht hat, dass sie funktechnisch ungünstig liegt, kann man einen [[FHT80TF-2]] neben die Steckdose legen und man bekommt nach zwei Minuten einen Wert, der (trotz umgekehrter Funkrichtung) gut genug ist, um einem Hinweise zu geben.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== November 2014 ==&lt;br /&gt;
=== FS20 Adressschema und die Rolle des Hauscodes  ===&lt;br /&gt;
[[FS20_Allgemein#FS20_Adressierungsschema_.28Vorschlag.29]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Oktober 2014 ==&lt;br /&gt;
=== Aktor für Wanddosen ohne Nulleiter  ===&lt;br /&gt;
Es gibt viele Aktoren die man in Einbaudosen hinter Schaltern einbauen kann. Oft scheitert deren Nutzung aber daran, dass in vielen Elektroinstalltionen in der Einbaudose eines (Licht)schalters kein Neutralleiter (Nulleiter) verlegt ist, den die meisten Aktoren zur eigenen Stromversorgung brauchen. Hier kann der [[RSL 2-Draht Einbauschalter]] helfen, der auch ohne Neutraleiter funktioniert und kompatibel zu InterTechno ist. Er lässt sich z.B. mit einem CUL(433) schalten. Problematisch ist damit allerdings das Schalten von LED Lampen.&lt;br /&gt;
&lt;br /&gt;
== August 2014 ==&lt;br /&gt;
=== Perl-Skripte Online testen  ===&lt;br /&gt;
Im Internet existieren Webseiten auf denen man Perl-Code online testen kann. Beispielsweise auf [http://www.tutorialspoint.com/execute_perl_online.php codingground] kann man Code zum Testen eingeben und die Auswirkungen betrachten. Dies eignet sich zur schnellen Fehleranalyse oder um Perl zu lernen. Natürlich lassen sich keine FHEM-Besonderheiten nutzen.&lt;br /&gt;
&lt;br /&gt;
== Juli 2014 ==&lt;br /&gt;
=== Funklast reduzieren===&lt;br /&gt;
Bewegungsmelder erzeugen in der Regel eine recht hohe Funklast, wenn sie oft ausgelöst werden, also z.B. Licht in einem Zimmer schalten sollen.&lt;br /&gt;
&lt;br /&gt;
Konstruktionen der Art:&lt;br /&gt;
:&amp;lt;code&amp;gt;define FlurLicht notify Bewegungsmelder_Flur:motion:.* set Licht_Flur on-for-timer 256&amp;lt;/code&amp;gt;&lt;br /&gt;
haben daher den Nachteil bei viel Bewegung im Flur und je nach Einstellung des Sendeabstandes des Bewegungsmelders mindestens alle 120 Sekunde oder öfter ein &lt;br /&gt;
:&amp;lt;code&amp;gt;on-for-timer 256&amp;lt;/code&amp;gt;&lt;br /&gt;
zu senden. Das erzeugt eine hohe Funklast, speziell wenn der Aktor ein SlowRF Gerät ist (z.B. FS20 Unterputzschalter).&lt;br /&gt;
In solchen Fällen kann es helfen, nur dann einen Befehl zu senden, wenn das Licht nicht schon an ist:&lt;br /&gt;
:&amp;lt;code&amp;gt;define FlurLicht notify Bewegungsmelder_Flur:motion:.* { if (Value(&amp;quot;Licht_Flur&amp;quot;) eq &amp;quot;off&amp;quot;) { fhem (&amp;quot;set Licht_Flur1 on-for-timer 256&amp;quot;) } }&amp;lt;/code&amp;gt;&lt;br /&gt;
Nachteilig ist aber, dass eine Auslösung innerhalb 256 Sekunden die Einschaltzeit nicht verlängert. Dies kann man umgehen, indem man nicht on-for-timer verwendet, sondern den Aktor selber verzögert auschaltet und bei weiteren Auslösungen nur die Verzögerung erneut anlegt:&lt;br /&gt;
:&amp;lt;code&amp;gt;define FlurLicht notify Bewegungsmelder_Flur:motion:.* { if (Value(&amp;quot;Licht_Flur1&amp;quot;) eq &amp;quot;off&amp;quot;) { fhem (&amp;quot;set Licht_Flur on ;; define FlurLicht_aus at +00:04:16 set Licht_Flur off&amp;quot;) } else { fhem (&amp;quot;delete FlurLicht_aus ;; define FlurLicht_aus at +00:04:16 set Licht_Flur off&amp;quot;) }}&amp;lt;/code&amp;gt;&lt;br /&gt;
Durch den relativ neuen Befehl &amp;quot;defmod&amp;quot; kann ausserdem das Löschen und neu Anlegen zusammengefasst werden, sieh Tipp Dezember 2015&lt;br /&gt;
&lt;br /&gt;
== Juni 2014 ==&lt;br /&gt;
=== Batteriestatus bei HomeMatic Devices aktivieren===&lt;br /&gt;
Zumindest einige (wenn nicht alle) batteriegespeisten HM-Geräte können Batteriemeldungen senden, tun dies in der normalen Konfiguration aber nicht.&lt;br /&gt;
Dazu muss das Register cyclicInfoMsg auf on gesetzt werden. &lt;br /&gt;
&lt;br /&gt;
Wie man das macht steht z.B. hier&lt;br /&gt;
[[HM-SEC-SC_Tür-Fensterkontakt#Batteriestatus_aktivieren]]&lt;br /&gt;
und hier&lt;br /&gt;
[[HomeMatic_Type_ThreeState]]&lt;br /&gt;
&lt;br /&gt;
== Mai 2014 ==&lt;br /&gt;
=== Dummywert mit aktueller Uhrzeit versehen in anderen Dummy kopieren===&lt;br /&gt;
Der Inhalt von Dummy1 soll erweitert um  Uhrzeit und Datum in Dummy2 kopiert werden (z.B. um die Urzeit der letzten Auslösung einer Alarmanlage anzuzeigen)&lt;br /&gt;
:&amp;lt;code&amp;gt;{ fhem(&amp;quot;set dummy2 &amp;quot; . (Value(&amp;quot;Dummy1&amp;quot;).&amp;quot; &amp;quot;.TimeNow()) )  } &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Zwei Dummywerte in einen anderen Dummy kopieren ===&lt;br /&gt;
Der String in Dummy1 soll um den String in Dummy2 erweitert und nach Dummy3 kopiert werden:&lt;br /&gt;
:&amp;lt;code&amp;gt;{ fhem(&amp;quot;set Dummy3 &amp;quot;.(Value(&amp;quot;Dummy1&amp;quot;)+Value(&amp;quot;Dummy2&amp;quot;))) } &amp;lt;/code&amp;gt;&lt;br /&gt;
(Achtung: &amp;quot;+&amp;quot;  ist Zahlen addieren, &amp;quot;.&amp;quot; ist String konkatenieren / verketten)&lt;br /&gt;
&lt;br /&gt;
== April 2014==&lt;br /&gt;
=== Code sparen ===&lt;br /&gt;
Wer Definitionen wie die aus dem März zum [[Trick der Woche#Zuverlässigkeit von FS20 Schaltungen erhöhen|Abfangen von Fehlbedienungen]] verwendet, kann durch eine ELSE Erweiterung auch gleich das Auschalten erledigen.&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_TV_on notify TV { if (&amp;quot;$EVENT&amp;quot; eq &amp;quot;on&amp;quot; || &amp;quot;$EVENT&amp;quot; eq &amp;quot;dimup&amp;quot;) { fhem(&amp;quot;set TV on&amp;quot;) } else { fhem(&amp;quot;set TV off&amp;quot;) } }&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hierdurch schaltet ON oder versehentlich zu langes Drücken (also DIMUP) den Fernseher ein, jeder &#039;&#039;andere&#039;&#039; Tastendruck (also insbesondere die OFF Taste oder zu langes Drücken der OFF Taste -&amp;gt; DIMDOWN) den Fernseher aus.&lt;br /&gt;
&lt;br /&gt;
Voraussetzung ist, dass die Fernbedienung standardkonfiguriert ist, siehe auch nächster Tip.&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration eines FS20 Senders prüfen ===&lt;br /&gt;
Gelegentlich reagieren bestimmte notifys nicht, die von Sendern (Fernbedienungen, Sensoren oder Schaltern) ausgelöst werden sollen. Speziell bei FS20 aber auch bei HomeMatic kann das daran liegen, dass der Sender nicht sendet was man denkt. So gut wie alle FS20 Sender kennen nämlich nicht nur ON und OFF, sondern über ein Dutzend Schaltzustände. Dimmen ist einem noch hinreichend bewusst, es gibt aber auch exotische Dinge wie  Ein-für-Zeitdauer, Ein-auf-alte-Helligkeit, Aus-für-Zeitdauer (nur FS20), Ein-für-Zeitdauer-dannach-alter-Zustand und vieles mehr.&lt;br /&gt;
&lt;br /&gt;
Was also ein Infrarot-Bewegungsmelder bei Auslösung sendet und auch was eine Fernbedienungstaste sendet ist einstellbar. Wenn jetzt zum Beispiel an einer Fernbedienung auf Tastendruck nicht ON sondern Ein-für-Zeitdauer (ON-FOR-TIMER) gesendet wird, wird&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_TV_on notify TVFB:on set TV on&amp;lt;/code&amp;gt;&lt;br /&gt;
seltsamerweise nicht auslösen, obwohl die richtige Taste (und diese auch nicht zu lang) gedrückt wurde.&lt;br /&gt;
&lt;br /&gt;
Auch wenn man sich sicher ist, das Richtige in die Fernbedienung/Sensoren einprogramiert zu haben, ist ein einfacher Test immer, dies mit&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_TV notify TVFB set TV on&amp;lt;/code&amp;gt;&lt;br /&gt;
zu prüfen. Dieses notify löst immer aus, wenn &amp;quot;TVFB&amp;quot;  &#039;&#039;irgendetwas&#039;&#039; sendet, egal was. (Beachte: Man kann dann den Fernseher aber nicht mehr ausschalten, da auch die Austaste das notify auslöst und zum TV-Aktor nur &amp;quot;on&amp;quot; sendet). &lt;br /&gt;
&lt;br /&gt;
Geht die Schaltung jetzt (kann man den Fernseher also jetzt EINschalten), liegt der Verdacht nahe, dass die Konfiguration des Senders / Sensors anders ist, als man denkt. Das Logfile, der EventMonitor oder ein Beobachtung von FHEM per Telnet mittels &amp;quot;inform&amp;quot; gibt Aufschluss, welcher Befehl tatsächlich empfangen wurde.&lt;br /&gt;
&lt;br /&gt;
== März 2014==&lt;br /&gt;
=== Zuverlässigkeit von FS20 Schaltungen erhöhen ===&lt;br /&gt;
FS20 Fernbedienungen senden bei Tastendrücken von mehr als 0,4 Sekunden anstatt ON bzw. OFF DIMUP bzw DIMDOWN.(Auch einige FBs anderer Systeme verhalten sich ähnlich)&lt;br /&gt;
&lt;br /&gt;
Das führt gelegentlich zu allgemein schlechter Bedienbarkeit (und schlechtem WAF), da 0,4 Sekunden relativ kurz ist und gerne aus versehen länger gedrückt wird. Das ist vor allem problematisch, wenn etwas geschaltet werden soll, was keinen Dimmer hat oder Dimmen nicht unterstützt.&lt;br /&gt;
&lt;br /&gt;
Eine Konfiguration wie &lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_TV_on notify TVFB:on set TV on&amp;lt;/code&amp;gt;&lt;br /&gt;
hat also dann den Nachteil, dass bei versehentlich zu langem Tastendruck auf die Fernbedienung das TV nicht angeht. Da die meisten Nutzer unbewusst dazu neigen, bei Misserfolg die selbe Taste erneut aber länger zu drücken (was erneut keinen Erfolg zeigt) ist Frustration zu erwarten.&lt;br /&gt;
&lt;br /&gt;
Es kann daher speziell bei nicht dimmbaren Aktoren von Vorteil sein, auch dimmen abzufangen, z.B. durch eine zweite zusätzliche Definition:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_TV_dimup notify TVFB:dimup set TV on&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es ist in der Regel einfacher, einige dieser zusätzlichen Definitionen einzufügen, als allen Bedienern des Systems zu erklären, dass man keinesfalls länger als 0,4 Sekunden drücken darf.&lt;br /&gt;
&lt;br /&gt;
Alternativ kann man auch beide Befehle in einer Definition durch Perlbefehle {} abfangen:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_TV_on notify TVFB { if (&amp;quot;$EVENT&amp;quot; eq &amp;quot;on&amp;quot; || &amp;quot;$EVENT&amp;quot; eq &amp;quot;dimup&amp;quot;) { fhem(&amp;quot;set TV on&amp;quot;) }}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Allerdings hat dies den Nachteil, dass jedes Event dieses define durchläuft und erst später geprüft wird, ob das Event überhaupt irgendetwas auslöst. &lt;br /&gt;
Z.B. wird&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_TV_on notify TVFB ...&amp;lt;/code&amp;gt; &lt;br /&gt;
auch durch TVFB off ausgelöst (oder unter bestimmten Bedungen sogar duch alle Events), nur um dann nach dem Perl Test festzustellen, dass doch nichts getan werden soll.&lt;br /&gt;
&lt;br /&gt;
Ressourcenschonender ist daher:&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_TV_on notify TVFB:on|TVFB:dimup set TV on &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Andere Möglichkeiten vergleiche: [[Trick der Woche#notify durch mehrere Ereignisse auslösen lassen|Notify durch mehrere Ereignisse auslösen lassen]] und [[Trick der Woche#Performance_von_Notifys|Performance von Notifys]]&lt;br /&gt;
&lt;br /&gt;
== Februar 2014==&lt;br /&gt;
=== Sequence nutzen ===&lt;br /&gt;
Man kann Aktionen statt mit einem Tastedruck auch mit einer Sequenz von Tastendücken auslösen. Das Format des Befehle ist:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define &amp;lt;name&amp;gt; sequence &amp;lt;re1&amp;gt; &amp;lt;timeout1&amp;gt; &amp;lt;re2&amp;gt; [&amp;lt;timeout2&amp;gt; &amp;lt;re3&amp;gt; ...] &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
wobei &amp;lt;re1&amp;gt; ...&amp;lt;re_n&amp;gt; die Aktionen sind und &amp;lt;timeout_n&amp;gt; der maximale Abstand der Tastendrücke in Sekunden.&lt;br /&gt;
&lt;br /&gt;
Angenommen, man wolle z.B. eine Lampe dann anschalten, wenn man zuerst Taste1 EIN, dann Taste2 AUS und dann wieder Taste1 EIN einer Fernbedienung drückt, könnte das konkret so aussehen:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define MeineLampenSequenz1 sequence Btn1:on 0.5 Btn2:off 0.5 Btn1:on&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zwischen jedem der Tastendrücke darf eine halbe Sekunde Abstand sein. Diese Definition selbst löst die Lampe nicht aus, sondern definiert nur wie die Sequenz aussehen soll. Um die Lampe bei erfolgreicher Betätigung der Sequenz auch einzuschalten, bedarf es zusätzlich etwas wie:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define MeineLampe notify MeineLampenSequenz1:trigger set Lampe on&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sequence kann man gut nutzen, um mit einer Fernbedienung mehr Funktionen zu schalten als Tasten zur Verfügung stehen. Ebenso könnte man damit simple Codeschlösser für Alarmanlagen bauen, z.B. um eine Anlage auszuschalten, wenn eine bestimmte Abfolge von Tasten gedrückt wird.&lt;br /&gt;
&lt;br /&gt;
Je nach Funksystem nimmt die Zuverlässigkeit aber rasch ab. Angenommen im Bereich FS20 (das System ist etwas unzuverlässiger ist als z.B. HomeMatic) seien 95% aller Funktsignale ungestört übertragbar, dann würden in der Praxis von 100 Tastendrücken an einer Fernbedienung 95x Erfolg zeigen und 5x fehlschlagen; das ist sicher tolerabel. &lt;br /&gt;
&lt;br /&gt;
Bei einer Sequenzlänge von nur 4 Tasten würde die kombinierte Erfolgsquote der Sequenz jedoch nur noch ca. 80% sein, zum Ausschalten einer Alarmanlage vermutlich bereits unpraktisch.&lt;br /&gt;
&lt;br /&gt;
== Januar 2014==&lt;br /&gt;
===isday===&lt;br /&gt;
Bekanntlich kann man  mit &amp;quot;isday&amp;quot; leicht testen ob es draussen hell ist oder nicht. isday ist eine Funktion des (automatisch geladenen) Moduls [[SUNRISE_EL]], das auch sunset und sunrise enthält.&lt;br /&gt;
&lt;br /&gt;
Problematisch bei isday ist die fehlende Möglichkeit, Sonnenaufgang und Untergang einzustellen (zumindest wenn man nicht 99_SUNRISE_EL.pm verändern will): isday ist wahr, wenn die Sonne im gegebenen Breitengrad theoretisch sichtbar ist. Wenn örtliche Gegebenheiten (Bebauung, Bäume, Tal etc.) eine Anpassung erfordern, kann man sich auch ein eigenes isday basteln, in dem man sunrise und sunset verwendet und dieses mit getrennten offsets versieht.&lt;br /&gt;
&lt;br /&gt;
Zuerst definiert man sich eine Variable (&amp;quot;dummy&amp;quot;) der anstelle isday eingesetzt werden soll, z.B.:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define Tageslicht dummy &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann wird diese mit sunset und sunrise befüllt:&lt;br /&gt;
&lt;br /&gt;
 define SetDummy1 at *{sunset(-3600)} set Tageslicht hell &lt;br /&gt;
 define SetDummy2 at *{sunrise(+1800)} set Tageslicht dunkel &lt;br /&gt;
&lt;br /&gt;
Jetzt kann für jeden Wechsel ein eigener Offset gewählt werden, im Beispiel 3600 Sekunden vor Sonnenuntergang und 1800 Sekunden nach Sonnenaufgang. Anstatt das Dummy &amp;quot;Tageslicht&amp;quot; mit den Werten &amp;quot;hell/dunkel&amp;quot; zu befüllen, kann natürlich auch 1/0 oder &amp;quot;Tag/Nacht&amp;quot; etc. verwendet werden, je nachdem was bei der Anwendung besser passt.&lt;br /&gt;
&lt;br /&gt;
Für höhere Ansprüche könnte hingegen das [[Twilight]]-Modul verwendet werden, das Dämmerungsstufen kennt.&lt;br /&gt;
&lt;br /&gt;
===Struktur von &amp;quot;else if&amp;quot; Verzweigungen===&lt;br /&gt;
 define ... notify ... {\&lt;br /&gt;
  if ... {\&lt;br /&gt;
   fhem (&amp;quot;... ;; ...&amp;quot;)\&lt;br /&gt;
  }\&lt;br /&gt;
  elsif ... {\&lt;br /&gt;
    fhem (&amp;quot;... ;; ...&amp;quot;)\&lt;br /&gt;
  }\&lt;br /&gt;
  elsif ... {\&lt;br /&gt;
    fhem (&amp;quot;... ;; ...&amp;quot;)\&lt;br /&gt;
  }\&lt;br /&gt;
  else {\&lt;br /&gt;
   if ... {\&lt;br /&gt;
    fhem (&amp;quot;... ;; ...&amp;quot;)\&lt;br /&gt;
  }\&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Achtung: es muss tatsächlich &amp;quot;elsif&amp;quot; heissen und nicht &amp;quot;elseif&amp;quot; oder &amp;quot;else if&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Gilt für Perl Aufrufe. &lt;br /&gt;
Wer aktuell in FHEM neu einsteigt, kann auch den seit 2014 zur Verfügung stehenden FHEM Befehl [[DOIF]] verwenden, der komfortabler ist und zusätzliche Features aufweist.&lt;br /&gt;
&lt;br /&gt;
== Dezember 2013==&lt;br /&gt;
===notify durch mehrere Ereignisse auslösen lassen===&lt;br /&gt;
Bekanntermassen löst&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter …&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
aus, wenn irgendein Ereignis vom Sender &amp;quot;MeinSchalter&amp;quot; eintrifft.&lt;br /&gt;
&lt;br /&gt;
Mit&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:on …&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
wird das notify jedoch nur ausgelöst, wenn dieses Ereignis eine &amp;quot;on&amp;quot; ist.&lt;br /&gt;
Wenn man aber möchte, das z.B. &amp;quot;on&amp;quot; und &amp;quot;off&amp;quot; auslöst (um etwa Dim-Befehle auszuschliessen) kann dies wie folgt erreicht werden:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:(on|off) …&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Klammern sind wichtig, vergleiche eine Lösung, bei der zwei Sender alternativ das notify auslösen können:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:on|MeinAndererSchalter:on …&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Selbstverständlich geht z.B. auch folgendes:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:on|MeinAndererSchalter …&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier wird ausgelöst wenn &amp;quot;MeinSchalter&amp;quot; das Ereignis &amp;quot;on&amp;quot; liefert oder &amp;quot;MeinAndererSchalter&amp;quot; irgendein Ereignis. Beachte hierzu jedoch den Tipp vom Dezember 2020 &amp;quot;Performance von Notifys&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Aktoren über mehrere Funkschnittstellen ansprechen ===&lt;br /&gt;
Falls man mehrere Funkschnittstellen zur Reichweitenverlängerung hat (CUL / CUNO etc), und ein Aktor von beiden Funkschnittstellen in etwa gleich (schlecht) erreichbar ist, mag der Wunsch aufkommen, einen Funkbefehl über beide Schnittstellen auszusenden. Dies ist bei Funkprotokollen möglich, die kein echtes Pairing der Aktoren an die Funkschnittstelle erfordern, also z.B. FS20 oder Intertechno, nicht jedoch ohne weiteres bei HomeMatic.&lt;br /&gt;
&lt;br /&gt;
Problematisch ist aber, dass die Funkschnittstelle über IODev eindeutige je Aktor festgelegt werden muss, eine Zuordnung mehrerer IODevs ist nicht vorgesehen.&lt;br /&gt;
(wenn man IODev nicht setzt, wird per default die LETZTE definiert passende Schnittstelle verwendet)&lt;br /&gt;
&lt;br /&gt;
Dieses Problem kann mit einem Trick aber umgangen werden. Und zwar legt man den Aktor 2x mit gleicher Adresse aber abweichenden Namen und IOdevs an, z.B. so:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 define brenner_CUL1 FS20 11114244 11&lt;br /&gt;
 attr brenner_CUL1 IODev CUL1&lt;br /&gt;
 attr brenner_CUL2 room Keller&lt;br /&gt;
&lt;br /&gt;
 define brenner_CUL2 FS20 11114244 11&lt;br /&gt;
 attr brenner_CUL2 IODev CUL2&lt;br /&gt;
 attr brenner_CUL2 room Keller&lt;br /&gt;
&lt;br /&gt;
Ein Befehl der Art:&lt;br /&gt;
&lt;br /&gt;
 set brenner_CUL1,brenner_CUL2 on&lt;br /&gt;
&lt;br /&gt;
sendet den ON Befehl für den FS20 Aktor 11114244 11  jetzt tatsächlich über beide CULs aus!&lt;br /&gt;
&lt;br /&gt;
Achtung: Wenn die Schnittstellen gleichschnell angebunden sind, sollte vermutlich der [[Sendpool]] verwendet werden, da die Aussendungen sonst tatsächlich gleichzeitig erfolgen könnten und sich dann gegenseitig stören würden. Dieser Trick funktioniert ausserdem nur bei Befehlen, bei denen es im Zweifel egal ist, wenn sie beim Aktor 2x eintreffen. &lt;br /&gt;
&lt;br /&gt;
Bei HomeMatic lässt sich ein ähnlicher Effekt durch einrichten einer [[Virtueller Controller VCCU|virtuellen CCU]] erreichen.&lt;br /&gt;
&lt;br /&gt;
=== Retrycount bei FHTs ist überflüssig===&lt;br /&gt;
Das von der Funktion &#039;&#039;autocreate&#039;&#039; älterer FHEM Versionen beim Anlegen von FHT80 Heizungsreglern voreingetragene attribute &amp;quot;retrycount&amp;quot; hat in den allermeisten Fällen keine Wirkung, da es NUR greift, wenn man als Funkschnittstelle eine FHZ1X00PC verwendet und dann den Softbuffer einschaltet. Selbst wenn man diese Konfiguration nutzt, will gut überlegt werden, ob die Wirkung postiv ist: Bei ungenügender Empfangslage vergrössert es Kommunikationsprobleme eventuell sogar.&lt;br /&gt;
&lt;br /&gt;
Es kann also in der Regel entfernt oder auf den Wert &amp;quot;1&amp;quot; gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
 define Heizung_Bad FHT 060d&lt;br /&gt;
 attr Heizung_Bad retrycount 3       &amp;lt;=== Diese Zeile entfernen&lt;br /&gt;
&lt;br /&gt;
Siehe auch:[[Kommunikationsprobleme mit FHT]]&lt;br /&gt;
&lt;br /&gt;
== November 2013 ==&lt;br /&gt;
=== FS20 Funksteckdose sicherer schalten===&lt;br /&gt;
Seltsamerweise kommt es vor, das FS20 Aktoren - insbesondere die FS20 Funksteckdose - an der Grenze der Funkreichweite bestimmte Befehle eines Typs empfängt, andere aber nicht. Z.B. lässt sich die FS20 Steckdose zwar immer einschalten, aber oft nicht mehr aus (oder umgekehrt).&lt;br /&gt;
&lt;br /&gt;
Gelegentlich kann man die Zuverlässigkeit erhöhen, indem man statt dem nicht funktionierenden Befehl das Gegenteil mit &amp;quot;for-timer 1&amp;quot; verwendet.&lt;br /&gt;
&lt;br /&gt;
Im Fall, dass eine FS20 Steckdose sich also einwandfrei EINschalten lässt:&lt;br /&gt;
:&amp;lt;code&amp;gt;set SteckdoseA on&amp;lt;/code&amp;gt;&lt;br /&gt;
aber oft ein AUSschalten mittels&lt;br /&gt;
:&amp;lt;code&amp;gt;set SteckdoseA off&amp;lt;/code&amp;gt;&lt;br /&gt;
nicht funktioniert, kann man versuchen die Dose anstelle mit &amp;quot;off&amp;quot; mit dem Befehl&lt;br /&gt;
:&amp;lt;code&amp;gt;set SteckdoseA on-for-timer 1&amp;lt;/code&amp;gt;&lt;br /&gt;
auszuschalten.&lt;br /&gt;
&lt;br /&gt;
Analog kann man mit off-for-timer arbeiten, wenn sich Aktoren nicht einschalten lassen, ausschalten aber geht.&lt;br /&gt;
&lt;br /&gt;
Achtung: Dieser Trick funtioniert ausdrücklich nur, wenn der &amp;quot;on/off-for-timer&amp;quot; Befehl im Aktor selber abgebildet wird. Daher ist der Trick vermutlich nicht auf andere Funksysteme übertragbar. z.B. unterstützt HM nur on-for-timer und Intertechno kennt keinen Timer.&lt;br /&gt;
&lt;br /&gt;
=== Mehrere Geräte zugleich schalten===&lt;br /&gt;
Ein Ereignis soll mehrere Geräte schalten:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_Bewegungsmelder notify Bewegungsmelder set Lampe1 on;;set Lampe2 on;;set FunksteckdoseA on&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aus Übersichtlichkeitsgründen können vor und nach den Semikolons auch Leerzeichen eingefügt werden (obwohl in einigen Dokumentation behauptet wird, dies dürfe man nicht machen):&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_Bewegungsmelder notify Bewegungsmelder set Lampe1 on ;; set Lampe2 on ;; set FunksteckdoseA on&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn der Schaltbefehl bei allen Geräten gleich ist, kann man wie folgt zusammenfassen:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_Bewegungsmelder notify Bewegungsmelder set Lampe1,Lampe2,FunksteckdoseA on&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Komma wird nicht [[Escapen in Perlbefehlen|escaped]] (verdoppelt), hier darf tatsächlich KEIN Leerzeichen vor oder nach dem Komma eingefügt werden.&lt;br /&gt;
&lt;br /&gt;
=== Logfileinträge unterdrücken===&lt;br /&gt;
Das Attribute &amp;quot;verbose 0&amp;quot; verhindert, dass das Gerät Logfileinträge erzeugt.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 define Funksteckdose FS20 22224222 01&lt;br /&gt;
 attr Funksteckdose verbose 0&lt;br /&gt;
&lt;br /&gt;
===FHT Lazy Mode benutzen===&lt;br /&gt;
Es gibt wenig Gründe, den FHT &amp;quot;Lazy Mode&amp;quot; nicht zu verwenden&lt;br /&gt;
 define Heizung_Bad FHT 060d&lt;br /&gt;
 attr Heizung_Bad lazy&lt;br /&gt;
&lt;br /&gt;
Dieser sorgt dafür, dass Temperaturänderungen (genau genommen alle Änderungen, auch z.B. date) nur übertragen werden, wenn sie nicht sowieso schon am FHT eingestellt sind und veringern die Funklast dadurch deutlich. &lt;br /&gt;
&lt;br /&gt;
Siehe auch: [[Kommunikationsprobleme mit FHT]]&lt;br /&gt;
&lt;br /&gt;
== Oktober 2013 ==&lt;br /&gt;
=== Zuverlässigkeit von Wiedereinschalten erhöhen ===&lt;br /&gt;
Speziell bei FS20 Aktoren ist wegen des fehlenden Rückkanals nicht leicht erkennbar, ob ein Einschaltbefehl Wirkung gezeigt hat. Das bringt einen ganz schlechten WAF, wenn man z.B. mit einem FS20 Aktor eine Heizung ausschaltet und das Wiedereinschalten nach z.B. einer Stunde nicht klappt.&lt;br /&gt;
&lt;br /&gt;
Hier empfiehlt es sich, das Ausschalten mittels &lt;br /&gt;
:&amp;lt;code&amp;gt;set Heizungs_schalter off-for-timer 3584&amp;lt;/code&amp;gt;   (= fast eine Stunde)&lt;br /&gt;
zu erledigen. Da bei FS20 der off-for-timer Befehl im Aktor abgewickelt wird (und nicht durch FHEM), schaltet sich der Aktor auch dann garantiert wieder ein, wenn FHEM abstürzt, eine Funkstörung vorliegt oder ähnliches.  Bei Bedarf kann der Befehl off-for-timer zur  Verlängerung der Ausschaltzeit wiederholt werden. Dies kann z.B. nötig sein, wenn die Ausschaltung länger als 4,5 Stunden (15360 Sekunden, der Maximalwert des Timers) dauern soll.&lt;br /&gt;
&lt;br /&gt;
Achtung: dieser Trick funktioniert nur, wenn der Aktor &amp;quot;off-for-timer&amp;quot; selbst beherrscht. FS20 Geräte können das, HomeMatic können aber nur &amp;quot;on-for-timer&amp;quot;. Man kann off-for-timer mit HomeMatic trotzdem verwenden, aber in diesem Fall sendet FHEM den Einschaltbefehl nach der Timerzeit. InterTechno, RSL etc, können gar keinen Timer, hier sendet FHEM immer 2 Befehle im passenden Abstand.&lt;br /&gt;
&lt;br /&gt;
=== FS20 Timerzeiten ===&lt;br /&gt;
FS20 Timer werden in Sekunden angegeben. Es sind jedoch nicht alle Werte einstellbar. Da der Timer Wert in 7 Bit übertragen werden muss, sind nur 128 Werte möglich. Um mit diesen Werten im unteren Bereich möglichst fein aufzulösen, andererseits aber auch lange Zeiten zu ermöglichen, ist die Verteilung nicht linear. Einstellbar sind folgende Zeiten in Sekunden;&lt;br /&gt;
&lt;br /&gt;
0,25  0,5  0,75  1  1,25  1,5  1,75  2  2,25  2,5  2,75  3  3,25  3,5  3,75   &lt;br /&gt;
4  4,5  5  5,5  6  6,5  7  7,5  8  9  10  11  12  13  14  15  16  18  20  22   &lt;br /&gt;
24  26  28  30  32  36  40  44  48  52  56  60  64  72  80  88  96  104  112   &lt;br /&gt;
120  128  144  160  176  192  208  224  240  256  288  320  352  384  416   &lt;br /&gt;
448  480  512  576  640  704  768  832  896  960  1024  1152  1280  1408   &lt;br /&gt;
1536  1664  1792  1920  2048  2304  2560  2816  3072  3328  3584  3840  4096   &lt;br /&gt;
4608  5120  5632  6144  6656  7168  7680  8192  9216  10240  11264  12288   &lt;br /&gt;
13312  14336  15360 &lt;br /&gt;
(etwas übersichtlicher formatiert auch [[FS20 Allgemein#ON/OFF Befehle mit Time Parameter|hier]]).&lt;br /&gt;
 &lt;br /&gt;
Andere Zeiten werden von FHEM gerundet. Ein neues Setzen des Timer für FS20 löscht den alten Wert.&lt;br /&gt;
&lt;br /&gt;
Auch HomeMatic Aktoren beherrschen Time Parameter, im Gegensatz zu FS20 allerdings kein &amp;quot;off-for-timer&amp;quot;. Details dazu im Artikel [[HomeMatic Timerwerte]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Soulman</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Trick_der_Woche&amp;diff=37520</id>
		<title>Trick der Woche</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Trick_der_Woche&amp;diff=37520"/>
		<updated>2022-08-09T22:17:32Z</updated>

		<summary type="html">&lt;p&gt;Soulman: /* Oktober 2014 */ typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diese Seite enthält Tipps und Tricks, die zu unbedeutend sind, einen eigenen Artikel zu rechtfertigen, alternative Schreibweisen/Lösungen für eine Problem darstellen, Ungenauigkeiten oder unklare Formulierungen in den offiziellen Dokumenten ergänzen und ähnliches. Jeder Eintrag ist typischerweise sehr kurz (wenige Zeilen lang) und beleuchtet vielleicht nur einen Aspekt von FHEM, er kann allgemeiner Natur sein, oder sich auf ein spezielles Gerät oder einen speziellen Anwendungsfall beziehen.&lt;br /&gt;
&lt;br /&gt;
== August 2022==&lt;br /&gt;
=== Update ===&lt;br /&gt;
Wenn der Befehl &amp;quot;Update&amp;quot; nicht funktioniert und insbesondere die Fehlermeldung &#039;&#039;Bad hostname &#039;fhem.de:80&#039;&#039;&#039; zurück gibt, kann es sinnvoll sein, den Parameter  -noSSL zu versuchen. Details dazu im Artikel [[Update]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Januar 2022==&lt;br /&gt;
=== günstiger Luftfeuchtesensor ===&lt;br /&gt;
Der [[HM-CC-TC Funk-Wandthermostat]] ist schon lange abgekündigt. Er wird derzeit oft recht günstig im Netz angeboten und eignet sich daher als billiger &amp;quot;StandAlone&amp;quot; Temperatur- und Luftfeuchtesensor, auch wenn er keinen Ventielantrieb steuern soll.&lt;br /&gt;
&lt;br /&gt;
== Dezember 2020 ==&lt;br /&gt;
=== Performance von Notifys ===&lt;br /&gt;
Im Tipp vom Dezember 2013 [[Trick der Woche#notify durch mehrere Ereignisse auslösen lassen|notify durch mehrere Ereignisse auslösen lassen]] heisst es:&lt;br /&gt;
:&#039;&#039;[…] Wenn man aber möchte, dass z.B. &amp;quot;on&amp;quot; und &amp;quot;off&amp;quot; auslöst (um etwa Dim-Befehle auszuschliessen), kann dies wie folgt erreicht werden:&#039;&#039;&lt;br /&gt;
::&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:(on|off) …&amp;lt;/code&amp;gt;&lt;br /&gt;
Performanter ist allerdings:&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:o[nf]+  …&amp;lt;/code&amp;gt;&lt;br /&gt;
wobei &#039;&#039;&#039;o[nf]+&#039;&#039;&#039; eine &amp;quot;Regexp&amp;quot; für beliebige Zeichenketten ist, die mit &#039;&#039;&#039;o&#039;&#039;&#039; anfangen und &#039;&#039;&#039;n&#039;&#039;&#039; und/oder &#039;&#039;&#039;f&#039;&#039;&#039; enthalten, also (auch) on und off.&lt;br /&gt;
&lt;br /&gt;
Alternativ kann auch:&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:on|MeinSchalter:off … &amp;lt;/code&amp;gt;&lt;br /&gt;
verwendet werden.&lt;br /&gt;
Die letzten beiden Varianten sparen Ausführungszeit. Ganz allgemein ist es besser, im notify das Suchmuster mit einem [[Regulärer Ausdruck|regulären Ausdruck]] (Regexp) eng zu definieren.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:on ... &amp;lt;/code&amp;gt;&lt;br /&gt;
ist performanter als&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter { if ($EVENT eq &amp;quot;on&amp;quot; ... &amp;lt;/code&amp;gt;&lt;br /&gt;
auch wenn das Ergebnis gleich ist.&lt;br /&gt;
&lt;br /&gt;
Allerdings ist &lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:on ... &amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas1 notify MeinSchalter:off ... &amp;lt;/code&amp;gt;&lt;br /&gt;
langsamer als&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchaltero[nf]+ { if ($EVENT eq &amp;quot;on&amp;quot;  ) { fhem( ) } else { fhem(&amp;quot;... &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Oktober 2020 ==&lt;br /&gt;
=== Entprellen ===&lt;br /&gt;
Will man ein notify innerhalb eines bestimmten Zeitraumes nur einmal auslösen lassen, auch wenn er in diesem Zeitraum mehrfach getriggered werden sollte, so bietet sich das [[Attribut]] &#039;&#039;&#039;disabledAfterTrigger&#039;&#039;&#039; an:&lt;br /&gt;
:&amp;lt;code&amp;gt;attr &amp;lt;notify_device&amp;gt; disabledAfterTrigger &amp;lt;Anzahl Sekunden&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Oktober 2019 ==&lt;br /&gt;
=== Funkstörungen durch leere Batterien ===&lt;br /&gt;
Unerklärliche Funkstörungen besonders im SlowRF Bereich (z.b. FS20) mit stark verminderter Reichweite von CULs, gestörter [[RFR CUL]] Kommunikation etc. gestörtem Empfang von Funktelegrammen aller Art können ihre Ursache darin haben, dass einige Geräte mit (fast) leeren Batterien unkontrolliert senden und dadurch den Kanal mit Störsignalen verschmutzen. Anfällig sind insbesondere ältere FHT Fenstersensoren wie der [[FHT80TF]], die mit fast leeren Batterien eine Art Rauschen aussenden und damit die &#039;&#039;&#039;komplette&#039;&#039;&#039; FS20 Kommunikation lahmlegen können, Störungen beeinflussen auch andere Funkprotokolle im selben Frequenzbereich, wie z.b. HM.&lt;br /&gt;
Also im Falle unerklärlicher und weitreicher Funkstörungen die Batterien aller Geräte überprüfen.&lt;br /&gt;
&lt;br /&gt;
== Februar 2019 ==&lt;br /&gt;
=== Unterräume anlegen ===&lt;br /&gt;
[[Datei:Unterraeume.png|350px|thumb|right|Beispiel für einen gegliederten Raum &amp;quot;Steuerung&amp;quot;]]&lt;br /&gt;
In [[FHEMWEB]] besteht neben der Möglichkeit, Geräte dadurch übersichtlich anzuordnen, indem diese Gruppen und einfachen Räumen zugeordnet werden, auch die Möglichkeit, Räume weiter zu gliedern und Unterräume zu verwenden. Dazu wird nach der Angabe des Hauptraums der Unterraum, getrennt durch ein &amp;quot;-&amp;gt;&amp;quot; angegeben. Beispiele:&lt;br /&gt;
 attr &amp;lt;DEVICENAME&amp;gt; room Steuerung-&amp;gt;Logik&lt;br /&gt;
 attr &amp;lt;DEVICENAME&amp;gt; room Steuerung-&amp;gt;Heizung&lt;br /&gt;
&#039;&#039;&#039;Hinweis&#039;&#039;&#039;: Legt man zusätzlich einen Raum &#039;&#039;Steuerung&#039;&#039; an, erscheint dieser als zusätzlicher Eintrag in der Raumliste.&lt;br /&gt;
&lt;br /&gt;
== Januar 2019 ==&lt;br /&gt;
=== HomeMatic IP ===&lt;br /&gt;
Das [[HomeMatic IP]]-Protokoll unterscheidet sich deutlich vom bisherigen HomeMatic Protokoll, im Grunde ist es ein anderes System, das nur dem Namen nach dem älteren HomeMatic gleicht. HM-IP Geräte können aktuell (Anfang 2019) nur über eine systemeigene Zentrale CCU2 (als physisch vorhandenes Interface) und die HomeMatic-Module in FHEM integriert werden, sind in FHEM jedoch &#039;&#039;&#039;nicht&#039;&#039;&#039; unmittelbar als Homematic-Geräte ansprechbar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Dezember 2018 ==&lt;br /&gt;
===HomeMatic Heizungsregler Uhrzeit einstellen===&lt;br /&gt;
HomeMatic Thermostate / Heizungsregler  wie der HM-CC-TC der der HM-TC-IT-WM-W-EU etc. synchronisieren ihre Uhrzeit täglich etwa gegen Mitternacht mit der Zentrale. Man kann dieses Update aber jederzeit erzingen durch den Befehl  &lt;br /&gt;
 set &amp;lt;DEVICENAME&amp;gt; sysTime&lt;br /&gt;
&lt;br /&gt;
== November 2018 ==&lt;br /&gt;
===HomeMatic Heizunggeräte gebraucht gekauft===&lt;br /&gt;
HomeMatic Heizunggeräte gebraucht gekauft und jetzt lassen sie sich nicht richtig peeren oder pairen?&lt;br /&gt;
Das Problem ist meistens, dass die Geräte noch mit der Zentrale des Verkäufers gepairt oder mit anderen Geräten gepeert sind. &lt;br /&gt;
Mit Thermostaten wie der [[HM-CC-TC Funk-Wandthermostat]] oder der Nachfolger [[HM-TC-IT-WM-W-EU Funk-Wandthermostat AP]] können mit Ventilantrieben wie dem [[HM-CC-VD Funk-Stellantrieb]] nur gepeert werden, wenn &lt;br /&gt;
* die Thermostaten nicht selbst schon mit einer Zentrale (im FHEM Umfeld also z.b. einer [[Virtueller Controller VCCU]] oder [[HM-[[HM-CFG-LAN LAN Konfigurations-Adapter]] oder ähnliches) gepairt wurden&lt;br /&gt;
* die Ventilantriebe nicht selbst mit einer Zentrale gepairt oder mit einem Thermostaten gepeert wurden.&lt;br /&gt;
&lt;br /&gt;
Es ist daher sinnvoll zuerst alle Geräte zurückzusetzen, da viele Verkäufer dies vergessen. Wie das geht steht in der Anleitung.&lt;br /&gt;
Beispiele:&lt;br /&gt;
* HM-CC-TC -&amp;gt; MENU lange drücken, dann Sonderfunktion &amp;quot;RES&amp;quot; anwählen, mit OK-Taste bestätigen&lt;br /&gt;
* HM-CC-VD -&amp;gt; Anlernknopf 10 Sekunden lang drücken. Der Antrieb geht in Zustand A2, nachdem er das Ventil 1x auf- und zugefahren hat geht er in A3, Knopf nochmals drücken.&lt;br /&gt;
* HM-TC-IT-WM-W-EU -&amp;gt; Batterien entfernen, alle 3 Tasten gedrückt halten, Batterien einlegen, warten bis &amp;quot;rES&amp;quot; im Display erscheint, Tasten loslassen&lt;br /&gt;
&lt;br /&gt;
== Januar 2018 ==&lt;br /&gt;
=== at absolutem Datum ===&lt;br /&gt;
Vielen ist nicht klar, dass man mit dem &amp;quot;define … at&amp;quot; auch einfach ein absolutes Datum definieren kann (obwohl es in der Commandref steht). Anstatt umfangreicher DOIF Konstrukte oder &amp;quot;define … at&amp;quot; die täglich ablaufen und testen ob der gewünschte Tag schon erreicht ist, geht auch ein einfaches:&lt;br /&gt;
&lt;br /&gt;
 define Licht_Neujahr_2019 at 2019-01-03T06:01:01 set Licht1 on&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Allgemein: &lt;br /&gt;
 define &amp;lt;name&amp;gt; at [&amp;lt;datespec&amp;gt;] &amp;lt;command&amp;gt; &lt;br /&gt;
wobei &amp;lt;datespec&amp;gt; =  (YYYY-MM-DDTHH:MM:SS) (also in ISO8601 Schreibweise).&lt;br /&gt;
Wichtig ist die Angabe mit Sekunden, die nicht weggelassen werden können.&lt;br /&gt;
&lt;br /&gt;
== Dezember 2017 ==&lt;br /&gt;
=== perl Version ===&lt;br /&gt;
Gelegentlich taucht die Frage auf, welche perl Version zum Betrieb von FHEM minimal erforderlich ist. Bedauerlicherweise lässt sich das aber aktuell nicht definitiv bestimmen.&lt;br /&gt;
Rudolf König testet zur Zeit (Ende 2017) mit v5.16 (5 Jahre alt) und v5.24 (ca. 1 Jahr alt). &lt;br /&gt;
Sollte sich herausstellen, dass eines seiner Module (vor allem fhem.pl selbst) nicht mit der jeweils &#039;&#039;aktuellen&#039;&#039; perl Version funktioniert, so wird das Modul entsprechend kompatibel gemacht.&lt;br /&gt;
Andererseits verwendet Rudolf König nach eigener Aussage (bewusst) keine Features, die eine höhere Version als perl 5.8.3 (immerhin älter als 13 Jahre) voraussetzen. Tatsächlich zeigen aktuelle Installation auf relativ alten BuffaloLinkstation Systemen, dass FEHM mit perl 5.8.3 prinzipiell lauffähig ist.&lt;br /&gt;
&lt;br /&gt;
Rudolf König prüft als Maintainer von fhem.pl aber nicht, welche Mindestversionen andere Entwickler in Ihren Modulen benötigen. Es ist daher möglich oder sogar wahrscheinlich, das einzelne Module höhere Versionen als 5.8.3 benötigen.&lt;br /&gt;
&lt;br /&gt;
Es gibt aktuell keinen Weg, die Mindestanforderungen z.b. automatisiert zu ermitteln.&lt;br /&gt;
&lt;br /&gt;
== November 2017 ==&lt;br /&gt;
=== Grundlastmodul ===&lt;br /&gt;
Mit einem Grundlastmodul ist es möglich, LED Leuchtmittel an einem Schaltaktor / Dimmer zu betreiben. Dies ist bei manchen nicht möglich, da einige LEDs nachglimmen oder flackern. Das Grundlastmodul, welches parallel zum Verbraucher angeschlossen wird, kann diesen Effekt aufheben, da ein Verbraucher mit ohmscher Last simuliert wird.&lt;br /&gt;
Das Modul ermöglicht eventuell auch den Betrieb eines [[RSL 2-Draht Einbauschalter]]s, der bei LED Leuchtmitteln ansonsten nicht eingesetzt werden kann, da zum Betrieb eine Restspannung über den Verbraucher benötigt, der bei LED Lampen mit Vorschaltgerät nicht vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
In Frage kommt z.b. ein Eltako ELTA Grundlastelement GLE / PTC, das ca. 5-8 Euro kostet.&lt;br /&gt;
Technisch handelt sich dabei um einen PTC, also einen Widerstand mit positivem Temperaturkoeffizient, d.h. der Widerstand sinkt deutlich, wenn das Element kälter wird. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das genannte Grundlastelement hat folgende Daten: &lt;br /&gt;
 Kaltwiderstand: 3500 Ω&lt;br /&gt;
 Einschaltstrom bei 230 V: 65 mA (ca. 15 W)&lt;br /&gt;
 Verlustleistung nach 60 Sekunden: 0,65 W &lt;br /&gt;
&lt;br /&gt;
Im kalten Zustand lässt der PTC bei 230 Volt einen Strom von ca. 0,065 Ampere zu.  &lt;br /&gt;
Das reicht, um von Schaltaktoren, Freischaltern, Dimmern etc. als die erforderliche Grundlast erkannt zu werden.&lt;br /&gt;
Wird der Stromkreis eingeschaltet, fliesst auch tatsächlich ström durch den PTC, der sich dadurch schnell erwärmt (das Element wird tatsächlich sogar relativ heiss). Dadurch steigt steigt der Widerstand auf ca 50000-60000 Ohm an und die Verlustleistung sinkt auf unter 1 Watt. Der PTC regelt sich jetzt selber auf eine bestimmte Temperatur und Widerstand ein.&lt;br /&gt;
&lt;br /&gt;
Wird ausgeschaltet, so fliest über den PTC immer noch ein kleiner Reststrom von ca 0,005 Ampere, der als Grundlast reicht, um z.b. Spannungen abzubauen, die LEDs nachflackern lassen, dieser steigt mit Erkalten rasch an, dadurch werden auch Schalter wie die [[RSL 2-Draht Einbauschalter]] mit genug Strom versorgt.&lt;br /&gt;
&lt;br /&gt;
Theoretisch kann also auch ein PTC mit diesen Werten und einer Leistung von ca. 20 Watt selbst gebaut werden, der Preis der Einzelteile liegt bei unter 2 Euro. Das Eltako Element ist bereits mit Isolierung und Anschlussleitungen versehen, mit eigner Arbeitszeit ist der Preisvorteil beim Selberbau also gering.&lt;br /&gt;
&lt;br /&gt;
== Februar 2017 ==&lt;br /&gt;
=== at Zeiten ===&lt;br /&gt;
 at 03:00      -&amp;gt;  1x um 3 Uhr (wann immer das nächste mal 3 Uhr ist, ggf. erst morgen)&lt;br /&gt;
 at *03:00     -&amp;gt;  jeden Tag um 3 Uhr&lt;br /&gt;
 at +03:00     -&amp;gt;  in 3 Stunden&lt;br /&gt;
 at +*03:00    -&amp;gt;  in 3 Stunden und dann alle 3 Stunden erneut&lt;br /&gt;
 at +*{4}03:00 -&amp;gt;  in 3 Stunden und dann alle 3 Stunden erneut, aber nur 4x ausführen.&lt;br /&gt;
&lt;br /&gt;
== Oktober 2016 ==&lt;br /&gt;
=== Grundlagen der Heizungssteuerung ===&lt;br /&gt;
Der Artikel [[Grundlagen der Heizungssteuerung]] soll einen zentralen Einstiegspunkt und eine Übersicht der Möglichkeiten insb. für Neulinge in FHEM bieten.&lt;br /&gt;
&lt;br /&gt;
=== Batterieüberwachung für Geräte ohne Batteriestatus ===&lt;br /&gt;
Es gibt Möglichkeiten um auch bei Geräten ohne Batteriestatus-Reading eine schwache Batterie erkennen zu können: [[Batterie%C3%BCberwachung#Ger.C3.A4te_ohne_Batteriestatus|Geräte ohne Batteriestatus]].&lt;br /&gt;
&lt;br /&gt;
== Mai 2016 ==&lt;br /&gt;
=== DbLog reparieren ===&lt;br /&gt;
Sollte ein fhem mit DbLog Probleme machen, oder auf der SQL-Konsole Fehler werfen, so ist eine Reparatur der DB fällig. Das ist auf der Kommandozeile verhältnismäßig einfach möglich und wird im Kapitel [[DbLog#Datenbank reparieren]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
=== DbLog bearbeiten ===&lt;br /&gt;
Unerwünschte Einträge in den Loggings treten immer wieder mal auf. Wie man dies in einer Datenbank korrigiert, dazu gibt das Kapitel [[DbLog#Bearbeitung von Datenbank-Einträgen]] eine erste Einführung.&lt;br /&gt;
&lt;br /&gt;
=== Pollenflug ===&lt;br /&gt;
In dieser schönen Jahreszeit werden manche durch Heuschnupfen geplagt. Auf der Seite [[Pollenflug]] wird beschrieben, wie man eine Pollenvorhersage in fhem einbinden kann - hilft zwar nicht gegen das Niesen, ist aber trotzdem ganz informativ... ;-)&lt;br /&gt;
&lt;br /&gt;
== April 2016 ==&lt;br /&gt;
=== HomeMatic und VCCU ===&lt;br /&gt;
HomeMatic Nutzer sollten unbedingt eine [[Virtueller Controller VCCU|VCCU]] einrichten und nutzen.&lt;br /&gt;
Die Einrichtung ist unaufwändig und schafft jede Menge Vorteile, auch beim Einsetzen nur einer Schnittstelle wie z.B. einem [[HM-CFG-LAN LAN Konfigurations-Adapter]]. Auch die nachträglich Einrichtung ist problemlos, sofern vorher nur ein I/O Gerät (&amp;quot;Funkschnittstelle&amp;quot;) verwendet wurde.&lt;br /&gt;
&lt;br /&gt;
== Dezember 2015 ==&lt;br /&gt;
===defmod===&lt;br /&gt;
In vielen Fällen will man mit einer Aktion gleichzeitig eine andere Aktion bereits für später festlegen, z.b. nach Einschalten  einer Heizung durch einen Bewegungsmelder diese eine Stunde später wieder ausschalten.&lt;br /&gt;
&lt;br /&gt;
Dies kann z.B. durch ein Konstrukt dieser Art erledigt werden:&lt;br /&gt;
:&amp;lt;code&amp;gt;define Heizung_an notify Bewegung set HZG_WZ desired-temp 22 ;; define reset_Heizung at +01:00:00 set HZG_WZ desired-temp 16&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nachteilig ist, dass bei einer weiteren Auslösung des Bewegungsmelders die Heizzeit nicht verlängert wird, da eine Neudefinition von &#039;&#039;&#039;reset_Heizung&#039;&#039;&#039; mit der Fehlermeldung &#039;&#039;&#039;reset_Heizung already exists, delete it first&#039;&#039;&#039; quittiert wird. Die Lösung bisher war, das alte &#039;&#039;&#039;reset_Heizung&#039;&#039;&#039; zunächst zu löschen und dann erneut mit neuem Zeitstempel anzulegen:&lt;br /&gt;
:&amp;lt;code&amp;gt;define Heizung_an notify Bewegung set HZG_WZ desired-temp 22 ;; delete reset_Heizung ;; define reset_Heizung at +01:00:00 set HZG_WZ desired-temp 16&amp;lt;/code&amp;gt;&lt;br /&gt;
Aber auch dieses umständliche Konstrukt hat noch einen Nachteil: Es erzeugt bei einer ersten Auslösung eine Fehlermeldung, weil &#039;&#039;&#039;reset_Heizung&#039;&#039;&#039; noch nicht exisitert und daher nicht gelöscht werden kann.  Dies liesse sich abfangen, was die Konstruktion weiter verkomplizieren würde.&lt;br /&gt;
&lt;br /&gt;
Daher hat Rudolf König mit FHEM 5.6 den neuen Befehel &amp;quot;defmod&amp;quot; eingeführt, der ein noch nicht existieredendes define neu anlegt (wie &amp;quot;define&amp;quot;), eine bereits vorhandenes aber direkt ändert (wie &amp;quot;delete&amp;quot; und danach &amp;quot;define&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Dadurch lässt sich verkürzt schreiben:&lt;br /&gt;
:&amp;lt;code&amp;gt;define Heizung_an notify Bewegung set HZG_WZ desired-temp 22 ;; defmod reset_Heizung at +01:00:00 set HZG_WZ desired-temp 16&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== April 2015 ==&lt;br /&gt;
===FS20 Timer===&lt;br /&gt;
FS20 Aktoren beherrschen zwei verschiedene Timer-Methoden.&lt;br /&gt;
&lt;br /&gt;
Angenommen ein FS20 Device heisse &amp;quot;Lampe&amp;quot; und sei z.B. ein [[FS20_SU_Unterputz-Funk-Schalter|FS20 SU]] (Unterputzschalter), dann kann man mit FHEM sowohl &lt;br /&gt;
:&amp;lt;code&amp;gt; set Lampe on-for-timer 30&amp;lt;/code&amp;gt;&lt;br /&gt;
verwenden um die Lampe 30 Sekunden einzuschalten, aber auch zunächst in den FS20 SU die maximale Einschaltdauer einprogrammieren:&lt;br /&gt;
:&amp;lt;code&amp;gt; set Lampe timer 30&amp;lt;/code&amp;gt;&lt;br /&gt;
Dannach wird jedes normale&lt;br /&gt;
:&amp;lt;code&amp;gt; set Lampe on&amp;lt;/code&amp;gt;&lt;br /&gt;
die Lampe für nur 30 Sekunden einschalten.&lt;br /&gt;
&lt;br /&gt;
Als Timerwerte kommen in beiden Fällen die bekannten [[Trick_der_Woche#FS20_Timerzeiten|128 Sekundenwerte]] von 0,25 Sekunden bis Etwa 4,5 Stunden in Frage.&lt;br /&gt;
&lt;br /&gt;
Es ist offenbar nicht bei allen Aktoren möglich einen einmal eingestellten Timer zu löschen, neue Werte eingeben aber sehr wohl.&lt;br /&gt;
&lt;br /&gt;
Mehr hier: [[FS20_Allgemein#Gerätetimer setzen / löschen|FS20 timer]].&lt;br /&gt;
&lt;br /&gt;
== Februar 2015 ==&lt;br /&gt;
=== 1-wire am GPIO4-Port des RaspberryPi funktioniert nicht mehr nach Systemupdate ===&lt;br /&gt;
Es kann passieren, dass nach einem Systemupdate (apt-get update oder apt-get dist-upgrade) die 1-wire-Geräte am GPIO4-Port plötzlich nicht mehr funktionieren. Eine Problemlösung dazu ist im Artikel &amp;quot;[[Raspberry Pi und 1-Wire#1-wire am GPIO4-Port funktioniert nicht mehr nach Systemupdate]]&amp;quot; beschrieben.&lt;br /&gt;
&lt;br /&gt;
=== Backup der Konfiguration (fhem.cfg und fhem.state) bei jedem &amp;quot;save&amp;quot; ===&lt;br /&gt;
Der nachfolgende Codeschnipsel erstellt bei jedem &amp;quot;save&amp;quot; eine Kopie der aktuellen [[Konfiguration]] (fhem.cfg und fhem.state) in ein Verzeichnis &amp;quot;backup_cfg-state&amp;quot; welches unter /opt/fhem/ zu finden ist. Somit kann bei einem Fehler jederzeit auf den letzten Stand zurückgegangen werden.&lt;br /&gt;
Zuerst ins FHEM Befehlsfeld den folgenden Befehl eingeben:&lt;br /&gt;
:&amp;lt;code&amp;gt;{ `mkdir backup_cfg-state` } &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach folgendes [[notify]] anlegen:&lt;br /&gt;
 define backupCfg notify global:SAVE {\&lt;br /&gt;
 my $now = TimeNow();; $now =~ s/ /_/g;; \&lt;br /&gt;
 `cp $attr{global}{configfile} ./backup_cfg-state/fhem.cfg.$now`;;\&lt;br /&gt;
 `cp $attr{global}{statefile} ./backup_cfg-state/fhem.state.$now`;;\&lt;br /&gt;
 } &lt;br /&gt;
&lt;br /&gt;
Quelle: {{Link2Forum|Topic=30873|Message=234412|LinkText=FHEM-Forum}}&lt;br /&gt;
&lt;br /&gt;
== Januar 2015 ==&lt;br /&gt;
=== CUL &amp;amp; CO über Serial ID-einbinden ===&lt;br /&gt;
Bei mehreren USB-Geräten kann es vorkommen, dass sie vertauscht werden z.B. &#039;&#039;/dev/ttyUSB0&#039;&#039; zu&#039;&#039; /dev/ttyUSB1&#039;&#039; oder &#039;&#039;/dev/ttyACM0&#039;&#039; zu &#039;&#039;/dev/ttyACM1&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Um dies zu umgehen, kann man sie über ihre Serial-ID in FHEM einbinden.&lt;br /&gt;
&lt;br /&gt;
Dieser Befehl zeigt die Serial-ID:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;ls -l /dev/serial/by-id&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier die Beispielausgabe eines CUL868, JeeLink, RFXtrx und eines CUL433&lt;br /&gt;
&lt;br /&gt;
 user@xxxx:~# ls -l /dev/serial/by-id&lt;br /&gt;
 lrwxrwxrwx 1 root root 13 Jan  9 23:34 usb-busware.de_CUL868-if00 -&amp;gt; ../../ttyACM0&lt;br /&gt;
 lrwxrwxrwx 1 root root 13 Jan  9 13:26 usb-FTDI_FT232R_USB_UART_A901RQ9F-if00-port0-&amp;gt; ../../ttyUSB0&lt;br /&gt;
 lrwxrwxrwx 1 root root 13 Jan  9 13:26 usb-RFXCOM_RFXtrx433_A1WZWL5Y-if00-port0-&amp;gt; ../../ttyUSB1&lt;br /&gt;
 lrwxrwxrwx 1 root root 13 Jan  9 21:29 usb-busware.de_CUL433-if00 -&amp;gt; ../../ttyACM1 &lt;br /&gt;
&lt;br /&gt;
Damit lässt sich folgende Definition erstellen:&lt;br /&gt;
&lt;br /&gt;
z.B. für einen CUL868&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define CUL868 CUL /dev/serial/by-id/usb-busware.de_CUL868-if00@9600 1134&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oder einen JeeLink&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define Jeelink JeeLink /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A901RQ9F-if00-port0@57600&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Einschränkung:&#039;&#039;&#039; Bei CULs von Busware lassen sich nur CUL433 und CUL868 unterscheiden. Zwei CUL868 haben z.B. immer die gleiche Serial-ID.&lt;br /&gt;
&lt;br /&gt;
=== HM LAN Konfig-Adapter Antenne verbessern===&lt;br /&gt;
Die Antenne des [[HM-CFG-LAN LAN Konfigurations-Adapter]] kann man mit etwas Bastelgeschick verlängern um den Empfang zu verbessern. &lt;br /&gt;
&lt;br /&gt;
Sinnvoll ist die Verlängerung auf 1/2 Lambda  (868MHz = 17,27 cm) oder gar 1 Lambda.&lt;br /&gt;
1 Lambda Antennen haben starke Richtwirkung in Form eines gedachten Zylinders, dessen Mittelachse die Antenne ist.&lt;br /&gt;
D.h., Alles was sich in Richtung des Anfangs und des Endes des Antennedrahtes befindet, hat schlechteren Empfang als mit einer kurzen Antenne. Daher muss man die Antenne ggf. genauer ausrichten.&lt;br /&gt;
&lt;br /&gt;
Anleitungen dazu werden an verschiedenen Stellen veröffentlicht, z.B. in &lt;br /&gt;
[http://www.ip-symcon.de/forum/threads/18411-Umbau-HM-LAN-Adapter-auf-Lambda-1-2-Dipol-Antenne diesem Beitrag] im IP-Symcon Forum (anders als der Namen der Anleitung vermuten lässt, liegt hier kein Dipol vor, sondern eine &amp;quot;normale&amp;quot; 1 Lambda Antenne.)&lt;br /&gt;
&lt;br /&gt;
Prinzipiell so dünnen Draht wie möglich verwenden.&lt;br /&gt;
&lt;br /&gt;
Wer noch mehr rausholen will, kann auch zusätzlichen Aufwand betreiben und die Antenne etwas von der Elektronik entfernen, die nämlich Störstrahlung in die Antenne einkoppelt. Oder eine Groundplane bauen.&lt;br /&gt;
Ein Anleitung für die CCU (analog auch für den HM LAN Konfig-Adapter einsetzbar) gibt es [http://www.techwriter.de/beispiel/funkeige.htm hier].&lt;br /&gt;
&lt;br /&gt;
== Dezember 2014 ==&lt;br /&gt;
=== FHT80TF als &amp;quot;Prüfsender&amp;quot; einsetzen  ===&lt;br /&gt;
Da der [[FHT80TF-2]] günstig ist und seinen Zustand ca. alle zwei Minuten sendet, kann er gut zum Ermitteln der Funklage von [[SlowRF]] Komponenten genutzt werden, auch wenn diese nicht senden. Den RSSI einer FS20 Schaltsteckdose kann man z.B. nicht wissen, da die Dose nur ein Empfänger ist. Wenn eine Dose nicht gut funktioniert und man den Verdacht hat, dass sie funktechnisch ungünstig liegt, kann man einen [[FHT80TF-2]] neben die Steckdose legen und man bekommt nach zwei Minuten einen Wert, der (trotz umgekehrter Funkrichtung) gut genug ist, um einem Hinweise zu geben.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== November 2014 ==&lt;br /&gt;
=== FS20 Adressschema und die Rolle des Hauscodes  ===&lt;br /&gt;
[[FS20_Allgemein#FS20_Adressierungsschema_.28Vorschlag.29]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Oktober 2014 ==&lt;br /&gt;
=== Aktor für Wanddosen ohne Nulleiter  ===&lt;br /&gt;
Es gibt viele Aktoren die man in Einbaudosen hinter Schaltern einbauen kann. Oft scheitert deren Nutzung aber daran, dass in vielen Elektroinstalltionen in der Einbaudose eines (Licht)schalters kein Neutralleiter (Nulleiter) verlegt ist, den die meisten Aktoren zur eigenen Stromversorgung brauchen. Hier kann der [[RSL 2-Draht Einbauschalter]] helfen, der auch ohne Neutraleiter funktioniert und kompatibel zu InterTechno ist. Er lässt sich z.B. mit einem CUL(433) schalten. Problematisch ist damit allerdings das Schalten von LED Lampen.&lt;br /&gt;
&lt;br /&gt;
== August 2014 ==&lt;br /&gt;
=== Perl-Skripte Online testen  ===&lt;br /&gt;
Im Internet existieren Webseiten auf denen man Perl-Code online testen kann. Beispielsweise auf [http://www.tutorialspoint.com/execute_perl_online.php codingground] kann man Code zum Testen eingeben und die Auswirkungen betrachten. Dies eignet sich zur schnellen Fehleranalyse oder um Perl zu lernen. Natürlich lassen sich keine FHEM-Besonderheiten nutzen.&lt;br /&gt;
&lt;br /&gt;
== Juli 2014 ==&lt;br /&gt;
=== Funklast reduzieren===&lt;br /&gt;
Bewegungsmelder erzeugen in der Regel eine recht hohe Funklast, wenn sie oft ausgelöst werden, also z.B. Licht in einem Zimmer schalten sollen.&lt;br /&gt;
&lt;br /&gt;
Konstruktionen der Art:&lt;br /&gt;
:&amp;lt;code&amp;gt;define FlurLicht notify Bewegungsmelder_Flur:motion:.* set Licht_Flur on-for-timer 256&amp;lt;/code&amp;gt;&lt;br /&gt;
haben daher den Nachteil bei viel Bewegung im Flur und je nach Einstellung des Sendeabstandes des Bewegungsmelders mindestens alle 120 Sekunde oder öfter ein &lt;br /&gt;
:&amp;lt;code&amp;gt;on-for-timer 256&amp;lt;/code&amp;gt;&lt;br /&gt;
zu senden. Das erzeugt eine hohe Funklast, speziell wenn der Aktor ein SlowRF Gerät ist (z.B. FS20 Unterputzschalter).&lt;br /&gt;
In solchen Fällen kann es helfen, nur dann einen Befehl zu senden, wenn das Licht nicht schon an ist:&lt;br /&gt;
:&amp;lt;code&amp;gt;define FlurLicht notify Bewegungsmelder_Flur:motion:.* { if (Value(&amp;quot;Licht_Flur&amp;quot;) eq &amp;quot;off&amp;quot;) { fhem (&amp;quot;set Licht_Flur1 on-for-timer 256&amp;quot;) } }&amp;lt;/code&amp;gt;&lt;br /&gt;
Nachteilig ist aber, dass eine Auslösung innerhalb 256 Sekunden die Einschaltzeit nicht verlängert. Dies kann man umgehen, indem man nicht on-for-timer verwendet, sondern den Aktor selber verzögert auschaltet und bei weiteren Auslösungen nur die Verzögerung erneut anlegt:&lt;br /&gt;
:&amp;lt;code&amp;gt;define FlurLicht notify Bewegungsmelder_Flur:motion:.* { if (Value(&amp;quot;Licht_Flur1&amp;quot;) eq &amp;quot;off&amp;quot;) { fhem (&amp;quot;set Licht_Flur on ;; define FlurLicht_aus at +00:04:16 set Licht_Flur off&amp;quot;) } else { fhem (&amp;quot;delete FlurLicht_aus ;; define FlurLicht_aus at +00:04:16 set Licht_Flur off&amp;quot;) }}&amp;lt;/code&amp;gt;&lt;br /&gt;
Durch den relativ neuen Befehl &amp;quot;defmod&amp;quot; kann ausserdem das Löschen und neu Anlegen zusammengefasst werden, sieh Tipp Dezember 2015&lt;br /&gt;
&lt;br /&gt;
== Juni 2014 ==&lt;br /&gt;
=== Batteriestatus bei HomeMatic Devices aktivieren===&lt;br /&gt;
Zumindest einige (wenn nicht alle) batteriegespeisten HM-Geräte können Batteriemeldungen senden, tun dies in der normalen Konfiguration aber nicht.&lt;br /&gt;
Dazu muss das Register cyclicInfoMsg auf on gesetzt werden. &lt;br /&gt;
&lt;br /&gt;
Wie man das macht steht z.B. hier&lt;br /&gt;
[[HM-SEC-SC_Tür-Fensterkontakt#Batteriestatus_aktivieren]]&lt;br /&gt;
und hier&lt;br /&gt;
[[HomeMatic_Type_ThreeState]]&lt;br /&gt;
&lt;br /&gt;
== Mai 2014 ==&lt;br /&gt;
=== Dummywert mit aktueller Uhrzeit versehen in anderen Dummy kopieren===&lt;br /&gt;
Der Inhalt von Dummy1 soll erweitert um  Uhrzeit und Datum in Dummy2 kopiert werden (z.B. um die Urzeit der letzten Auslösung einer Alarmanlage anzuzeigen)&lt;br /&gt;
:&amp;lt;code&amp;gt;{ fhem(&amp;quot;set dummy2 &amp;quot; . (Value(&amp;quot;Dummy1&amp;quot;).&amp;quot; &amp;quot;.TimeNow()) )  } &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Zwei Dummywerte in einen anderen Dummy kopieren ===&lt;br /&gt;
Der String in Dummy1 soll um den String in Dummy2 erweitert und nach Dummy3 kopiert werden:&lt;br /&gt;
:&amp;lt;code&amp;gt;{ fhem(&amp;quot;set Dummy3 &amp;quot;.(Value(&amp;quot;Dummy1&amp;quot;)+Value(&amp;quot;Dummy2&amp;quot;))) } &amp;lt;/code&amp;gt;&lt;br /&gt;
(Achtung: &amp;quot;+&amp;quot;  ist Zahlen addieren, &amp;quot;.&amp;quot; ist String konkatenieren / verketten)&lt;br /&gt;
&lt;br /&gt;
== April 2014==&lt;br /&gt;
=== Code sparen ===&lt;br /&gt;
Wer Definitionen wie die aus dem März zum [[Trick der Woche#Zuverlässigkeit von FS20 Schaltungen erhöhen|Abfangen von Fehlbedienungen]] verwendet, kann durch eine ELSE Erweiterung auch gleich das Auschalten erledigen.&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_TV_on notify TV { if (&amp;quot;$EVENT&amp;quot; eq &amp;quot;on&amp;quot; || &amp;quot;$EVENT&amp;quot; eq &amp;quot;dimup&amp;quot;) { fhem(&amp;quot;set TV on&amp;quot;) } else { fhem(&amp;quot;set TV off&amp;quot;) } }&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hierdurch schaltet ON oder versehentlich zu langes Drücken (also DIMUP) den Fernseher ein, jeder &#039;&#039;andere&#039;&#039; Tastendruck (also insbesondere die OFF Taste oder zu langes Drücken der OFF Taste -&amp;gt; DIMDOWN) den Fernseher aus.&lt;br /&gt;
&lt;br /&gt;
Voraussetzung ist, dass die Fernbedienung standardkonfiguriert ist, siehe auch nächster Tip.&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration eines FS20 Senders prüfen ===&lt;br /&gt;
Gelegentlich reagieren bestimmte notifys nicht, die von Sendern (Fernbedienungen, Sensoren oder Schaltern) ausgelöst werden sollen. Speziell bei FS20 aber auch bei HomeMatic kann das daran liegen, dass der Sender nicht sendet was man denkt. So gut wie alle FS20 Sender kennen nämlich nicht nur ON und OFF, sondern über ein Dutzend Schaltzustände. Dimmen ist einem noch hinreichend bewusst, es gibt aber auch exotische Dinge wie  Ein-für-Zeitdauer, Ein-auf-alte-Helligkeit, Aus-für-Zeitdauer (nur FS20), Ein-für-Zeitdauer-dannach-alter-Zustand und vieles mehr.&lt;br /&gt;
&lt;br /&gt;
Was also ein Infrarot-Bewegungsmelder bei Auslösung sendet und auch was eine Fernbedienungstaste sendet ist einstellbar. Wenn jetzt zum Beispiel an einer Fernbedienung auf Tastendruck nicht ON sondern Ein-für-Zeitdauer (ON-FOR-TIMER) gesendet wird, wird&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_TV_on notify TVFB:on set TV on&amp;lt;/code&amp;gt;&lt;br /&gt;
seltsamerweise nicht auslösen, obwohl die richtige Taste (und diese auch nicht zu lang) gedrückt wurde.&lt;br /&gt;
&lt;br /&gt;
Auch wenn man sich sicher ist, das Richtige in die Fernbedienung/Sensoren einprogramiert zu haben, ist ein einfacher Test immer, dies mit&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_TV notify TVFB set TV on&amp;lt;/code&amp;gt;&lt;br /&gt;
zu prüfen. Dieses notify löst immer aus, wenn &amp;quot;TVFB&amp;quot;  &#039;&#039;irgendetwas&#039;&#039; sendet, egal was. (Beachte: Man kann dann den Fernseher aber nicht mehr ausschalten, da auch die Austaste das notify auslöst und zum TV-Aktor nur &amp;quot;on&amp;quot; sendet). &lt;br /&gt;
&lt;br /&gt;
Geht die Schaltung jetzt (kann man den Fernseher also jetzt EINschalten), liegt der Verdacht nahe, dass die Konfiguration des Senders / Sensors anders ist, als man denkt. Das Logfile, der EventMonitor oder ein Beobachtung von FHEM per Telnet mittels &amp;quot;inform&amp;quot; gibt Aufschluss, welcher Befehl tatsächlich empfangen wurde.&lt;br /&gt;
&lt;br /&gt;
== März 2014==&lt;br /&gt;
=== Zuverlässigkeit von FS20 Schaltungen erhöhen ===&lt;br /&gt;
FS20 Fernbedienungen senden bei Tastendrücken von mehr als 0,4 Sekunden anstatt ON bzw. OFF DIMUP bzw DIMDOWN.(Auch einige FBs anderer Systeme verhalten sich ähnlich)&lt;br /&gt;
&lt;br /&gt;
Das führt gelegentlich zu allgemein schlechter Bedienbarkeit (und schlechtem WAF), da 0,4 Sekunden relativ kurz ist und gerne aus versehen länger gedrückt wird. Das ist vor allem problematisch, wenn etwas geschaltet werden soll, was keinen Dimmer hat oder Dimmen nicht unterstützt.&lt;br /&gt;
&lt;br /&gt;
Eine Konfiguration wie &lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_TV_on notify TVFB:on set TV on&amp;lt;/code&amp;gt;&lt;br /&gt;
hat also dann den Nachteil, dass bei versehentlich zu langem Tastendruck auf die Fernbedienung das TV nicht angeht. Da die meisten Nutzer unbewusst dazu neigen, bei Misserfolg die selbe Taste erneut aber länger zu drücken (was erneut keinen Erfolg zeigt) ist Frustration zu erwarten.&lt;br /&gt;
&lt;br /&gt;
Es kann daher speziell bei nicht dimmbaren Aktoren von Vorteil sein, auch dimmen abzufangen, z.B. durch eine zweite zusätzliche Definition:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_TV_dimup notify TVFB:dimup set TV on&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es ist in der Regel einfacher, einige dieser zusätzlichen Definitionen einzufügen, als allen Bedienern des Systems zu erklären, dass man keinesfalls länger als 0,4 Sekunden drücken darf.&lt;br /&gt;
&lt;br /&gt;
Alternativ kann man auch beide Befehle in einer Definition durch Perlbefehle {} abfangen:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_TV_on notify TVFB { if (&amp;quot;$EVENT&amp;quot; eq &amp;quot;on&amp;quot; || &amp;quot;$EVENT&amp;quot; eq &amp;quot;dimup&amp;quot;) { fhem(&amp;quot;set TV on&amp;quot;) }}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Allerdings hat dies den Nachteil, dass jedes Event dieses define durchläuft und erst später geprüft wird, ob das Event überhaupt irgendetwas auslöst. &lt;br /&gt;
Z.B. wird&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_TV_on notify TVFB ...&amp;lt;/code&amp;gt; &lt;br /&gt;
auch durch TVFB off ausgelöst (oder unter bestimmten Bedungen sogar duch alle Events), nur um dann nach dem Perl Test festzustellen, dass doch nichts getan werden soll.&lt;br /&gt;
&lt;br /&gt;
Ressourcenschonender ist daher:&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_TV_on notify TVFB:on|TVFB:dimup set TV on &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Andere Möglichkeiten vergleiche: [[Trick der Woche#notify durch mehrere Ereignisse auslösen lassen|Notify durch mehrere Ereignisse auslösen lassen]] und [[Trick der Woche#Performance_von_Notifys|Performance von Notifys]]&lt;br /&gt;
&lt;br /&gt;
== Februar 2014==&lt;br /&gt;
=== Sequence nutzen ===&lt;br /&gt;
Man kann Aktionen statt mit einem Tastedruck auch mit einer Sequenz von Tastendücken auslösen. Das Format des Befehle ist:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define &amp;lt;name&amp;gt; sequence &amp;lt;re1&amp;gt; &amp;lt;timeout1&amp;gt; &amp;lt;re2&amp;gt; [&amp;lt;timeout2&amp;gt; &amp;lt;re3&amp;gt; ...] &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
wobei &amp;lt;re1&amp;gt; ...&amp;lt;re_n&amp;gt; die Aktionen sind und &amp;lt;timeout_n&amp;gt; der maximale Abstand der Tastendrücke in Sekunden.&lt;br /&gt;
&lt;br /&gt;
Angenommen, man wolle z.B. eine Lampe dann anschalten, wenn man zuerst Taste1 EIN, dann Taste2 AUS und dann wieder Taste1 EIN einer Fernbedienung drückt, könnte das konkret so aussehen:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define MeineLampenSequenz1 sequence Btn1:on 0.5 Btn2:off 0.5 Btn1:on&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zwischen jedem der Tastendrücke darf eine halbe Sekunde Abstand sein. Diese Definition selbst löst die Lampe nicht aus, sondern definiert nur wie die Sequenz aussehen soll. Um die Lampe bei erfolgreicher Betätigung der Sequenz auch einzuschalten, bedarf es zusätzlich etwas wie:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define MeineLampe notify MeineLampenSequenz1:trigger set Lampe on&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sequence kann man gut nutzen, um mit einer Fernbedienung mehr Funktionen zu schalten als Tasten zur Verfügung stehen. Ebenso könnte man damit simple Codeschlösser für Alarmanlagen bauen, z.B. um eine Anlage auszuschalten, wenn eine bestimmte Abfolge von Tasten gedrückt wird.&lt;br /&gt;
&lt;br /&gt;
Je nach Funksystem nimmt die Zuverlässigkeit aber rasch ab. Angenommen im Bereich FS20 (das System ist etwas unzuverlässiger ist als z.B. HomeMatic) seien 95% aller Funktsignale ungestört übertragbar, dann würden in der Praxis von 100 Tastendrücken an einer Fernbedienung 95x Erfolg zeigen und 5x fehlschlagen; das ist sicher tolerabel. &lt;br /&gt;
&lt;br /&gt;
Bei einer Sequenzlänge von nur 4 Tasten würde die kombinierte Erfolgsquote der Sequenz jedoch nur noch ca. 80% sein, zum Ausschalten einer Alarmanlage vermutlich bereits unpraktisch.&lt;br /&gt;
&lt;br /&gt;
== Januar 2014==&lt;br /&gt;
===isday===&lt;br /&gt;
Bekanntlich kann man  mit &amp;quot;isday&amp;quot; leicht testen ob es draussen hell ist oder nicht. isday ist eine Funktion des (automatisch geladenen) Moduls [[SUNRISE_EL]], das auch sunset und sunrise enthält.&lt;br /&gt;
&lt;br /&gt;
Problematisch bei isday ist die fehlende Möglichkeit, Sonnenaufgang und Untergang einzustellen (zumindest wenn man nicht 99_SUNRISE_EL.pm verändern will): isday ist wahr, wenn die Sonne im gegebenen Breitengrad theoretisch sichtbar ist. Wenn örtliche Gegebenheiten (Bebauung, Bäume, Tal etc.) eine Anpassung erfordern, kann man sich auch ein eigenes isday basteln, in dem man sunrise und sunset verwendet und dieses mit getrennten offsets versieht.&lt;br /&gt;
&lt;br /&gt;
Zuerst definiert man sich eine Variable (&amp;quot;dummy&amp;quot;) der anstelle isday eingesetzt werden soll, z.B.:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define Tageslicht dummy &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann wird diese mit sunset und sunrise befüllt:&lt;br /&gt;
&lt;br /&gt;
 define SetDummy1 at *{sunset(-3600)} set Tageslicht hell &lt;br /&gt;
 define SetDummy2 at *{sunrise(+1800)} set Tageslicht dunkel &lt;br /&gt;
&lt;br /&gt;
Jetzt kann für jeden Wechsel ein eigener Offset gewählt werden, im Beispiel 3600 Sekunden vor Sonnenuntergang und 1800 Sekunden nach Sonnenaufgang. Anstatt das Dummy &amp;quot;Tageslicht&amp;quot; mit den Werten &amp;quot;hell/dunkel&amp;quot; zu befüllen, kann natürlich auch 1/0 oder &amp;quot;Tag/Nacht&amp;quot; etc. verwendet werden, je nachdem was bei der Anwendung besser passt.&lt;br /&gt;
&lt;br /&gt;
Für höhere Ansprüche könnte hingegen das [[Twilight]]-Modul verwendet werden, das Dämmerungsstufen kennt.&lt;br /&gt;
&lt;br /&gt;
===Struktur von &amp;quot;else if&amp;quot; Verzweigungen===&lt;br /&gt;
 define ... notify ... {\&lt;br /&gt;
  if ... {\&lt;br /&gt;
   fhem (&amp;quot;... ;; ...&amp;quot;)\&lt;br /&gt;
  }\&lt;br /&gt;
  elsif ... {\&lt;br /&gt;
    fhem (&amp;quot;... ;; ...&amp;quot;)\&lt;br /&gt;
  }\&lt;br /&gt;
  elsif ... {\&lt;br /&gt;
    fhem (&amp;quot;... ;; ...&amp;quot;)\&lt;br /&gt;
  }\&lt;br /&gt;
  else {\&lt;br /&gt;
   if ... {\&lt;br /&gt;
    fhem (&amp;quot;... ;; ...&amp;quot;)\&lt;br /&gt;
  }\&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Achtung: es muss tatsächlich &amp;quot;elsif&amp;quot; heissen und nicht &amp;quot;elseif&amp;quot; oder &amp;quot;else if&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Gilt für Perl Aufrufe. &lt;br /&gt;
Wer aktuell in FHEM neu einsteigt, kann auch den seit 2014 zur Verfügung stehenden FHEM Befehl [[DOIF]] verwenden, der komfortabler ist und zusätzliche Features aufweist.&lt;br /&gt;
&lt;br /&gt;
== Dezember 2013==&lt;br /&gt;
===notify durch mehrere Ereignisse auslösen lassen===&lt;br /&gt;
Bekanntermassen löst&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter …&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
aus, wenn irgendein Ereignis vom Sender &amp;quot;MeinSchalter&amp;quot; eintrifft.&lt;br /&gt;
&lt;br /&gt;
Mit&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:on …&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
wird das notify jedoch nur ausgelöst, wenn dieses Ereignis eine &amp;quot;on&amp;quot; ist.&lt;br /&gt;
Wenn man aber möchte, das z.B. &amp;quot;on&amp;quot; und &amp;quot;off&amp;quot; auslöst (um etwa Dim-Befehle auszuschliessen) kann dies wie folgt erreicht werden:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:(on|off) …&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Klammern sind wichtig, vergleiche eine Lösung, bei der zwei Sender alternativ das notify auslösen können:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:on|MeinAndererSchalter:on …&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Selbstverständlich geht z.B. auch folgendes:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:on|MeinAndererSchalter …&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier wird ausgelöst wenn &amp;quot;MeinSchalter&amp;quot; das Ereignis &amp;quot;on&amp;quot; liefert oder &amp;quot;MeinAndererSchalter&amp;quot; irgendein Ereignis. Beachte hierzu jedoch den Tipp vom Dezember 2020 &amp;quot;Performance von Notifys&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Aktoren über mehrere Funkschnittstellen ansprechen ===&lt;br /&gt;
Falls man mehrere Funkschnittstellen zur Reichweitenverlängerung hat (CUL / CUNO etc), und ein Aktor von beiden Funkschnittstellen in etwa gleich (schlecht) erreichbar ist, mag der Wunsch aufkommen, einen Funkbefehl über beide Schnittstellen auszusenden. Dies ist bei Funkprotokollen möglich, die kein echtes Pairing der Aktoren an die Funkschnittstelle erfordern, also z.B. FS20 oder Intertechno, nicht jedoch ohne weiteres bei HomeMatic.&lt;br /&gt;
&lt;br /&gt;
Problematisch ist aber, dass die Funkschnittstelle über IODev eindeutige je Aktor festgelegt werden muss, eine Zuordnung mehrerer IODevs ist nicht vorgesehen.&lt;br /&gt;
(wenn man IODev nicht setzt, wird per default die LETZTE definiert passende Schnittstelle verwendet)&lt;br /&gt;
&lt;br /&gt;
Dieses Problem kann mit einem Trick aber umgangen werden. Und zwar legt man den Aktor 2x mit gleicher Adresse aber abweichenden Namen und IOdevs an, z.B. so:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 define brenner_CUL1 FS20 11114244 11&lt;br /&gt;
 attr brenner_CUL1 IODev CUL1&lt;br /&gt;
 attr brenner_CUL2 room Keller&lt;br /&gt;
&lt;br /&gt;
 define brenner_CUL2 FS20 11114244 11&lt;br /&gt;
 attr brenner_CUL2 IODev CUL2&lt;br /&gt;
 attr brenner_CUL2 room Keller&lt;br /&gt;
&lt;br /&gt;
Ein Befehl der Art:&lt;br /&gt;
&lt;br /&gt;
 set brenner_CUL1,brenner_CUL2 on&lt;br /&gt;
&lt;br /&gt;
sendet den ON Befehl für den FS20 Aktor 11114244 11  jetzt tatsächlich über beide CULs aus!&lt;br /&gt;
&lt;br /&gt;
Achtung: Wenn die Schnittstellen gleichschnell angebunden sind, sollte vermutlich der [[Sendpool]] verwendet werden, da die Aussendungen sonst tatsächlich gleichzeitig erfolgen könnten und sich dann gegenseitig stören würden. Dieser Trick funktioniert ausserdem nur bei Befehlen, bei denen es im Zweifel egal ist, wenn sie beim Aktor 2x eintreffen. &lt;br /&gt;
&lt;br /&gt;
Bei HomeMatic lässt sich ein ähnlicher Effekt durch einrichten einer [[Virtueller Controller VCCU|virtuellen CCU]] erreichen.&lt;br /&gt;
&lt;br /&gt;
=== Retrycount bei FHTs ist überflüssig===&lt;br /&gt;
Das von der Funktion &#039;&#039;autocreate&#039;&#039; älterer FHEM Versionen beim Anlegen von FHT80 Heizungsreglern voreingetragene attribute &amp;quot;retrycount&amp;quot; hat in den allermeisten Fällen keine Wirkung, da es NUR greift, wenn man als Funkschnittstelle eine FHZ1X00PC verwendet und dann den Softbuffer einschaltet. Selbst wenn man diese Konfiguration nutzt, will gut überlegt werden, ob die Wirkung postiv ist: Bei ungenügender Empfangslage vergrössert es Kommunikationsprobleme eventuell sogar.&lt;br /&gt;
&lt;br /&gt;
Es kann also in der Regel entfernt oder auf den Wert &amp;quot;1&amp;quot; gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
 define Heizung_Bad FHT 060d&lt;br /&gt;
 attr Heizung_Bad retrycount 3       &amp;lt;=== Diese Zeile entfernen&lt;br /&gt;
&lt;br /&gt;
Siehe auch:[[Kommunikationsprobleme mit FHT]]&lt;br /&gt;
&lt;br /&gt;
== November 2013 ==&lt;br /&gt;
=== FS20 Funksteckdose sicherer schalten===&lt;br /&gt;
Seltsamerweise kommt es vor, das FS20 Aktoren - insbesondere die FS20 Funksteckdose - an der Grenze der Funkreichweite bestimmte Befehle eines Typs empfängt, andere aber nicht. Z.B. lässt sich die FS20 Steckdose zwar immer einschalten, aber oft nicht mehr aus (oder umgekehrt).&lt;br /&gt;
&lt;br /&gt;
Gelegentlich kann man die Zuverlässigkeit erhöhen, indem man statt dem nicht funktionierenden Befehl das Gegenteil mit &amp;quot;for-timer 1&amp;quot; verwendet.&lt;br /&gt;
&lt;br /&gt;
Im Fall, dass eine FS20 Steckdose sich also einwandfrei EINschalten lässt:&lt;br /&gt;
:&amp;lt;code&amp;gt;set SteckdoseA on&amp;lt;/code&amp;gt;&lt;br /&gt;
aber oft ein AUSschalten mittels&lt;br /&gt;
:&amp;lt;code&amp;gt;set SteckdoseA off&amp;lt;/code&amp;gt;&lt;br /&gt;
nicht funktioniert, kann man versuchen die Dose anstelle mit &amp;quot;off&amp;quot; mit dem Befehl&lt;br /&gt;
:&amp;lt;code&amp;gt;set SteckdoseA on-for-timer 1&amp;lt;/code&amp;gt;&lt;br /&gt;
auszuschalten.&lt;br /&gt;
&lt;br /&gt;
Analog kann man mit off-for-timer arbeiten, wenn sich Aktoren nicht einschalten lassen, ausschalten aber geht.&lt;br /&gt;
&lt;br /&gt;
Achtung: Dieser Trick funtioniert ausdrücklich nur, wenn der &amp;quot;on/off-for-timer&amp;quot; Befehl im Aktor selber abgebildet wird. Daher ist der Trick vermutlich nicht auf andere Funksysteme übertragbar. z.B. unterstützt HM nur on-for-timer und Intertechno kennt keinen Timer.&lt;br /&gt;
&lt;br /&gt;
=== Mehrere Geräte zugleich schalten===&lt;br /&gt;
Ein Ereignis soll mehrere Geräte schalten:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_Bewegungsmelder notify Bewegungsmelder set Lampe1 on;;set Lampe2 on;;set FunksteckdoseA on&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aus Übersichtlichkeitsgründen können vor und nach den Semikolons auch Leerzeichen eingefügt werden (obwohl in einigen Dokumentation behauptet wird, dies dürfe man nicht machen):&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_Bewegungsmelder notify Bewegungsmelder set Lampe1 on ;; set Lampe2 on ;; set FunksteckdoseA on&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn der Schaltbefehl bei allen Geräten gleich ist, kann man wie folgt zusammenfassen:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_Bewegungsmelder notify Bewegungsmelder set Lampe1,Lampe2,FunksteckdoseA on&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Komma wird nicht [[Escapen in Perlbefehlen|escaped]] (verdoppelt), hier darf tatsächlich KEIN Leerzeichen vor oder nach dem Komma eingefügt werden.&lt;br /&gt;
&lt;br /&gt;
=== Logfileinträge unterdrücken===&lt;br /&gt;
Das Attribute &amp;quot;verbose 0&amp;quot; verhindert, dass das Gerät Logfileinträge erzeugt.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 define Funksteckdose FS20 22224222 01&lt;br /&gt;
 attr Funksteckdose verbose 0&lt;br /&gt;
&lt;br /&gt;
===FHT Lazy Mode benutzen===&lt;br /&gt;
Es gibt wenig Gründe, den FHT &amp;quot;Lazy Mode&amp;quot; nicht zu verwenden&lt;br /&gt;
 define Heizung_Bad FHT 060d&lt;br /&gt;
 attr Heizung_Bad lazy&lt;br /&gt;
&lt;br /&gt;
Dieser sorgt dafür, dass Temperaturänderungen (genau genommen alle Änderungen, auch z.B. date) nur übertragen werden, wenn sie nicht sowieso schon am FHT eingestellt sind und veringern die Funklast dadurch deutlich. &lt;br /&gt;
&lt;br /&gt;
Siehe auch: [[Kommunikationsprobleme mit FHT]]&lt;br /&gt;
&lt;br /&gt;
== Oktober 2013 ==&lt;br /&gt;
=== Zuverlässigkeit von Wiedereinschalten erhöhen ===&lt;br /&gt;
Speziell bei FS20 Aktoren ist wegen des fehlenden Rückkanals nicht leicht erkennbar, ob ein Einschaltbefehl Wirkung gezeigt hat. Das bringt einen ganz schlechten WAF, wenn man z.B. mit einem FS20 Aktor eine Heizung ausschaltet und das Wiedereinschalten nach z.B. einer Stunde nicht klappt.&lt;br /&gt;
&lt;br /&gt;
Hier empfiehlt es sich, das Ausschalten mittels &lt;br /&gt;
:&amp;lt;code&amp;gt;set Heizungs_schalter off-for-timer 3584&amp;lt;/code&amp;gt;   (= fast eine Stunde)&lt;br /&gt;
zu erledigen. Da bei FS20 der off-for-timer Befehl im Aktor abgewickelt wird (und nicht durch FHEM), schaltet sich der Aktor auch dann garantiert wieder ein, wenn FHEM abstürzt, eine Funkstörung vorliegt oder ähnliches.  Bei Bedarf kann der Befehl off-for-timer zur  Verlängerung der Ausschaltzeit wiederholt werden. Dies kann z.B. nötig sein, wenn die Ausschaltung länger als 4,5 Stunden (15360 Sekunden, der Maximalwert des Timers) dauern soll.&lt;br /&gt;
&lt;br /&gt;
Achtung: dieser Trick funktioniert nur, wenn der Aktor &amp;quot;off-for-timer&amp;quot; selbst beherrscht. FS20 Geräte können das, HomeMatic können aber nur &amp;quot;on-for-timer&amp;quot;. Man kann off-for-timer mit HomeMatic trotzdem verwenden, aber in diesem Fall sendet FHEM den Einschaltbefehl nach der Timerzeit. InterTechno, RSL etc, können gar keinen Timer, hier sendet FHEM immer 2 Befehle im passenden Abstand.&lt;br /&gt;
&lt;br /&gt;
=== FS20 Timerzeiten ===&lt;br /&gt;
FS20 Timer werden in Sekunden angegeben. Es sind jedoch nicht alle Werte einstellbar. Da der Timer Wert in 7 Bit übertragen werden muss, sind nur 128 Werte möglich. Um mit diesen Werten im unteren Bereich möglichst fein aufzulösen, andererseits aber auch lange Zeiten zu ermöglichen, ist die Verteilung nicht linear. Einstellbar sind folgende Zeiten in Sekunden;&lt;br /&gt;
&lt;br /&gt;
0,25  0,5  0,75  1  1,25  1,5  1,75  2  2,25  2,5  2,75  3  3,25  3,5  3,75   &lt;br /&gt;
4  4,5  5  5,5  6  6,5  7  7,5  8  9  10  11  12  13  14  15  16  18  20  22   &lt;br /&gt;
24  26  28  30  32  36  40  44  48  52  56  60  64  72  80  88  96  104  112   &lt;br /&gt;
120  128  144  160  176  192  208  224  240  256  288  320  352  384  416   &lt;br /&gt;
448  480  512  576  640  704  768  832  896  960  1024  1152  1280  1408   &lt;br /&gt;
1536  1664  1792  1920  2048  2304  2560  2816  3072  3328  3584  3840  4096   &lt;br /&gt;
4608  5120  5632  6144  6656  7168  7680  8192  9216  10240  11264  12288   &lt;br /&gt;
13312  14336  15360 &lt;br /&gt;
(etwas übersichtlicher formatiert auch [[FS20 Allgemein#ON/OFF Befehle mit Time Parameter|hier]]).&lt;br /&gt;
 &lt;br /&gt;
Andere Zeiten werden von FHEM gerundet. Ein neues Setzen des Timer für FS20 löscht den alten Wert.&lt;br /&gt;
&lt;br /&gt;
Auch HomeMatic Aktoren beherrschen Time Parameter, im Gegensatz zu FS20 allerdings kein &amp;quot;off-for-timer&amp;quot;. Details dazu im Artikel [[HomeMatic Timerwerte]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Soulman</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Trick_der_Woche&amp;diff=37519</id>
		<title>Trick der Woche</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Trick_der_Woche&amp;diff=37519"/>
		<updated>2022-08-09T22:13:14Z</updated>

		<summary type="html">&lt;p&gt;Soulman: /* Januar 2022 */ -noSSL Update&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diese Seite enthält Tipps und Tricks, die zu unbedeutend sind, einen eigenen Artikel zu rechtfertigen, alternative Schreibweisen/Lösungen für eine Problem darstellen, Ungenauigkeiten oder unklare Formulierungen in den offiziellen Dokumenten ergänzen und ähnliches. Jeder Eintrag ist typischerweise sehr kurz (wenige Zeilen lang) und beleuchtet vielleicht nur einen Aspekt von FHEM, er kann allgemeiner Natur sein, oder sich auf ein spezielles Gerät oder einen speziellen Anwendungsfall beziehen.&lt;br /&gt;
&lt;br /&gt;
== August 2022==&lt;br /&gt;
=== Update ===&lt;br /&gt;
Wenn der Befehl &amp;quot;Update&amp;quot; nicht funktioniert und insbesondere die Fehlermeldung &#039;&#039;Bad hostname &#039;fhem.de:80&#039;&#039;&#039; zurück gibt, kann es sinnvoll sein, den Parameter  -noSSL zu versuchen. Details dazu im Artikel [[Update]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Januar 2022==&lt;br /&gt;
=== günstiger Luftfeuchtesensor ===&lt;br /&gt;
Der [[HM-CC-TC Funk-Wandthermostat]] ist schon lange abgekündigt. Er wird derzeit oft recht günstig im Netz angeboten und eignet sich daher als billiger &amp;quot;StandAlone&amp;quot; Temperatur- und Luftfeuchtesensor, auch wenn er keinen Ventielantrieb steuern soll.&lt;br /&gt;
&lt;br /&gt;
== Dezember 2020 ==&lt;br /&gt;
=== Performance von Notifys ===&lt;br /&gt;
Im Tipp vom Dezember 2013 [[Trick der Woche#notify durch mehrere Ereignisse auslösen lassen|notify durch mehrere Ereignisse auslösen lassen]] heisst es:&lt;br /&gt;
:&#039;&#039;[…] Wenn man aber möchte, dass z.B. &amp;quot;on&amp;quot; und &amp;quot;off&amp;quot; auslöst (um etwa Dim-Befehle auszuschliessen), kann dies wie folgt erreicht werden:&#039;&#039;&lt;br /&gt;
::&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:(on|off) …&amp;lt;/code&amp;gt;&lt;br /&gt;
Performanter ist allerdings:&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:o[nf]+  …&amp;lt;/code&amp;gt;&lt;br /&gt;
wobei &#039;&#039;&#039;o[nf]+&#039;&#039;&#039; eine &amp;quot;Regexp&amp;quot; für beliebige Zeichenketten ist, die mit &#039;&#039;&#039;o&#039;&#039;&#039; anfangen und &#039;&#039;&#039;n&#039;&#039;&#039; und/oder &#039;&#039;&#039;f&#039;&#039;&#039; enthalten, also (auch) on und off.&lt;br /&gt;
&lt;br /&gt;
Alternativ kann auch:&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:on|MeinSchalter:off … &amp;lt;/code&amp;gt;&lt;br /&gt;
verwendet werden.&lt;br /&gt;
Die letzten beiden Varianten sparen Ausführungszeit. Ganz allgemein ist es besser, im notify das Suchmuster mit einem [[Regulärer Ausdruck|regulären Ausdruck]] (Regexp) eng zu definieren.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:on ... &amp;lt;/code&amp;gt;&lt;br /&gt;
ist performanter als&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter { if ($EVENT eq &amp;quot;on&amp;quot; ... &amp;lt;/code&amp;gt;&lt;br /&gt;
auch wenn das Ergebnis gleich ist.&lt;br /&gt;
&lt;br /&gt;
Allerdings ist &lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:on ... &amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas1 notify MeinSchalter:off ... &amp;lt;/code&amp;gt;&lt;br /&gt;
langsamer als&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchaltero[nf]+ { if ($EVENT eq &amp;quot;on&amp;quot;  ) { fhem( ) } else { fhem(&amp;quot;... &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Oktober 2020 ==&lt;br /&gt;
=== Entprellen ===&lt;br /&gt;
Will man ein notify innerhalb eines bestimmten Zeitraumes nur einmal auslösen lassen, auch wenn er in diesem Zeitraum mehrfach getriggered werden sollte, so bietet sich das [[Attribut]] &#039;&#039;&#039;disabledAfterTrigger&#039;&#039;&#039; an:&lt;br /&gt;
:&amp;lt;code&amp;gt;attr &amp;lt;notify_device&amp;gt; disabledAfterTrigger &amp;lt;Anzahl Sekunden&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Oktober 2019 ==&lt;br /&gt;
=== Funkstörungen durch leere Batterien ===&lt;br /&gt;
Unerklärliche Funkstörungen besonders im SlowRF Bereich (z.b. FS20) mit stark verminderter Reichweite von CULs, gestörter [[RFR CUL]] Kommunikation etc. gestörtem Empfang von Funktelegrammen aller Art können ihre Ursache darin haben, dass einige Geräte mit (fast) leeren Batterien unkontrolliert senden und dadurch den Kanal mit Störsignalen verschmutzen. Anfällig sind insbesondere ältere FHT Fenstersensoren wie der [[FHT80TF]], die mit fast leeren Batterien eine Art Rauschen aussenden und damit die &#039;&#039;&#039;komplette&#039;&#039;&#039; FS20 Kommunikation lahmlegen können, Störungen beeinflussen auch andere Funkprotokolle im selben Frequenzbereich, wie z.b. HM.&lt;br /&gt;
Also im Falle unerklärlicher und weitreicher Funkstörungen die Batterien aller Geräte überprüfen.&lt;br /&gt;
&lt;br /&gt;
== Februar 2019 ==&lt;br /&gt;
=== Unterräume anlegen ===&lt;br /&gt;
[[Datei:Unterraeume.png|350px|thumb|right|Beispiel für einen gegliederten Raum &amp;quot;Steuerung&amp;quot;]]&lt;br /&gt;
In [[FHEMWEB]] besteht neben der Möglichkeit, Geräte dadurch übersichtlich anzuordnen, indem diese Gruppen und einfachen Räumen zugeordnet werden, auch die Möglichkeit, Räume weiter zu gliedern und Unterräume zu verwenden. Dazu wird nach der Angabe des Hauptraums der Unterraum, getrennt durch ein &amp;quot;-&amp;gt;&amp;quot; angegeben. Beispiele:&lt;br /&gt;
 attr &amp;lt;DEVICENAME&amp;gt; room Steuerung-&amp;gt;Logik&lt;br /&gt;
 attr &amp;lt;DEVICENAME&amp;gt; room Steuerung-&amp;gt;Heizung&lt;br /&gt;
&#039;&#039;&#039;Hinweis&#039;&#039;&#039;: Legt man zusätzlich einen Raum &#039;&#039;Steuerung&#039;&#039; an, erscheint dieser als zusätzlicher Eintrag in der Raumliste.&lt;br /&gt;
&lt;br /&gt;
== Januar 2019 ==&lt;br /&gt;
=== HomeMatic IP ===&lt;br /&gt;
Das [[HomeMatic IP]]-Protokoll unterscheidet sich deutlich vom bisherigen HomeMatic Protokoll, im Grunde ist es ein anderes System, das nur dem Namen nach dem älteren HomeMatic gleicht. HM-IP Geräte können aktuell (Anfang 2019) nur über eine systemeigene Zentrale CCU2 (als physisch vorhandenes Interface) und die HomeMatic-Module in FHEM integriert werden, sind in FHEM jedoch &#039;&#039;&#039;nicht&#039;&#039;&#039; unmittelbar als Homematic-Geräte ansprechbar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Dezember 2018 ==&lt;br /&gt;
===HomeMatic Heizungsregler Uhrzeit einstellen===&lt;br /&gt;
HomeMatic Thermostate / Heizungsregler  wie der HM-CC-TC der der HM-TC-IT-WM-W-EU etc. synchronisieren ihre Uhrzeit täglich etwa gegen Mitternacht mit der Zentrale. Man kann dieses Update aber jederzeit erzingen durch den Befehl  &lt;br /&gt;
 set &amp;lt;DEVICENAME&amp;gt; sysTime&lt;br /&gt;
&lt;br /&gt;
== November 2018 ==&lt;br /&gt;
===HomeMatic Heizunggeräte gebraucht gekauft===&lt;br /&gt;
HomeMatic Heizunggeräte gebraucht gekauft und jetzt lassen sie sich nicht richtig peeren oder pairen?&lt;br /&gt;
Das Problem ist meistens, dass die Geräte noch mit der Zentrale des Verkäufers gepairt oder mit anderen Geräten gepeert sind. &lt;br /&gt;
Mit Thermostaten wie der [[HM-CC-TC Funk-Wandthermostat]] oder der Nachfolger [[HM-TC-IT-WM-W-EU Funk-Wandthermostat AP]] können mit Ventilantrieben wie dem [[HM-CC-VD Funk-Stellantrieb]] nur gepeert werden, wenn &lt;br /&gt;
* die Thermostaten nicht selbst schon mit einer Zentrale (im FHEM Umfeld also z.b. einer [[Virtueller Controller VCCU]] oder [[HM-[[HM-CFG-LAN LAN Konfigurations-Adapter]] oder ähnliches) gepairt wurden&lt;br /&gt;
* die Ventilantriebe nicht selbst mit einer Zentrale gepairt oder mit einem Thermostaten gepeert wurden.&lt;br /&gt;
&lt;br /&gt;
Es ist daher sinnvoll zuerst alle Geräte zurückzusetzen, da viele Verkäufer dies vergessen. Wie das geht steht in der Anleitung.&lt;br /&gt;
Beispiele:&lt;br /&gt;
* HM-CC-TC -&amp;gt; MENU lange drücken, dann Sonderfunktion &amp;quot;RES&amp;quot; anwählen, mit OK-Taste bestätigen&lt;br /&gt;
* HM-CC-VD -&amp;gt; Anlernknopf 10 Sekunden lang drücken. Der Antrieb geht in Zustand A2, nachdem er das Ventil 1x auf- und zugefahren hat geht er in A3, Knopf nochmals drücken.&lt;br /&gt;
* HM-TC-IT-WM-W-EU -&amp;gt; Batterien entfernen, alle 3 Tasten gedrückt halten, Batterien einlegen, warten bis &amp;quot;rES&amp;quot; im Display erscheint, Tasten loslassen&lt;br /&gt;
&lt;br /&gt;
== Januar 2018 ==&lt;br /&gt;
=== at absolutem Datum ===&lt;br /&gt;
Vielen ist nicht klar, dass man mit dem &amp;quot;define … at&amp;quot; auch einfach ein absolutes Datum definieren kann (obwohl es in der Commandref steht). Anstatt umfangreicher DOIF Konstrukte oder &amp;quot;define … at&amp;quot; die täglich ablaufen und testen ob der gewünschte Tag schon erreicht ist, geht auch ein einfaches:&lt;br /&gt;
&lt;br /&gt;
 define Licht_Neujahr_2019 at 2019-01-03T06:01:01 set Licht1 on&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Allgemein: &lt;br /&gt;
 define &amp;lt;name&amp;gt; at [&amp;lt;datespec&amp;gt;] &amp;lt;command&amp;gt; &lt;br /&gt;
wobei &amp;lt;datespec&amp;gt; =  (YYYY-MM-DDTHH:MM:SS) (also in ISO8601 Schreibweise).&lt;br /&gt;
Wichtig ist die Angabe mit Sekunden, die nicht weggelassen werden können.&lt;br /&gt;
&lt;br /&gt;
== Dezember 2017 ==&lt;br /&gt;
=== perl Version ===&lt;br /&gt;
Gelegentlich taucht die Frage auf, welche perl Version zum Betrieb von FHEM minimal erforderlich ist. Bedauerlicherweise lässt sich das aber aktuell nicht definitiv bestimmen.&lt;br /&gt;
Rudolf König testet zur Zeit (Ende 2017) mit v5.16 (5 Jahre alt) und v5.24 (ca. 1 Jahr alt). &lt;br /&gt;
Sollte sich herausstellen, dass eines seiner Module (vor allem fhem.pl selbst) nicht mit der jeweils &#039;&#039;aktuellen&#039;&#039; perl Version funktioniert, so wird das Modul entsprechend kompatibel gemacht.&lt;br /&gt;
Andererseits verwendet Rudolf König nach eigener Aussage (bewusst) keine Features, die eine höhere Version als perl 5.8.3 (immerhin älter als 13 Jahre) voraussetzen. Tatsächlich zeigen aktuelle Installation auf relativ alten BuffaloLinkstation Systemen, dass FEHM mit perl 5.8.3 prinzipiell lauffähig ist.&lt;br /&gt;
&lt;br /&gt;
Rudolf König prüft als Maintainer von fhem.pl aber nicht, welche Mindestversionen andere Entwickler in Ihren Modulen benötigen. Es ist daher möglich oder sogar wahrscheinlich, das einzelne Module höhere Versionen als 5.8.3 benötigen.&lt;br /&gt;
&lt;br /&gt;
Es gibt aktuell keinen Weg, die Mindestanforderungen z.b. automatisiert zu ermitteln.&lt;br /&gt;
&lt;br /&gt;
== November 2017 ==&lt;br /&gt;
=== Grundlastmodul ===&lt;br /&gt;
Mit einem Grundlastmodul ist es möglich, LED Leuchtmittel an einem Schaltaktor / Dimmer zu betreiben. Dies ist bei manchen nicht möglich, da einige LEDs nachglimmen oder flackern. Das Grundlastmodul, welches parallel zum Verbraucher angeschlossen wird, kann diesen Effekt aufheben, da ein Verbraucher mit ohmscher Last simuliert wird.&lt;br /&gt;
Das Modul ermöglicht eventuell auch den Betrieb eines [[RSL 2-Draht Einbauschalter]]s, der bei LED Leuchtmitteln ansonsten nicht eingesetzt werden kann, da zum Betrieb eine Restspannung über den Verbraucher benötigt, der bei LED Lampen mit Vorschaltgerät nicht vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
In Frage kommt z.b. ein Eltako ELTA Grundlastelement GLE / PTC, das ca. 5-8 Euro kostet.&lt;br /&gt;
Technisch handelt sich dabei um einen PTC, also einen Widerstand mit positivem Temperaturkoeffizient, d.h. der Widerstand sinkt deutlich, wenn das Element kälter wird. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das genannte Grundlastelement hat folgende Daten: &lt;br /&gt;
 Kaltwiderstand: 3500 Ω&lt;br /&gt;
 Einschaltstrom bei 230 V: 65 mA (ca. 15 W)&lt;br /&gt;
 Verlustleistung nach 60 Sekunden: 0,65 W &lt;br /&gt;
&lt;br /&gt;
Im kalten Zustand lässt der PTC bei 230 Volt einen Strom von ca. 0,065 Ampere zu.  &lt;br /&gt;
Das reicht, um von Schaltaktoren, Freischaltern, Dimmern etc. als die erforderliche Grundlast erkannt zu werden.&lt;br /&gt;
Wird der Stromkreis eingeschaltet, fliesst auch tatsächlich ström durch den PTC, der sich dadurch schnell erwärmt (das Element wird tatsächlich sogar relativ heiss). Dadurch steigt steigt der Widerstand auf ca 50000-60000 Ohm an und die Verlustleistung sinkt auf unter 1 Watt. Der PTC regelt sich jetzt selber auf eine bestimmte Temperatur und Widerstand ein.&lt;br /&gt;
&lt;br /&gt;
Wird ausgeschaltet, so fliest über den PTC immer noch ein kleiner Reststrom von ca 0,005 Ampere, der als Grundlast reicht, um z.b. Spannungen abzubauen, die LEDs nachflackern lassen, dieser steigt mit Erkalten rasch an, dadurch werden auch Schalter wie die [[RSL 2-Draht Einbauschalter]] mit genug Strom versorgt.&lt;br /&gt;
&lt;br /&gt;
Theoretisch kann also auch ein PTC mit diesen Werten und einer Leistung von ca. 20 Watt selbst gebaut werden, der Preis der Einzelteile liegt bei unter 2 Euro. Das Eltako Element ist bereits mit Isolierung und Anschlussleitungen versehen, mit eigner Arbeitszeit ist der Preisvorteil beim Selberbau also gering.&lt;br /&gt;
&lt;br /&gt;
== Februar 2017 ==&lt;br /&gt;
=== at Zeiten ===&lt;br /&gt;
 at 03:00      -&amp;gt;  1x um 3 Uhr (wann immer das nächste mal 3 Uhr ist, ggf. erst morgen)&lt;br /&gt;
 at *03:00     -&amp;gt;  jeden Tag um 3 Uhr&lt;br /&gt;
 at +03:00     -&amp;gt;  in 3 Stunden&lt;br /&gt;
 at +*03:00    -&amp;gt;  in 3 Stunden und dann alle 3 Stunden erneut&lt;br /&gt;
 at +*{4}03:00 -&amp;gt;  in 3 Stunden und dann alle 3 Stunden erneut, aber nur 4x ausführen.&lt;br /&gt;
&lt;br /&gt;
== Oktober 2016 ==&lt;br /&gt;
=== Grundlagen der Heizungssteuerung ===&lt;br /&gt;
Der Artikel [[Grundlagen der Heizungssteuerung]] soll einen zentralen Einstiegspunkt und eine Übersicht der Möglichkeiten insb. für Neulinge in FHEM bieten.&lt;br /&gt;
&lt;br /&gt;
=== Batterieüberwachung für Geräte ohne Batteriestatus ===&lt;br /&gt;
Es gibt Möglichkeiten um auch bei Geräten ohne Batteriestatus-Reading eine schwache Batterie erkennen zu können: [[Batterie%C3%BCberwachung#Ger.C3.A4te_ohne_Batteriestatus|Geräte ohne Batteriestatus]].&lt;br /&gt;
&lt;br /&gt;
== Mai 2016 ==&lt;br /&gt;
=== DbLog reparieren ===&lt;br /&gt;
Sollte ein fhem mit DbLog Probleme machen, oder auf der SQL-Konsole Fehler werfen, so ist eine Reparatur der DB fällig. Das ist auf der Kommandozeile verhältnismäßig einfach möglich und wird im Kapitel [[DbLog#Datenbank reparieren]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
=== DbLog bearbeiten ===&lt;br /&gt;
Unerwünschte Einträge in den Loggings treten immer wieder mal auf. Wie man dies in einer Datenbank korrigiert, dazu gibt das Kapitel [[DbLog#Bearbeitung von Datenbank-Einträgen]] eine erste Einführung.&lt;br /&gt;
&lt;br /&gt;
=== Pollenflug ===&lt;br /&gt;
In dieser schönen Jahreszeit werden manche durch Heuschnupfen geplagt. Auf der Seite [[Pollenflug]] wird beschrieben, wie man eine Pollenvorhersage in fhem einbinden kann - hilft zwar nicht gegen das Niesen, ist aber trotzdem ganz informativ... ;-)&lt;br /&gt;
&lt;br /&gt;
== April 2016 ==&lt;br /&gt;
=== HomeMatic und VCCU ===&lt;br /&gt;
HomeMatic Nutzer sollten unbedingt eine [[Virtueller Controller VCCU|VCCU]] einrichten und nutzen.&lt;br /&gt;
Die Einrichtung ist unaufwändig und schafft jede Menge Vorteile, auch beim Einsetzen nur einer Schnittstelle wie z.B. einem [[HM-CFG-LAN LAN Konfigurations-Adapter]]. Auch die nachträglich Einrichtung ist problemlos, sofern vorher nur ein I/O Gerät (&amp;quot;Funkschnittstelle&amp;quot;) verwendet wurde.&lt;br /&gt;
&lt;br /&gt;
== Dezember 2015 ==&lt;br /&gt;
===defmod===&lt;br /&gt;
In vielen Fällen will man mit einer Aktion gleichzeitig eine andere Aktion bereits für später festlegen, z.b. nach Einschalten  einer Heizung durch einen Bewegungsmelder diese eine Stunde später wieder ausschalten.&lt;br /&gt;
&lt;br /&gt;
Dies kann z.B. durch ein Konstrukt dieser Art erledigt werden:&lt;br /&gt;
:&amp;lt;code&amp;gt;define Heizung_an notify Bewegung set HZG_WZ desired-temp 22 ;; define reset_Heizung at +01:00:00 set HZG_WZ desired-temp 16&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nachteilig ist, dass bei einer weiteren Auslösung des Bewegungsmelders die Heizzeit nicht verlängert wird, da eine Neudefinition von &#039;&#039;&#039;reset_Heizung&#039;&#039;&#039; mit der Fehlermeldung &#039;&#039;&#039;reset_Heizung already exists, delete it first&#039;&#039;&#039; quittiert wird. Die Lösung bisher war, das alte &#039;&#039;&#039;reset_Heizung&#039;&#039;&#039; zunächst zu löschen und dann erneut mit neuem Zeitstempel anzulegen:&lt;br /&gt;
:&amp;lt;code&amp;gt;define Heizung_an notify Bewegung set HZG_WZ desired-temp 22 ;; delete reset_Heizung ;; define reset_Heizung at +01:00:00 set HZG_WZ desired-temp 16&amp;lt;/code&amp;gt;&lt;br /&gt;
Aber auch dieses umständliche Konstrukt hat noch einen Nachteil: Es erzeugt bei einer ersten Auslösung eine Fehlermeldung, weil &#039;&#039;&#039;reset_Heizung&#039;&#039;&#039; noch nicht exisitert und daher nicht gelöscht werden kann.  Dies liesse sich abfangen, was die Konstruktion weiter verkomplizieren würde.&lt;br /&gt;
&lt;br /&gt;
Daher hat Rudolf König mit FHEM 5.6 den neuen Befehel &amp;quot;defmod&amp;quot; eingeführt, der ein noch nicht existieredendes define neu anlegt (wie &amp;quot;define&amp;quot;), eine bereits vorhandenes aber direkt ändert (wie &amp;quot;delete&amp;quot; und danach &amp;quot;define&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Dadurch lässt sich verkürzt schreiben:&lt;br /&gt;
:&amp;lt;code&amp;gt;define Heizung_an notify Bewegung set HZG_WZ desired-temp 22 ;; defmod reset_Heizung at +01:00:00 set HZG_WZ desired-temp 16&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== April 2015 ==&lt;br /&gt;
===FS20 Timer===&lt;br /&gt;
FS20 Aktoren beherrschen zwei verschiedene Timer-Methoden.&lt;br /&gt;
&lt;br /&gt;
Angenommen ein FS20 Device heisse &amp;quot;Lampe&amp;quot; und sei z.B. ein [[FS20_SU_Unterputz-Funk-Schalter|FS20 SU]] (Unterputzschalter), dann kann man mit FHEM sowohl &lt;br /&gt;
:&amp;lt;code&amp;gt; set Lampe on-for-timer 30&amp;lt;/code&amp;gt;&lt;br /&gt;
verwenden um die Lampe 30 Sekunden einzuschalten, aber auch zunächst in den FS20 SU die maximale Einschaltdauer einprogrammieren:&lt;br /&gt;
:&amp;lt;code&amp;gt; set Lampe timer 30&amp;lt;/code&amp;gt;&lt;br /&gt;
Dannach wird jedes normale&lt;br /&gt;
:&amp;lt;code&amp;gt; set Lampe on&amp;lt;/code&amp;gt;&lt;br /&gt;
die Lampe für nur 30 Sekunden einschalten.&lt;br /&gt;
&lt;br /&gt;
Als Timerwerte kommen in beiden Fällen die bekannten [[Trick_der_Woche#FS20_Timerzeiten|128 Sekundenwerte]] von 0,25 Sekunden bis Etwa 4,5 Stunden in Frage.&lt;br /&gt;
&lt;br /&gt;
Es ist offenbar nicht bei allen Aktoren möglich einen einmal eingestellten Timer zu löschen, neue Werte eingeben aber sehr wohl.&lt;br /&gt;
&lt;br /&gt;
Mehr hier: [[FS20_Allgemein#Gerätetimer setzen / löschen|FS20 timer]].&lt;br /&gt;
&lt;br /&gt;
== Februar 2015 ==&lt;br /&gt;
=== 1-wire am GPIO4-Port des RaspberryPi funktioniert nicht mehr nach Systemupdate ===&lt;br /&gt;
Es kann passieren, dass nach einem Systemupdate (apt-get update oder apt-get dist-upgrade) die 1-wire-Geräte am GPIO4-Port plötzlich nicht mehr funktionieren. Eine Problemlösung dazu ist im Artikel &amp;quot;[[Raspberry Pi und 1-Wire#1-wire am GPIO4-Port funktioniert nicht mehr nach Systemupdate]]&amp;quot; beschrieben.&lt;br /&gt;
&lt;br /&gt;
=== Backup der Konfiguration (fhem.cfg und fhem.state) bei jedem &amp;quot;save&amp;quot; ===&lt;br /&gt;
Der nachfolgende Codeschnipsel erstellt bei jedem &amp;quot;save&amp;quot; eine Kopie der aktuellen [[Konfiguration]] (fhem.cfg und fhem.state) in ein Verzeichnis &amp;quot;backup_cfg-state&amp;quot; welches unter /opt/fhem/ zu finden ist. Somit kann bei einem Fehler jederzeit auf den letzten Stand zurückgegangen werden.&lt;br /&gt;
Zuerst ins FHEM Befehlsfeld den folgenden Befehl eingeben:&lt;br /&gt;
:&amp;lt;code&amp;gt;{ `mkdir backup_cfg-state` } &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach folgendes [[notify]] anlegen:&lt;br /&gt;
 define backupCfg notify global:SAVE {\&lt;br /&gt;
 my $now = TimeNow();; $now =~ s/ /_/g;; \&lt;br /&gt;
 `cp $attr{global}{configfile} ./backup_cfg-state/fhem.cfg.$now`;;\&lt;br /&gt;
 `cp $attr{global}{statefile} ./backup_cfg-state/fhem.state.$now`;;\&lt;br /&gt;
 } &lt;br /&gt;
&lt;br /&gt;
Quelle: {{Link2Forum|Topic=30873|Message=234412|LinkText=FHEM-Forum}}&lt;br /&gt;
&lt;br /&gt;
== Januar 2015 ==&lt;br /&gt;
=== CUL &amp;amp; CO über Serial ID-einbinden ===&lt;br /&gt;
Bei mehreren USB-Geräten kann es vorkommen, dass sie vertauscht werden z.B. &#039;&#039;/dev/ttyUSB0&#039;&#039; zu&#039;&#039; /dev/ttyUSB1&#039;&#039; oder &#039;&#039;/dev/ttyACM0&#039;&#039; zu &#039;&#039;/dev/ttyACM1&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Um dies zu umgehen, kann man sie über ihre Serial-ID in FHEM einbinden.&lt;br /&gt;
&lt;br /&gt;
Dieser Befehl zeigt die Serial-ID:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;ls -l /dev/serial/by-id&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier die Beispielausgabe eines CUL868, JeeLink, RFXtrx und eines CUL433&lt;br /&gt;
&lt;br /&gt;
 user@xxxx:~# ls -l /dev/serial/by-id&lt;br /&gt;
 lrwxrwxrwx 1 root root 13 Jan  9 23:34 usb-busware.de_CUL868-if00 -&amp;gt; ../../ttyACM0&lt;br /&gt;
 lrwxrwxrwx 1 root root 13 Jan  9 13:26 usb-FTDI_FT232R_USB_UART_A901RQ9F-if00-port0-&amp;gt; ../../ttyUSB0&lt;br /&gt;
 lrwxrwxrwx 1 root root 13 Jan  9 13:26 usb-RFXCOM_RFXtrx433_A1WZWL5Y-if00-port0-&amp;gt; ../../ttyUSB1&lt;br /&gt;
 lrwxrwxrwx 1 root root 13 Jan  9 21:29 usb-busware.de_CUL433-if00 -&amp;gt; ../../ttyACM1 &lt;br /&gt;
&lt;br /&gt;
Damit lässt sich folgende Definition erstellen:&lt;br /&gt;
&lt;br /&gt;
z.B. für einen CUL868&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define CUL868 CUL /dev/serial/by-id/usb-busware.de_CUL868-if00@9600 1134&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oder einen JeeLink&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define Jeelink JeeLink /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A901RQ9F-if00-port0@57600&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Einschränkung:&#039;&#039;&#039; Bei CULs von Busware lassen sich nur CUL433 und CUL868 unterscheiden. Zwei CUL868 haben z.B. immer die gleiche Serial-ID.&lt;br /&gt;
&lt;br /&gt;
=== HM LAN Konfig-Adapter Antenne verbessern===&lt;br /&gt;
Die Antenne des [[HM-CFG-LAN LAN Konfigurations-Adapter]] kann man mit etwas Bastelgeschick verlängern um den Empfang zu verbessern. &lt;br /&gt;
&lt;br /&gt;
Sinnvoll ist die Verlängerung auf 1/2 Lambda  (868MHz = 17,27 cm) oder gar 1 Lambda.&lt;br /&gt;
1 Lambda Antennen haben starke Richtwirkung in Form eines gedachten Zylinders, dessen Mittelachse die Antenne ist.&lt;br /&gt;
D.h., Alles was sich in Richtung des Anfangs und des Endes des Antennedrahtes befindet, hat schlechteren Empfang als mit einer kurzen Antenne. Daher muss man die Antenne ggf. genauer ausrichten.&lt;br /&gt;
&lt;br /&gt;
Anleitungen dazu werden an verschiedenen Stellen veröffentlicht, z.B. in &lt;br /&gt;
[http://www.ip-symcon.de/forum/threads/18411-Umbau-HM-LAN-Adapter-auf-Lambda-1-2-Dipol-Antenne diesem Beitrag] im IP-Symcon Forum (anders als der Namen der Anleitung vermuten lässt, liegt hier kein Dipol vor, sondern eine &amp;quot;normale&amp;quot; 1 Lambda Antenne.)&lt;br /&gt;
&lt;br /&gt;
Prinzipiell so dünnen Draht wie möglich verwenden.&lt;br /&gt;
&lt;br /&gt;
Wer noch mehr rausholen will, kann auch zusätzlichen Aufwand betreiben und die Antenne etwas von der Elektronik entfernen, die nämlich Störstrahlung in die Antenne einkoppelt. Oder eine Groundplane bauen.&lt;br /&gt;
Ein Anleitung für die CCU (analog auch für den HM LAN Konfig-Adapter einsetzbar) gibt es [http://www.techwriter.de/beispiel/funkeige.htm hier].&lt;br /&gt;
&lt;br /&gt;
== Dezember 2014 ==&lt;br /&gt;
=== FHT80TF als &amp;quot;Prüfsender&amp;quot; einsetzen  ===&lt;br /&gt;
Da der [[FHT80TF-2]] günstig ist und seinen Zustand ca. alle zwei Minuten sendet, kann er gut zum Ermitteln der Funklage von [[SlowRF]] Komponenten genutzt werden, auch wenn diese nicht senden. Den RSSI einer FS20 Schaltsteckdose kann man z.B. nicht wissen, da die Dose nur ein Empfänger ist. Wenn eine Dose nicht gut funktioniert und man den Verdacht hat, dass sie funktechnisch ungünstig liegt, kann man einen [[FHT80TF-2]] neben die Steckdose legen und man bekommt nach zwei Minuten einen Wert, der (trotz umgekehrter Funkrichtung) gut genug ist, um einem Hinweise zu geben.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== November 2014 ==&lt;br /&gt;
=== FS20 Adressschema und die Rolle des Hauscodes  ===&lt;br /&gt;
[[FS20_Allgemein#FS20_Adressierungsschema_.28Vorschlag.29]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Oktober 2014 ==&lt;br /&gt;
=== Aktor für Wanddosen ohne Nulleiter  ===&lt;br /&gt;
Es gibt es viele Aktoren die man in Einbaudosen hinter Schaltern einbauen kann. Oft scheitert deren Nutzung aber daran, dass in vielen Elektroinstalltionen in der Einbaudose eines (Licht)schalters kein Neutralleiter (Nulleiter) verlegt ist, den die meisten Aktoren zur eigenen Stromversorgung brauchen. Hier kann der [[RSL 2-Draht Einbauschalter]] helfen, der auch ohne Neutraleiter funktioniert und kompatibel zu InterTechno ist. Er lässt sich z.B. mit einem CUL(433) schalten. Problematisch ist damit allerdings das Schalten von LED Lampen.&lt;br /&gt;
&lt;br /&gt;
== August 2014 ==&lt;br /&gt;
=== Perl-Skripte Online testen  ===&lt;br /&gt;
Im Internet existieren Webseiten auf denen man Perl-Code online testen kann. Beispielsweise auf [http://www.tutorialspoint.com/execute_perl_online.php codingground] kann man Code zum Testen eingeben und die Auswirkungen betrachten. Dies eignet sich zur schnellen Fehleranalyse oder um Perl zu lernen. Natürlich lassen sich keine FHEM-Besonderheiten nutzen.&lt;br /&gt;
&lt;br /&gt;
== Juli 2014 ==&lt;br /&gt;
=== Funklast reduzieren===&lt;br /&gt;
Bewegungsmelder erzeugen in der Regel eine recht hohe Funklast, wenn sie oft ausgelöst werden, also z.B. Licht in einem Zimmer schalten sollen.&lt;br /&gt;
&lt;br /&gt;
Konstruktionen der Art:&lt;br /&gt;
:&amp;lt;code&amp;gt;define FlurLicht notify Bewegungsmelder_Flur:motion:.* set Licht_Flur on-for-timer 256&amp;lt;/code&amp;gt;&lt;br /&gt;
haben daher den Nachteil bei viel Bewegung im Flur und je nach Einstellung des Sendeabstandes des Bewegungsmelders mindestens alle 120 Sekunde oder öfter ein &lt;br /&gt;
:&amp;lt;code&amp;gt;on-for-timer 256&amp;lt;/code&amp;gt;&lt;br /&gt;
zu senden. Das erzeugt eine hohe Funklast, speziell wenn der Aktor ein SlowRF Gerät ist (z.B. FS20 Unterputzschalter).&lt;br /&gt;
In solchen Fällen kann es helfen, nur dann einen Befehl zu senden, wenn das Licht nicht schon an ist:&lt;br /&gt;
:&amp;lt;code&amp;gt;define FlurLicht notify Bewegungsmelder_Flur:motion:.* { if (Value(&amp;quot;Licht_Flur&amp;quot;) eq &amp;quot;off&amp;quot;) { fhem (&amp;quot;set Licht_Flur1 on-for-timer 256&amp;quot;) } }&amp;lt;/code&amp;gt;&lt;br /&gt;
Nachteilig ist aber, dass eine Auslösung innerhalb 256 Sekunden die Einschaltzeit nicht verlängert. Dies kann man umgehen, indem man nicht on-for-timer verwendet, sondern den Aktor selber verzögert auschaltet und bei weiteren Auslösungen nur die Verzögerung erneut anlegt:&lt;br /&gt;
:&amp;lt;code&amp;gt;define FlurLicht notify Bewegungsmelder_Flur:motion:.* { if (Value(&amp;quot;Licht_Flur1&amp;quot;) eq &amp;quot;off&amp;quot;) { fhem (&amp;quot;set Licht_Flur on ;; define FlurLicht_aus at +00:04:16 set Licht_Flur off&amp;quot;) } else { fhem (&amp;quot;delete FlurLicht_aus ;; define FlurLicht_aus at +00:04:16 set Licht_Flur off&amp;quot;) }}&amp;lt;/code&amp;gt;&lt;br /&gt;
Durch den relativ neuen Befehl &amp;quot;defmod&amp;quot; kann ausserdem das Löschen und neu Anlegen zusammengefasst werden, sieh Tipp Dezember 2015&lt;br /&gt;
&lt;br /&gt;
== Juni 2014 ==&lt;br /&gt;
=== Batteriestatus bei HomeMatic Devices aktivieren===&lt;br /&gt;
Zumindest einige (wenn nicht alle) batteriegespeisten HM-Geräte können Batteriemeldungen senden, tun dies in der normalen Konfiguration aber nicht.&lt;br /&gt;
Dazu muss das Register cyclicInfoMsg auf on gesetzt werden. &lt;br /&gt;
&lt;br /&gt;
Wie man das macht steht z.B. hier&lt;br /&gt;
[[HM-SEC-SC_Tür-Fensterkontakt#Batteriestatus_aktivieren]]&lt;br /&gt;
und hier&lt;br /&gt;
[[HomeMatic_Type_ThreeState]]&lt;br /&gt;
&lt;br /&gt;
== Mai 2014 ==&lt;br /&gt;
=== Dummywert mit aktueller Uhrzeit versehen in anderen Dummy kopieren===&lt;br /&gt;
Der Inhalt von Dummy1 soll erweitert um  Uhrzeit und Datum in Dummy2 kopiert werden (z.B. um die Urzeit der letzten Auslösung einer Alarmanlage anzuzeigen)&lt;br /&gt;
:&amp;lt;code&amp;gt;{ fhem(&amp;quot;set dummy2 &amp;quot; . (Value(&amp;quot;Dummy1&amp;quot;).&amp;quot; &amp;quot;.TimeNow()) )  } &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Zwei Dummywerte in einen anderen Dummy kopieren ===&lt;br /&gt;
Der String in Dummy1 soll um den String in Dummy2 erweitert und nach Dummy3 kopiert werden:&lt;br /&gt;
:&amp;lt;code&amp;gt;{ fhem(&amp;quot;set Dummy3 &amp;quot;.(Value(&amp;quot;Dummy1&amp;quot;)+Value(&amp;quot;Dummy2&amp;quot;))) } &amp;lt;/code&amp;gt;&lt;br /&gt;
(Achtung: &amp;quot;+&amp;quot;  ist Zahlen addieren, &amp;quot;.&amp;quot; ist String konkatenieren / verketten)&lt;br /&gt;
&lt;br /&gt;
== April 2014==&lt;br /&gt;
=== Code sparen ===&lt;br /&gt;
Wer Definitionen wie die aus dem März zum [[Trick der Woche#Zuverlässigkeit von FS20 Schaltungen erhöhen|Abfangen von Fehlbedienungen]] verwendet, kann durch eine ELSE Erweiterung auch gleich das Auschalten erledigen.&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_TV_on notify TV { if (&amp;quot;$EVENT&amp;quot; eq &amp;quot;on&amp;quot; || &amp;quot;$EVENT&amp;quot; eq &amp;quot;dimup&amp;quot;) { fhem(&amp;quot;set TV on&amp;quot;) } else { fhem(&amp;quot;set TV off&amp;quot;) } }&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hierdurch schaltet ON oder versehentlich zu langes Drücken (also DIMUP) den Fernseher ein, jeder &#039;&#039;andere&#039;&#039; Tastendruck (also insbesondere die OFF Taste oder zu langes Drücken der OFF Taste -&amp;gt; DIMDOWN) den Fernseher aus.&lt;br /&gt;
&lt;br /&gt;
Voraussetzung ist, dass die Fernbedienung standardkonfiguriert ist, siehe auch nächster Tip.&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration eines FS20 Senders prüfen ===&lt;br /&gt;
Gelegentlich reagieren bestimmte notifys nicht, die von Sendern (Fernbedienungen, Sensoren oder Schaltern) ausgelöst werden sollen. Speziell bei FS20 aber auch bei HomeMatic kann das daran liegen, dass der Sender nicht sendet was man denkt. So gut wie alle FS20 Sender kennen nämlich nicht nur ON und OFF, sondern über ein Dutzend Schaltzustände. Dimmen ist einem noch hinreichend bewusst, es gibt aber auch exotische Dinge wie  Ein-für-Zeitdauer, Ein-auf-alte-Helligkeit, Aus-für-Zeitdauer (nur FS20), Ein-für-Zeitdauer-dannach-alter-Zustand und vieles mehr.&lt;br /&gt;
&lt;br /&gt;
Was also ein Infrarot-Bewegungsmelder bei Auslösung sendet und auch was eine Fernbedienungstaste sendet ist einstellbar. Wenn jetzt zum Beispiel an einer Fernbedienung auf Tastendruck nicht ON sondern Ein-für-Zeitdauer (ON-FOR-TIMER) gesendet wird, wird&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_TV_on notify TVFB:on set TV on&amp;lt;/code&amp;gt;&lt;br /&gt;
seltsamerweise nicht auslösen, obwohl die richtige Taste (und diese auch nicht zu lang) gedrückt wurde.&lt;br /&gt;
&lt;br /&gt;
Auch wenn man sich sicher ist, das Richtige in die Fernbedienung/Sensoren einprogramiert zu haben, ist ein einfacher Test immer, dies mit&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_TV notify TVFB set TV on&amp;lt;/code&amp;gt;&lt;br /&gt;
zu prüfen. Dieses notify löst immer aus, wenn &amp;quot;TVFB&amp;quot;  &#039;&#039;irgendetwas&#039;&#039; sendet, egal was. (Beachte: Man kann dann den Fernseher aber nicht mehr ausschalten, da auch die Austaste das notify auslöst und zum TV-Aktor nur &amp;quot;on&amp;quot; sendet). &lt;br /&gt;
&lt;br /&gt;
Geht die Schaltung jetzt (kann man den Fernseher also jetzt EINschalten), liegt der Verdacht nahe, dass die Konfiguration des Senders / Sensors anders ist, als man denkt. Das Logfile, der EventMonitor oder ein Beobachtung von FHEM per Telnet mittels &amp;quot;inform&amp;quot; gibt Aufschluss, welcher Befehl tatsächlich empfangen wurde.&lt;br /&gt;
&lt;br /&gt;
== März 2014==&lt;br /&gt;
=== Zuverlässigkeit von FS20 Schaltungen erhöhen ===&lt;br /&gt;
FS20 Fernbedienungen senden bei Tastendrücken von mehr als 0,4 Sekunden anstatt ON bzw. OFF DIMUP bzw DIMDOWN.(Auch einige FBs anderer Systeme verhalten sich ähnlich)&lt;br /&gt;
&lt;br /&gt;
Das führt gelegentlich zu allgemein schlechter Bedienbarkeit (und schlechtem WAF), da 0,4 Sekunden relativ kurz ist und gerne aus versehen länger gedrückt wird. Das ist vor allem problematisch, wenn etwas geschaltet werden soll, was keinen Dimmer hat oder Dimmen nicht unterstützt.&lt;br /&gt;
&lt;br /&gt;
Eine Konfiguration wie &lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_TV_on notify TVFB:on set TV on&amp;lt;/code&amp;gt;&lt;br /&gt;
hat also dann den Nachteil, dass bei versehentlich zu langem Tastendruck auf die Fernbedienung das TV nicht angeht. Da die meisten Nutzer unbewusst dazu neigen, bei Misserfolg die selbe Taste erneut aber länger zu drücken (was erneut keinen Erfolg zeigt) ist Frustration zu erwarten.&lt;br /&gt;
&lt;br /&gt;
Es kann daher speziell bei nicht dimmbaren Aktoren von Vorteil sein, auch dimmen abzufangen, z.B. durch eine zweite zusätzliche Definition:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_TV_dimup notify TVFB:dimup set TV on&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es ist in der Regel einfacher, einige dieser zusätzlichen Definitionen einzufügen, als allen Bedienern des Systems zu erklären, dass man keinesfalls länger als 0,4 Sekunden drücken darf.&lt;br /&gt;
&lt;br /&gt;
Alternativ kann man auch beide Befehle in einer Definition durch Perlbefehle {} abfangen:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_TV_on notify TVFB { if (&amp;quot;$EVENT&amp;quot; eq &amp;quot;on&amp;quot; || &amp;quot;$EVENT&amp;quot; eq &amp;quot;dimup&amp;quot;) { fhem(&amp;quot;set TV on&amp;quot;) }}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Allerdings hat dies den Nachteil, dass jedes Event dieses define durchläuft und erst später geprüft wird, ob das Event überhaupt irgendetwas auslöst. &lt;br /&gt;
Z.B. wird&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_TV_on notify TVFB ...&amp;lt;/code&amp;gt; &lt;br /&gt;
auch durch TVFB off ausgelöst (oder unter bestimmten Bedungen sogar duch alle Events), nur um dann nach dem Perl Test festzustellen, dass doch nichts getan werden soll.&lt;br /&gt;
&lt;br /&gt;
Ressourcenschonender ist daher:&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_TV_on notify TVFB:on|TVFB:dimup set TV on &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Andere Möglichkeiten vergleiche: [[Trick der Woche#notify durch mehrere Ereignisse auslösen lassen|Notify durch mehrere Ereignisse auslösen lassen]] und [[Trick der Woche#Performance_von_Notifys|Performance von Notifys]]&lt;br /&gt;
&lt;br /&gt;
== Februar 2014==&lt;br /&gt;
=== Sequence nutzen ===&lt;br /&gt;
Man kann Aktionen statt mit einem Tastedruck auch mit einer Sequenz von Tastendücken auslösen. Das Format des Befehle ist:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define &amp;lt;name&amp;gt; sequence &amp;lt;re1&amp;gt; &amp;lt;timeout1&amp;gt; &amp;lt;re2&amp;gt; [&amp;lt;timeout2&amp;gt; &amp;lt;re3&amp;gt; ...] &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
wobei &amp;lt;re1&amp;gt; ...&amp;lt;re_n&amp;gt; die Aktionen sind und &amp;lt;timeout_n&amp;gt; der maximale Abstand der Tastendrücke in Sekunden.&lt;br /&gt;
&lt;br /&gt;
Angenommen, man wolle z.B. eine Lampe dann anschalten, wenn man zuerst Taste1 EIN, dann Taste2 AUS und dann wieder Taste1 EIN einer Fernbedienung drückt, könnte das konkret so aussehen:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define MeineLampenSequenz1 sequence Btn1:on 0.5 Btn2:off 0.5 Btn1:on&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zwischen jedem der Tastendrücke darf eine halbe Sekunde Abstand sein. Diese Definition selbst löst die Lampe nicht aus, sondern definiert nur wie die Sequenz aussehen soll. Um die Lampe bei erfolgreicher Betätigung der Sequenz auch einzuschalten, bedarf es zusätzlich etwas wie:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define MeineLampe notify MeineLampenSequenz1:trigger set Lampe on&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sequence kann man gut nutzen, um mit einer Fernbedienung mehr Funktionen zu schalten als Tasten zur Verfügung stehen. Ebenso könnte man damit simple Codeschlösser für Alarmanlagen bauen, z.B. um eine Anlage auszuschalten, wenn eine bestimmte Abfolge von Tasten gedrückt wird.&lt;br /&gt;
&lt;br /&gt;
Je nach Funksystem nimmt die Zuverlässigkeit aber rasch ab. Angenommen im Bereich FS20 (das System ist etwas unzuverlässiger ist als z.B. HomeMatic) seien 95% aller Funktsignale ungestört übertragbar, dann würden in der Praxis von 100 Tastendrücken an einer Fernbedienung 95x Erfolg zeigen und 5x fehlschlagen; das ist sicher tolerabel. &lt;br /&gt;
&lt;br /&gt;
Bei einer Sequenzlänge von nur 4 Tasten würde die kombinierte Erfolgsquote der Sequenz jedoch nur noch ca. 80% sein, zum Ausschalten einer Alarmanlage vermutlich bereits unpraktisch.&lt;br /&gt;
&lt;br /&gt;
== Januar 2014==&lt;br /&gt;
===isday===&lt;br /&gt;
Bekanntlich kann man  mit &amp;quot;isday&amp;quot; leicht testen ob es draussen hell ist oder nicht. isday ist eine Funktion des (automatisch geladenen) Moduls [[SUNRISE_EL]], das auch sunset und sunrise enthält.&lt;br /&gt;
&lt;br /&gt;
Problematisch bei isday ist die fehlende Möglichkeit, Sonnenaufgang und Untergang einzustellen (zumindest wenn man nicht 99_SUNRISE_EL.pm verändern will): isday ist wahr, wenn die Sonne im gegebenen Breitengrad theoretisch sichtbar ist. Wenn örtliche Gegebenheiten (Bebauung, Bäume, Tal etc.) eine Anpassung erfordern, kann man sich auch ein eigenes isday basteln, in dem man sunrise und sunset verwendet und dieses mit getrennten offsets versieht.&lt;br /&gt;
&lt;br /&gt;
Zuerst definiert man sich eine Variable (&amp;quot;dummy&amp;quot;) der anstelle isday eingesetzt werden soll, z.B.:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define Tageslicht dummy &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann wird diese mit sunset und sunrise befüllt:&lt;br /&gt;
&lt;br /&gt;
 define SetDummy1 at *{sunset(-3600)} set Tageslicht hell &lt;br /&gt;
 define SetDummy2 at *{sunrise(+1800)} set Tageslicht dunkel &lt;br /&gt;
&lt;br /&gt;
Jetzt kann für jeden Wechsel ein eigener Offset gewählt werden, im Beispiel 3600 Sekunden vor Sonnenuntergang und 1800 Sekunden nach Sonnenaufgang. Anstatt das Dummy &amp;quot;Tageslicht&amp;quot; mit den Werten &amp;quot;hell/dunkel&amp;quot; zu befüllen, kann natürlich auch 1/0 oder &amp;quot;Tag/Nacht&amp;quot; etc. verwendet werden, je nachdem was bei der Anwendung besser passt.&lt;br /&gt;
&lt;br /&gt;
Für höhere Ansprüche könnte hingegen das [[Twilight]]-Modul verwendet werden, das Dämmerungsstufen kennt.&lt;br /&gt;
&lt;br /&gt;
===Struktur von &amp;quot;else if&amp;quot; Verzweigungen===&lt;br /&gt;
 define ... notify ... {\&lt;br /&gt;
  if ... {\&lt;br /&gt;
   fhem (&amp;quot;... ;; ...&amp;quot;)\&lt;br /&gt;
  }\&lt;br /&gt;
  elsif ... {\&lt;br /&gt;
    fhem (&amp;quot;... ;; ...&amp;quot;)\&lt;br /&gt;
  }\&lt;br /&gt;
  elsif ... {\&lt;br /&gt;
    fhem (&amp;quot;... ;; ...&amp;quot;)\&lt;br /&gt;
  }\&lt;br /&gt;
  else {\&lt;br /&gt;
   if ... {\&lt;br /&gt;
    fhem (&amp;quot;... ;; ...&amp;quot;)\&lt;br /&gt;
  }\&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Achtung: es muss tatsächlich &amp;quot;elsif&amp;quot; heissen und nicht &amp;quot;elseif&amp;quot; oder &amp;quot;else if&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Gilt für Perl Aufrufe. &lt;br /&gt;
Wer aktuell in FHEM neu einsteigt, kann auch den seit 2014 zur Verfügung stehenden FHEM Befehl [[DOIF]] verwenden, der komfortabler ist und zusätzliche Features aufweist.&lt;br /&gt;
&lt;br /&gt;
== Dezember 2013==&lt;br /&gt;
===notify durch mehrere Ereignisse auslösen lassen===&lt;br /&gt;
Bekanntermassen löst&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter …&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
aus, wenn irgendein Ereignis vom Sender &amp;quot;MeinSchalter&amp;quot; eintrifft.&lt;br /&gt;
&lt;br /&gt;
Mit&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:on …&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
wird das notify jedoch nur ausgelöst, wenn dieses Ereignis eine &amp;quot;on&amp;quot; ist.&lt;br /&gt;
Wenn man aber möchte, das z.B. &amp;quot;on&amp;quot; und &amp;quot;off&amp;quot; auslöst (um etwa Dim-Befehle auszuschliessen) kann dies wie folgt erreicht werden:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:(on|off) …&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Klammern sind wichtig, vergleiche eine Lösung, bei der zwei Sender alternativ das notify auslösen können:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:on|MeinAndererSchalter:on …&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Selbstverständlich geht z.B. auch folgendes:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:on|MeinAndererSchalter …&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier wird ausgelöst wenn &amp;quot;MeinSchalter&amp;quot; das Ereignis &amp;quot;on&amp;quot; liefert oder &amp;quot;MeinAndererSchalter&amp;quot; irgendein Ereignis. Beachte hierzu jedoch den Tipp vom Dezember 2020 &amp;quot;Performance von Notifys&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Aktoren über mehrere Funkschnittstellen ansprechen ===&lt;br /&gt;
Falls man mehrere Funkschnittstellen zur Reichweitenverlängerung hat (CUL / CUNO etc), und ein Aktor von beiden Funkschnittstellen in etwa gleich (schlecht) erreichbar ist, mag der Wunsch aufkommen, einen Funkbefehl über beide Schnittstellen auszusenden. Dies ist bei Funkprotokollen möglich, die kein echtes Pairing der Aktoren an die Funkschnittstelle erfordern, also z.B. FS20 oder Intertechno, nicht jedoch ohne weiteres bei HomeMatic.&lt;br /&gt;
&lt;br /&gt;
Problematisch ist aber, dass die Funkschnittstelle über IODev eindeutige je Aktor festgelegt werden muss, eine Zuordnung mehrerer IODevs ist nicht vorgesehen.&lt;br /&gt;
(wenn man IODev nicht setzt, wird per default die LETZTE definiert passende Schnittstelle verwendet)&lt;br /&gt;
&lt;br /&gt;
Dieses Problem kann mit einem Trick aber umgangen werden. Und zwar legt man den Aktor 2x mit gleicher Adresse aber abweichenden Namen und IOdevs an, z.B. so:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 define brenner_CUL1 FS20 11114244 11&lt;br /&gt;
 attr brenner_CUL1 IODev CUL1&lt;br /&gt;
 attr brenner_CUL2 room Keller&lt;br /&gt;
&lt;br /&gt;
 define brenner_CUL2 FS20 11114244 11&lt;br /&gt;
 attr brenner_CUL2 IODev CUL2&lt;br /&gt;
 attr brenner_CUL2 room Keller&lt;br /&gt;
&lt;br /&gt;
Ein Befehl der Art:&lt;br /&gt;
&lt;br /&gt;
 set brenner_CUL1,brenner_CUL2 on&lt;br /&gt;
&lt;br /&gt;
sendet den ON Befehl für den FS20 Aktor 11114244 11  jetzt tatsächlich über beide CULs aus!&lt;br /&gt;
&lt;br /&gt;
Achtung: Wenn die Schnittstellen gleichschnell angebunden sind, sollte vermutlich der [[Sendpool]] verwendet werden, da die Aussendungen sonst tatsächlich gleichzeitig erfolgen könnten und sich dann gegenseitig stören würden. Dieser Trick funktioniert ausserdem nur bei Befehlen, bei denen es im Zweifel egal ist, wenn sie beim Aktor 2x eintreffen. &lt;br /&gt;
&lt;br /&gt;
Bei HomeMatic lässt sich ein ähnlicher Effekt durch einrichten einer [[Virtueller Controller VCCU|virtuellen CCU]] erreichen.&lt;br /&gt;
&lt;br /&gt;
=== Retrycount bei FHTs ist überflüssig===&lt;br /&gt;
Das von der Funktion &#039;&#039;autocreate&#039;&#039; älterer FHEM Versionen beim Anlegen von FHT80 Heizungsreglern voreingetragene attribute &amp;quot;retrycount&amp;quot; hat in den allermeisten Fällen keine Wirkung, da es NUR greift, wenn man als Funkschnittstelle eine FHZ1X00PC verwendet und dann den Softbuffer einschaltet. Selbst wenn man diese Konfiguration nutzt, will gut überlegt werden, ob die Wirkung postiv ist: Bei ungenügender Empfangslage vergrössert es Kommunikationsprobleme eventuell sogar.&lt;br /&gt;
&lt;br /&gt;
Es kann also in der Regel entfernt oder auf den Wert &amp;quot;1&amp;quot; gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
 define Heizung_Bad FHT 060d&lt;br /&gt;
 attr Heizung_Bad retrycount 3       &amp;lt;=== Diese Zeile entfernen&lt;br /&gt;
&lt;br /&gt;
Siehe auch:[[Kommunikationsprobleme mit FHT]]&lt;br /&gt;
&lt;br /&gt;
== November 2013 ==&lt;br /&gt;
=== FS20 Funksteckdose sicherer schalten===&lt;br /&gt;
Seltsamerweise kommt es vor, das FS20 Aktoren - insbesondere die FS20 Funksteckdose - an der Grenze der Funkreichweite bestimmte Befehle eines Typs empfängt, andere aber nicht. Z.B. lässt sich die FS20 Steckdose zwar immer einschalten, aber oft nicht mehr aus (oder umgekehrt).&lt;br /&gt;
&lt;br /&gt;
Gelegentlich kann man die Zuverlässigkeit erhöhen, indem man statt dem nicht funktionierenden Befehl das Gegenteil mit &amp;quot;for-timer 1&amp;quot; verwendet.&lt;br /&gt;
&lt;br /&gt;
Im Fall, dass eine FS20 Steckdose sich also einwandfrei EINschalten lässt:&lt;br /&gt;
:&amp;lt;code&amp;gt;set SteckdoseA on&amp;lt;/code&amp;gt;&lt;br /&gt;
aber oft ein AUSschalten mittels&lt;br /&gt;
:&amp;lt;code&amp;gt;set SteckdoseA off&amp;lt;/code&amp;gt;&lt;br /&gt;
nicht funktioniert, kann man versuchen die Dose anstelle mit &amp;quot;off&amp;quot; mit dem Befehl&lt;br /&gt;
:&amp;lt;code&amp;gt;set SteckdoseA on-for-timer 1&amp;lt;/code&amp;gt;&lt;br /&gt;
auszuschalten.&lt;br /&gt;
&lt;br /&gt;
Analog kann man mit off-for-timer arbeiten, wenn sich Aktoren nicht einschalten lassen, ausschalten aber geht.&lt;br /&gt;
&lt;br /&gt;
Achtung: Dieser Trick funtioniert ausdrücklich nur, wenn der &amp;quot;on/off-for-timer&amp;quot; Befehl im Aktor selber abgebildet wird. Daher ist der Trick vermutlich nicht auf andere Funksysteme übertragbar. z.B. unterstützt HM nur on-for-timer und Intertechno kennt keinen Timer.&lt;br /&gt;
&lt;br /&gt;
=== Mehrere Geräte zugleich schalten===&lt;br /&gt;
Ein Ereignis soll mehrere Geräte schalten:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_Bewegungsmelder notify Bewegungsmelder set Lampe1 on;;set Lampe2 on;;set FunksteckdoseA on&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aus Übersichtlichkeitsgründen können vor und nach den Semikolons auch Leerzeichen eingefügt werden (obwohl in einigen Dokumentation behauptet wird, dies dürfe man nicht machen):&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_Bewegungsmelder notify Bewegungsmelder set Lampe1 on ;; set Lampe2 on ;; set FunksteckdoseA on&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn der Schaltbefehl bei allen Geräten gleich ist, kann man wie folgt zusammenfassen:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_Bewegungsmelder notify Bewegungsmelder set Lampe1,Lampe2,FunksteckdoseA on&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Komma wird nicht [[Escapen in Perlbefehlen|escaped]] (verdoppelt), hier darf tatsächlich KEIN Leerzeichen vor oder nach dem Komma eingefügt werden.&lt;br /&gt;
&lt;br /&gt;
=== Logfileinträge unterdrücken===&lt;br /&gt;
Das Attribute &amp;quot;verbose 0&amp;quot; verhindert, dass das Gerät Logfileinträge erzeugt.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 define Funksteckdose FS20 22224222 01&lt;br /&gt;
 attr Funksteckdose verbose 0&lt;br /&gt;
&lt;br /&gt;
===FHT Lazy Mode benutzen===&lt;br /&gt;
Es gibt wenig Gründe, den FHT &amp;quot;Lazy Mode&amp;quot; nicht zu verwenden&lt;br /&gt;
 define Heizung_Bad FHT 060d&lt;br /&gt;
 attr Heizung_Bad lazy&lt;br /&gt;
&lt;br /&gt;
Dieser sorgt dafür, dass Temperaturänderungen (genau genommen alle Änderungen, auch z.B. date) nur übertragen werden, wenn sie nicht sowieso schon am FHT eingestellt sind und veringern die Funklast dadurch deutlich. &lt;br /&gt;
&lt;br /&gt;
Siehe auch: [[Kommunikationsprobleme mit FHT]]&lt;br /&gt;
&lt;br /&gt;
== Oktober 2013 ==&lt;br /&gt;
=== Zuverlässigkeit von Wiedereinschalten erhöhen ===&lt;br /&gt;
Speziell bei FS20 Aktoren ist wegen des fehlenden Rückkanals nicht leicht erkennbar, ob ein Einschaltbefehl Wirkung gezeigt hat. Das bringt einen ganz schlechten WAF, wenn man z.B. mit einem FS20 Aktor eine Heizung ausschaltet und das Wiedereinschalten nach z.B. einer Stunde nicht klappt.&lt;br /&gt;
&lt;br /&gt;
Hier empfiehlt es sich, das Ausschalten mittels &lt;br /&gt;
:&amp;lt;code&amp;gt;set Heizungs_schalter off-for-timer 3584&amp;lt;/code&amp;gt;   (= fast eine Stunde)&lt;br /&gt;
zu erledigen. Da bei FS20 der off-for-timer Befehl im Aktor abgewickelt wird (und nicht durch FHEM), schaltet sich der Aktor auch dann garantiert wieder ein, wenn FHEM abstürzt, eine Funkstörung vorliegt oder ähnliches.  Bei Bedarf kann der Befehl off-for-timer zur  Verlängerung der Ausschaltzeit wiederholt werden. Dies kann z.B. nötig sein, wenn die Ausschaltung länger als 4,5 Stunden (15360 Sekunden, der Maximalwert des Timers) dauern soll.&lt;br /&gt;
&lt;br /&gt;
Achtung: dieser Trick funktioniert nur, wenn der Aktor &amp;quot;off-for-timer&amp;quot; selbst beherrscht. FS20 Geräte können das, HomeMatic können aber nur &amp;quot;on-for-timer&amp;quot;. Man kann off-for-timer mit HomeMatic trotzdem verwenden, aber in diesem Fall sendet FHEM den Einschaltbefehl nach der Timerzeit. InterTechno, RSL etc, können gar keinen Timer, hier sendet FHEM immer 2 Befehle im passenden Abstand.&lt;br /&gt;
&lt;br /&gt;
=== FS20 Timerzeiten ===&lt;br /&gt;
FS20 Timer werden in Sekunden angegeben. Es sind jedoch nicht alle Werte einstellbar. Da der Timer Wert in 7 Bit übertragen werden muss, sind nur 128 Werte möglich. Um mit diesen Werten im unteren Bereich möglichst fein aufzulösen, andererseits aber auch lange Zeiten zu ermöglichen, ist die Verteilung nicht linear. Einstellbar sind folgende Zeiten in Sekunden;&lt;br /&gt;
&lt;br /&gt;
0,25  0,5  0,75  1  1,25  1,5  1,75  2  2,25  2,5  2,75  3  3,25  3,5  3,75   &lt;br /&gt;
4  4,5  5  5,5  6  6,5  7  7,5  8  9  10  11  12  13  14  15  16  18  20  22   &lt;br /&gt;
24  26  28  30  32  36  40  44  48  52  56  60  64  72  80  88  96  104  112   &lt;br /&gt;
120  128  144  160  176  192  208  224  240  256  288  320  352  384  416   &lt;br /&gt;
448  480  512  576  640  704  768  832  896  960  1024  1152  1280  1408   &lt;br /&gt;
1536  1664  1792  1920  2048  2304  2560  2816  3072  3328  3584  3840  4096   &lt;br /&gt;
4608  5120  5632  6144  6656  7168  7680  8192  9216  10240  11264  12288   &lt;br /&gt;
13312  14336  15360 &lt;br /&gt;
(etwas übersichtlicher formatiert auch [[FS20 Allgemein#ON/OFF Befehle mit Time Parameter|hier]]).&lt;br /&gt;
 &lt;br /&gt;
Andere Zeiten werden von FHEM gerundet. Ein neues Setzen des Timer für FS20 löscht den alten Wert.&lt;br /&gt;
&lt;br /&gt;
Auch HomeMatic Aktoren beherrschen Time Parameter, im Gegensatz zu FS20 allerdings kein &amp;quot;off-for-timer&amp;quot;. Details dazu im Artikel [[HomeMatic Timerwerte]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Soulman</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Update&amp;diff=37518</id>
		<title>Update</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Update&amp;diff=37518"/>
		<updated>2022-08-09T22:07:49Z</updated>

		<summary type="html">&lt;p&gt;Soulman: /* Parameter */ noSSL ergänzt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SEITENTITEL:update}}&lt;br /&gt;
{{Infobox Modul&lt;br /&gt;
|ModPurpose=Befehl zur Aktualisierung der FHEM-Installation&lt;br /&gt;
|ModType=cmd&lt;br /&gt;
|ModCmdRef=update&lt;br /&gt;
|ModForumArea=Sonstiges&lt;br /&gt;
|ModTechName=98_update.pm&lt;br /&gt;
|ModOwner=rudolfkoenig ({{Link2FU|8|Forum}} / [[Benutzer Diskussion:Rudolfkoenig|Wiki]])&lt;br /&gt;
}}&lt;br /&gt;
[[update]] ist ein Befehl zur Aktualisierung der FHEM-Installation direkt über das FHEM [[FHEMWEB|Webfrontend]]. Von den Entwicklern bis zu einem bestimmten Zeitpunkt freigegebene Änderungen sind jeweils morgens ab 8:00 Uhr über die Update Funktion verfügbar. Änderungen, die später freigegeben werden, werden dementsprechend erst am nächsten Tag verfügbar.&lt;br /&gt;
&lt;br /&gt;
== Syntax ==&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;update [-noSSL] [&amp;lt;fileName&amp;gt;|all|check|force] [http://.../controlfile]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
oder&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;update [add source|delete source|list|reset]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweise:&#039;&#039;&#039;&lt;br /&gt;
* FHEM sichert mit den Standardeinstellungen während des Updates &amp;quot;nur&amp;quot; die aktualisierten Modul(Installations-)dateien und bei Standardinstallationen ({{Link2Forum|Topic=59669|Message=511367}}) ab Updatestand 29.10.2016 die [[Konfiguration]] und fhem.save, aber beispielsweise nicht [[Plots erzeugen|Plots]] oder [[FileLog]]s. Soll vor dem Update ein vollständiges Backup von FHEM erstellt werden, muss das mit dem Attribut &amp;lt;code&amp;gt;[[#backup_before_update|backup_before_update]]&amp;lt;/code&amp;gt; eingeschaltet werden.&lt;br /&gt;
* Lesen Sie aufmerksam die nach dem Update auf dem Monitor erscheinenden Meldungen zu Neuerungen und Änderungen.&lt;br /&gt;
* Nach einem Update ist immer ein &#039;&#039;shutdown restart&#039;&#039; erforderlich.&lt;br /&gt;
* geänderte und neu eingecheckte Module werden grundsätzlich erst am Folgetag ab ca. 8.00 Uhr durch den Update-Befehl verteilt.&lt;br /&gt;
* Mit dem Befehl [[version]] lässt sich die Version einzelner oder aller benutzten Module bestimmen.&lt;br /&gt;
&lt;br /&gt;
== Parameter ==&lt;br /&gt;
Details zu Parametern des update Befehls:&lt;br /&gt;
&lt;br /&gt;
=== Standardaufrufe ===&lt;br /&gt;
==== update ====&lt;br /&gt;
Die ganze FHEM-Installation wird auf die neueste Version gebracht. Vorhandene Module werden akualisiert und neue Module installiert.&lt;br /&gt;
&lt;br /&gt;
==== update check ====&lt;br /&gt;
Es werden alle Module aufgelistet, von denen eine neuere als die bereits installierte Version verfügbar ist. Es wird nicht installiert.&lt;br /&gt;
&lt;br /&gt;
==== update force ====&lt;br /&gt;
Das Update wird erzwungen (falls es beim regulären &#039;&#039;update&#039;&#039; Probleme geben sollte). Dieser Befehl ist nur mit Bedacht und ausschließlich im Notfall einzusetzen. Sollte ein reproduzierbares Problem existieren, dies bitte im FHEM-Forum berichten, damit dem nachgegangen werden kann.&lt;br /&gt;
&lt;br /&gt;
==== update &amp;amp;lt;Dateiname&amp;amp;gt; ====&lt;br /&gt;
Mit z.B. &amp;lt;code&amp;gt;update 02_HTTPSRV.pm&amp;lt;/code&amp;gt; wird nur von der Datei &#039;&#039;02_HTTPSRV.pm&#039;&#039; eine neue Version installiert. Alle anderen FHEM-Dateien werden nicht angetastet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== update -noSSL ====&lt;br /&gt;
Mit -noSSL wird das http Protocol statt https verwendet, was bei bestimmten&lt;br /&gt;
veralteten Distributionen notwendig sein kann. -noSSL steht erst seit 98_update.pm von Ende 2019 zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== update all ====&lt;br /&gt;
Alle [[Systemübersicht#Module|offiziellen Module]] von FHEM sind in einem gemeinsamen Repository gespeichert. Nur diese Module werden in der Standardeinstellung durch den update-Befehl mit den bisher aufgeführten [[#Standardaufrufe|Standardaufrufen]] aktualisiert bzw. installiert. Einige Entwickler stellen ihre Module jedoch aus verschiedensten Gründen nicht im gemeinsamen Repository zur Verfügung, sondern nutzen eigene, separate Repositorys. Diese sogenannten &amp;quot;Thirdparty-Module&amp;quot; (auch bezeichnet als inoffizielle Module) können ebenfalls über update installiert und aktualisiert werden, wenn der Entwickler eine sogenannte Kontrolldatei (controlfile) in seinem Repository zur Verfügung stellt.&lt;br /&gt;
&lt;br /&gt;
Zur Installation bzw. Update jedes einzelnen Thirdparty-Moduls ist nachfolgender Befehl aufzurufen (Webadresse und Kontrolldateiname sind modulabhängig passend zu ersetzen):&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;update all http://thirdparty.com/controls_funnymodule.txt&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die in den vorherigen Abschnitten erläuterten Standardaufruf (bis auf &amp;lt;code&amp;gt;update&amp;lt;/code&amp;gt;) können durch Ergänzung um Webadresse und Kontrolldateiname (&amp;lt;nowiki&amp;gt;http://.../controlfile&amp;lt;/nowiki&amp;gt; beim Befehls-Aufruf für das Update von einzelnen Thirdparty-Modulen genutzt werden.&lt;br /&gt;
&lt;br /&gt;
=== Repository-Verwaltung ===&lt;br /&gt;
In den Standardeinstellungen von FHEM ist für jedes einzelne Repository ein separater Aufruf der [[#Standardaufrufe|Standardaufrufe]] zur Aktualiserung/Installation notwendig. Zur Vereinfachung des Update-Prozesses hat der update-Befehl eine eingebaute Repository-Verwaltung. Mittels der Repository-Verwaltung lassen sich die Standardaufrufe so beeinflussen, dass mit einem einzigen Aufruf sowohl die Module aus dem FHEM-Repository als auch aus verschiedenen Thirdparty-Repositorys beim Update berücksichtigt werden.&lt;br /&gt;
&lt;br /&gt;
==== update add ====&lt;br /&gt;
Fügt ein zusätzliches Repository zur vereinfachten Nutzung über die Standardaufrufe hinzu. Ein Aufruf von &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;update &amp;lt;Dateiname&amp;gt;|all|check|force&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; berücksichtigt dann automatisch neben dem FHEM-eigenen Repository auch das hinzugefügte &amp;quot;Thirdparty-Repository&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Nach dem Hinzufügen durch beispielsweise &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;update add http://thirdparty.com/controls_funnymodule.txt&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; entfällt somit der manuelle Aufruf der Form &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;update all http://thirdparty.com/controls_funnymodule.txt&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; zur Aktualiserung. Er kann aber weiterhin genutzt werden, um ausschließlich für ein bestimmtes Repository ein Update zu erhalten und und nicht für alle.&lt;br /&gt;
&lt;br /&gt;
Die Liste der Repositorys wird in der Verwaltungsdatei FHEM/controls.txt gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== update delete ====&lt;br /&gt;
Entfernt eine Repository aus der Verwaltungsdatei.&lt;br /&gt;
&lt;br /&gt;
==== update list ====&lt;br /&gt;
Listet alle in der Verwaltungsdatei enthaltenen Repositorys auf.&lt;br /&gt;
&lt;br /&gt;
==== update reset ====&lt;br /&gt;
Entfernt alle Fremd-Repositorys aus der Verwaltungsdatei. Nur das eigene Repository von FHEM wird noch von den Standardparametern berücksichtigt.&lt;br /&gt;
&lt;br /&gt;
==== Syntax controlfile ====&lt;br /&gt;
Das Controlfile für thirdparty Module unterliegt einer festen Syntax. In jeder Zeile steht ein Dateiname und ein Befehl, was damit passieren soll. Ein Zeilenumbruch wird durch ein \n dargestellt.&lt;br /&gt;
&lt;br /&gt;
Es können drei Befehle verwendet werden: CRE, MOV und UPD.&lt;br /&gt;
&lt;br /&gt;
===== CRE - Anlegen einer Datei =====&lt;br /&gt;
&lt;br /&gt;
Hiermit können vom Entwickler Dateinamen festgelegt und entsprechende Initial-Dateien verteilt werden; der Inhalt der Datei liegt nach dem &#039;&#039;ersten&#039;&#039; Verteilen in Anwenderhänden (z.B. nützlich bei *-user.css-Dateien).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;CRE &amp;lt;Datum&amp;gt; &amp;lt;Dateigröße&amp;gt; &amp;lt;Datei inkl. Pfad&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Anlegen wird nur ausgeführt, wenn &lt;br /&gt;
* die Datei noch nicht vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
===== MOV - Verschieben oder Umbenennen einer Datei =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;MOV &amp;lt;Quelldatei inkl. Pfad&amp;gt; &amp;lt;Zieldatei inkl. Pfad&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Da Dateien nicht vollständig gelöscht werden können, kann eine Datei mit dem MOV Befehl in einen speziellen Ordner namens &amp;quot;unused&amp;quot; verschoben werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;MOV &amp;lt;Quelldatei inkl. Pfad&amp;gt; unused &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== UPD - Aktualisieren einer Datei =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;UPD &amp;lt;Datum&amp;gt; &amp;lt;Dateigröße&amp;gt; &amp;lt;Datei inkl. Pfad&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Aktualisierung wird nur ausgeführt, wenn &lt;br /&gt;
* das Datum der lokalen Datei sich vom Datum der Update-Datei unterscheidet.&lt;br /&gt;
* die Dateigröße der Update-Datei mit der Dateigröße im UPD Eintrag übereinstimmt.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
UPD 2018-10-04_20:17:35 55143 FHEM/55_MyFirstFile.pm&lt;br /&gt;
&lt;br /&gt;
UPD 2018-09-27_23:26:21 17121 FHEM/55_MySecondFile.pm&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel für die Erzeugung der UPD Einträge:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/perl&lt;br /&gt;
&lt;br /&gt;
use File::Basename;&lt;br /&gt;
use POSIX qw(strftime);&lt;br /&gt;
use strict;&lt;br /&gt;
&lt;br /&gt;
my @filenames = ( &amp;quot;55_MyFirstFile.pm&amp;quot;,&lt;br /&gt;
		  &amp;quot;55_MySecondFile.pm&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
my $prefix = &amp;quot;FHEM&amp;quot;;&lt;br /&gt;
my $filename = &amp;quot;&amp;quot;;&lt;br /&gt;
foreach $filename (@filenames)&lt;br /&gt;
{&lt;br /&gt;
  my @statOutput = stat($prefix.&amp;quot;/&amp;quot;.$filename);&lt;br /&gt;
  &lt;br /&gt;
  if (scalar @statOutput != 13)&lt;br /&gt;
  {&lt;br /&gt;
    printf(&amp;quot;error: stat has unexpected return value for &amp;quot;.$prefix.&amp;quot;/&amp;quot;.$filename.&amp;quot;\n&amp;quot;);&lt;br /&gt;
    next;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  my $mtime = $statOutput[9];&lt;br /&gt;
  my $date = POSIX::strftime(&amp;quot;%Y-%m-%d&amp;quot;, localtime($mtime));&lt;br /&gt;
  my $time = POSIX::strftime(&amp;quot;%H:%M:%S&amp;quot;, localtime($mtime));&lt;br /&gt;
  my $filetime = $date.&amp;quot;_&amp;quot;.$time;&lt;br /&gt;
&lt;br /&gt;
  my $filesize = $statOutput[7];&lt;br /&gt;
&lt;br /&gt;
  printf(&amp;quot;UPD &amp;quot;.$filetime.&amp;quot; &amp;quot;.$filesize.&amp;quot; &amp;quot;.$prefix.&amp;quot;/&amp;quot;.$filename.&amp;quot;\n&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Attribute ==&lt;br /&gt;
Zur weiteren Beeinflussung der Funktionsweise des update Befehls können Attribute verwendet werden. Diese müssen für das Objekt &#039;&#039;global&#039;&#039; gesetzt werden, also mit einem Konfigurationsbefehl der Art&lt;br /&gt;
:&amp;lt;code&amp;gt;attr global ...&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== backup_before_update ===&lt;br /&gt;
siehe auch [[backup]]&lt;br /&gt;
&lt;br /&gt;
=== restoreDirs ===&lt;br /&gt;
siehe [[#Rücksichern beim Update überschriebener Dateien|Rücksichern beim Update überschriebener Dateien]]&lt;br /&gt;
&lt;br /&gt;
=== exclude_from_update ===&lt;br /&gt;
Mit der Definition &lt;br /&gt;
:&amp;lt;code&amp;gt;attr global exclude_from_update ...&amp;lt;/code&amp;gt;&lt;br /&gt;
kann eine Liste von Dateien spezifiziert werden, die bei der Ausführung des update Befehls &#039;&#039;&#039;nicht&#039;&#039;&#039; aktualisiert werden sollen. Dateien können auch über reguläre Ausdrücke definiert werden, die einzelnen Einträge werden durch Leerzeichen voneinander getrennt.&lt;br /&gt;
&lt;br /&gt;
Einen Spezialfall stellt die &#039;&#039;commandref&#039;&#039; dar, die seit einer Modifikation des Update Prozesses (März 2015, beschrieben in dieser {{Link2Forum|Topic=34450|LinkText=Forendiskussion}}) nicht mehr heruntergeladen wird, sondern auf dem Benutzersystem durch Extraktion der Dokumentation aus den einzelnen Modulen generiert wird, angezeigt durch die Meldung im fhem.log: &lt;br /&gt;
:&#039;&#039;Calling /usr/bin/perl ./contrib/commandref_join.pl, this may take a while&#039;&#039;. &lt;br /&gt;
Sollte dieser Prozess (z.B. auf einem langsamen Rechner) zu lange dauern, bleibt die Meldung &lt;br /&gt;
:&#039;&#039;update finished, &amp;quot;shutdown restart&amp;quot; is needed to activate the changes.&#039;&#039; &lt;br /&gt;
aus. Wird &#039;&#039;commandref&#039;&#039; in das &amp;lt;code&amp;gt;exclude_from_update&amp;lt;/code&amp;gt; Attribut eingetragen, entfällt dieser Schritt, die lokale &#039;&#039;commandref&#039;&#039; wird allerdings dann auch nicht mehr aktualisiert. Die modulspezifische Hilfe, die z.B. über &amp;lt;code&amp;gt;help modulname&amp;lt;/code&amp;gt; aufgerufen werden kann, ist davon nicht betroffen.&lt;br /&gt;
&lt;br /&gt;
== Anwendungsbeispiel / Problembehebung ==&lt;br /&gt;
=== Durchführung eines Updates ===&lt;br /&gt;
Zunächst kann mit dem Befehl&lt;br /&gt;
:&amp;lt;code&amp;gt;update check&amp;lt;/code&amp;gt;&lt;br /&gt;
überprüft werden, ob es überhaupt ein neues Update gibt und welche Dateien hierbei ausgetauscht würden (die angezeigten Infos sollten in einer Textdatei gesichert werden. Mit diesen Infos kann gezielter nach Problemen, die vielleicht nach einem Update auftreten, gesucht werden). Anschließend kann mittels:&lt;br /&gt;
:&amp;lt;code&amp;gt;update&amp;lt;/code&amp;gt;&lt;br /&gt;
das Update eingespielt werden. Hierbei ist zu beachten, dass die Befehle auf der FHEM Webseite oben ([[Konfiguration|Befehls-Eingabefeld]]) eingegeben werden und anschließend die &amp;quot;Enter&amp;quot; Taste auf der Tastatur gedrückt werden muss.&lt;br /&gt;
&lt;br /&gt;
Gibt es kein Update für FHEM, sieht die Ausgabe z.B. nach &amp;quot;update check&amp;quot; wie folgt aus:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;List of new / modified files since last update:&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;nothing to do...&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rücksichern beim Update überschriebener Dateien ===&lt;br /&gt;
Sollte nach einem update etwas ganz oder teilweise nicht mehr funktionieren, kann man auf den Stand vor dem Update zurückgehen. Die Befehle sind für die FHEM Kommandozeile.&lt;br /&gt;
&lt;br /&gt;
Man kann sich einen Überblick über die Funktion des Befehls {{Link2CmdRef|Anker=restore|Label=restore}} verschaffen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
help restore&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Man kann die gesicherten Versionen listen&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
restore list update&lt;br /&gt;
&lt;br /&gt;
Available for restore in update:&lt;br /&gt;
  2020-11-01&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Man kann in der Verzeichnis Ebene tiefer suchen&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
restore list update/2020-11-01&lt;br /&gt;
&lt;br /&gt;
Available for restore in update/2020-11-01:&lt;br /&gt;
  CHANGED&lt;br /&gt;
  FHEM&lt;br /&gt;
  MAINTAINER.txt&lt;br /&gt;
  configDB.pm&lt;br /&gt;
  fhem.cfg&lt;br /&gt;
  fhem.pl&lt;br /&gt;
  lib&lt;br /&gt;
  log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Man kann gezielt wiederherstellen, entweder den kompletten Pfad oder einzelne Dateien.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
restore update/2020-11-01/FHEM&lt;br /&gt;
restore update/2020-11-01/FHEM/10_CUL_HM.pm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Weitere Informationen:&lt;br /&gt;
* Per default werden vor dem Überschreiben durch update alle Dateien in einem neuen Verzeichnis (restoreDir/update/YYYY-MM-DD) gesichert. &lt;br /&gt;
* Mit dem restoreDirs Attribut kann man die Anzahl der aufgehobenen Sicherungen (== Datum-Verzeichnisse) bestimmen, die Voreinstellung ist 3. Mit 0 kann man das Feature komplett abschalten.&lt;br /&gt;
* Ab Updatestand 29.10.2016 können bei Standardinstallationen ({{Link2Forum|Topic=59669|Message=511367}}) die fhem.cfg und fhem.save mit der Option -a des restore-Befehl wiederhergestellt werden.&lt;br /&gt;
* Zu Neuerungen ab Updatestand 18.03.2018 siehe {{Link2Forum|Topic=85801|Message=782640}}.&lt;br /&gt;
&lt;br /&gt;
=== Update ging schief - restore letzte funktionierende Version ===&lt;br /&gt;
Sollte der Fall eintreten, dass FHEM nach dem Update nicht mehr startet, kann das restore des letzten Standes auch auf Systemebene durchgeführt werden. Anzeigen der vorhandenen Sicherungen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ls /opt/fhem/restoreDir/update&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Die Pfad-Angabe YYYY-MM-DD durch das gewünschte Datum ersetzen:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo -su fhem cp -R /opt/fhem/restoreDir/update/YYYY-MM-DD/* /opt/fhem/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Die Berechtigungen bleiben durch die Verwendung des Users fhem erhalten. Danach sollte sich FHEM normal starten lassen. Im Zweifelsfall ist ein reboot des Systems die einfachste Lösung.&lt;br /&gt;
&lt;br /&gt;
=== Einzelne Dateien aus dem SVN holen ===&lt;br /&gt;
Manchmal wird im Forum die Empfehlung gegeben &#039;&#039;Die Fehler-bereinigte Datei bitte direkt aus dem SVN holen&#039;&#039;. Dies kann mit der Perlfunktion { Svn_GetFile(&#039;from SVN Path&#039;, &#039;to local Path&#039;) } direkt in der FHEM Kommandozeile erfolgen, hier ein paar Beispiele:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
{ Svn_GetFile(&#039;FHEM/DevIo.pm&#039;, &#039;FHEM/DevIo.pm&#039;) }&lt;br /&gt;
{ Svn_GetFile(&#039;contrib/86_FS10.pm&#039;, &#039;FHEM/86_FS10.pm&#039;) }&lt;br /&gt;
{ Svn_GetFile(&#039;fhem.cfg&#039;, &#039;minimal.cfg&#039;) }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Wie man sieht, kann man sich damit auch aktuelle Dateien aus dem SVN contrib Pfad in den lokalen FHEM Pfad holen. Der lokale contrib Pfad wird beim update NICHT aktualisiert und befindet sich damit immer auf dem Stand der Erstinstallation!&lt;/div&gt;</summary>
		<author><name>Soulman</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Update&amp;diff=37517</id>
		<title>Update</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Update&amp;diff=37517"/>
		<updated>2022-08-09T22:04:12Z</updated>

		<summary type="html">&lt;p&gt;Soulman: /* Syntax */ update [-noSSL]  ergänzt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SEITENTITEL:update}}&lt;br /&gt;
{{Infobox Modul&lt;br /&gt;
|ModPurpose=Befehl zur Aktualisierung der FHEM-Installation&lt;br /&gt;
|ModType=cmd&lt;br /&gt;
|ModCmdRef=update&lt;br /&gt;
|ModForumArea=Sonstiges&lt;br /&gt;
|ModTechName=98_update.pm&lt;br /&gt;
|ModOwner=rudolfkoenig ({{Link2FU|8|Forum}} / [[Benutzer Diskussion:Rudolfkoenig|Wiki]])&lt;br /&gt;
}}&lt;br /&gt;
[[update]] ist ein Befehl zur Aktualisierung der FHEM-Installation direkt über das FHEM [[FHEMWEB|Webfrontend]]. Von den Entwicklern bis zu einem bestimmten Zeitpunkt freigegebene Änderungen sind jeweils morgens ab 8:00 Uhr über die Update Funktion verfügbar. Änderungen, die später freigegeben werden, werden dementsprechend erst am nächsten Tag verfügbar.&lt;br /&gt;
&lt;br /&gt;
== Syntax ==&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;update [-noSSL] [&amp;lt;fileName&amp;gt;|all|check|force] [http://.../controlfile]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
oder&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;update [add source|delete source|list|reset]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweise:&#039;&#039;&#039;&lt;br /&gt;
* FHEM sichert mit den Standardeinstellungen während des Updates &amp;quot;nur&amp;quot; die aktualisierten Modul(Installations-)dateien und bei Standardinstallationen ({{Link2Forum|Topic=59669|Message=511367}}) ab Updatestand 29.10.2016 die [[Konfiguration]] und fhem.save, aber beispielsweise nicht [[Plots erzeugen|Plots]] oder [[FileLog]]s. Soll vor dem Update ein vollständiges Backup von FHEM erstellt werden, muss das mit dem Attribut &amp;lt;code&amp;gt;[[#backup_before_update|backup_before_update]]&amp;lt;/code&amp;gt; eingeschaltet werden.&lt;br /&gt;
* Lesen Sie aufmerksam die nach dem Update auf dem Monitor erscheinenden Meldungen zu Neuerungen und Änderungen.&lt;br /&gt;
* Nach einem Update ist immer ein &#039;&#039;shutdown restart&#039;&#039; erforderlich.&lt;br /&gt;
* geänderte und neu eingecheckte Module werden grundsätzlich erst am Folgetag ab ca. 8.00 Uhr durch den Update-Befehl verteilt.&lt;br /&gt;
* Mit dem Befehl [[version]] lässt sich die Version einzelner oder aller benutzten Module bestimmen.&lt;br /&gt;
&lt;br /&gt;
== Parameter ==&lt;br /&gt;
Details zu Parametern des update Befehls:&lt;br /&gt;
&lt;br /&gt;
=== Standardaufrufe ===&lt;br /&gt;
==== update ====&lt;br /&gt;
Die ganze FHEM-Installation wird auf die neueste Version gebracht. Vorhandene Module werden akualisiert und neue Module installiert.&lt;br /&gt;
&lt;br /&gt;
==== update check ====&lt;br /&gt;
Es werden alle Module aufgelistet, von denen eine neuere als die bereits installierte Version verfügbar ist. Es wird nicht installiert.&lt;br /&gt;
&lt;br /&gt;
==== update force ====&lt;br /&gt;
Das Update wird erzwungen (falls es beim regulären &#039;&#039;update&#039;&#039; Probleme geben sollte). Dieser Befehl ist nur mit Bedacht und ausschließlich im Notfall einzusetzen. Sollte ein reproduzierbares Problem existieren, dies bitte im FHEM-Forum berichten, damit dem nachgegangen werden kann.&lt;br /&gt;
&lt;br /&gt;
==== update &amp;amp;lt;Dateiname&amp;amp;gt; ====&lt;br /&gt;
Mit z.B. &amp;lt;code&amp;gt;update 02_HTTPSRV.pm&amp;lt;/code&amp;gt; wird nur von der Datei &#039;&#039;02_HTTPSRV.pm&#039;&#039; eine neue Version installiert. Alle anderen FHEM-Dateien werden nicht angetastet.&lt;br /&gt;
&lt;br /&gt;
==== update all ====&lt;br /&gt;
Alle [[Systemübersicht#Module|offiziellen Module]] von FHEM sind in einem gemeinsamen Repository gespeichert. Nur diese Module werden in der Standardeinstellung durch den update-Befehl mit den bisher aufgeführten [[#Standardaufrufe|Standardaufrufen]] aktualisiert bzw. installiert. Einige Entwickler stellen ihre Module jedoch aus verschiedensten Gründen nicht im gemeinsamen Repository zur Verfügung, sondern nutzen eigene, separate Repositorys. Diese sogenannten &amp;quot;Thirdparty-Module&amp;quot; (auch bezeichnet als inoffizielle Module) können ebenfalls über update installiert und aktualisiert werden, wenn der Entwickler eine sogenannte Kontrolldatei (controlfile) in seinem Repository zur Verfügung stellt.&lt;br /&gt;
&lt;br /&gt;
Zur Installation bzw. Update jedes einzelnen Thirdparty-Moduls ist nachfolgender Befehl aufzurufen (Webadresse und Kontrolldateiname sind modulabhängig passend zu ersetzen):&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;update all http://thirdparty.com/controls_funnymodule.txt&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die in den vorherigen Abschnitten erläuterten Standardaufruf (bis auf &amp;lt;code&amp;gt;update&amp;lt;/code&amp;gt;) können durch Ergänzung um Webadresse und Kontrolldateiname (&amp;lt;nowiki&amp;gt;http://.../controlfile&amp;lt;/nowiki&amp;gt; beim Befehls-Aufruf für das Update von einzelnen Thirdparty-Modulen genutzt werden.&lt;br /&gt;
&lt;br /&gt;
=== Repository-Verwaltung ===&lt;br /&gt;
In den Standardeinstellungen von FHEM ist für jedes einzelne Repository ein separater Aufruf der [[#Standardaufrufe|Standardaufrufe]] zur Aktualiserung/Installation notwendig. Zur Vereinfachung des Update-Prozesses hat der update-Befehl eine eingebaute Repository-Verwaltung. Mittels der Repository-Verwaltung lassen sich die Standardaufrufe so beeinflussen, dass mit einem einzigen Aufruf sowohl die Module aus dem FHEM-Repository als auch aus verschiedenen Thirdparty-Repositorys beim Update berücksichtigt werden.&lt;br /&gt;
&lt;br /&gt;
==== update add ====&lt;br /&gt;
Fügt ein zusätzliches Repository zur vereinfachten Nutzung über die Standardaufrufe hinzu. Ein Aufruf von &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;update &amp;lt;Dateiname&amp;gt;|all|check|force&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; berücksichtigt dann automatisch neben dem FHEM-eigenen Repository auch das hinzugefügte &amp;quot;Thirdparty-Repository&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Nach dem Hinzufügen durch beispielsweise &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;update add http://thirdparty.com/controls_funnymodule.txt&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; entfällt somit der manuelle Aufruf der Form &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;update all http://thirdparty.com/controls_funnymodule.txt&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; zur Aktualiserung. Er kann aber weiterhin genutzt werden, um ausschließlich für ein bestimmtes Repository ein Update zu erhalten und und nicht für alle.&lt;br /&gt;
&lt;br /&gt;
Die Liste der Repositorys wird in der Verwaltungsdatei FHEM/controls.txt gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== update delete ====&lt;br /&gt;
Entfernt eine Repository aus der Verwaltungsdatei.&lt;br /&gt;
&lt;br /&gt;
==== update list ====&lt;br /&gt;
Listet alle in der Verwaltungsdatei enthaltenen Repositorys auf.&lt;br /&gt;
&lt;br /&gt;
==== update reset ====&lt;br /&gt;
Entfernt alle Fremd-Repositorys aus der Verwaltungsdatei. Nur das eigene Repository von FHEM wird noch von den Standardparametern berücksichtigt.&lt;br /&gt;
&lt;br /&gt;
==== Syntax controlfile ====&lt;br /&gt;
Das Controlfile für thirdparty Module unterliegt einer festen Syntax. In jeder Zeile steht ein Dateiname und ein Befehl, was damit passieren soll. Ein Zeilenumbruch wird durch ein \n dargestellt.&lt;br /&gt;
&lt;br /&gt;
Es können drei Befehle verwendet werden: CRE, MOV und UPD.&lt;br /&gt;
&lt;br /&gt;
===== CRE - Anlegen einer Datei =====&lt;br /&gt;
&lt;br /&gt;
Hiermit können vom Entwickler Dateinamen festgelegt und entsprechende Initial-Dateien verteilt werden; der Inhalt der Datei liegt nach dem &#039;&#039;ersten&#039;&#039; Verteilen in Anwenderhänden (z.B. nützlich bei *-user.css-Dateien).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;CRE &amp;lt;Datum&amp;gt; &amp;lt;Dateigröße&amp;gt; &amp;lt;Datei inkl. Pfad&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Anlegen wird nur ausgeführt, wenn &lt;br /&gt;
* die Datei noch nicht vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
===== MOV - Verschieben oder Umbenennen einer Datei =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;MOV &amp;lt;Quelldatei inkl. Pfad&amp;gt; &amp;lt;Zieldatei inkl. Pfad&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Da Dateien nicht vollständig gelöscht werden können, kann eine Datei mit dem MOV Befehl in einen speziellen Ordner namens &amp;quot;unused&amp;quot; verschoben werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;MOV &amp;lt;Quelldatei inkl. Pfad&amp;gt; unused &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== UPD - Aktualisieren einer Datei =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;UPD &amp;lt;Datum&amp;gt; &amp;lt;Dateigröße&amp;gt; &amp;lt;Datei inkl. Pfad&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Aktualisierung wird nur ausgeführt, wenn &lt;br /&gt;
* das Datum der lokalen Datei sich vom Datum der Update-Datei unterscheidet.&lt;br /&gt;
* die Dateigröße der Update-Datei mit der Dateigröße im UPD Eintrag übereinstimmt.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
UPD 2018-10-04_20:17:35 55143 FHEM/55_MyFirstFile.pm&lt;br /&gt;
&lt;br /&gt;
UPD 2018-09-27_23:26:21 17121 FHEM/55_MySecondFile.pm&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel für die Erzeugung der UPD Einträge:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/perl&lt;br /&gt;
&lt;br /&gt;
use File::Basename;&lt;br /&gt;
use POSIX qw(strftime);&lt;br /&gt;
use strict;&lt;br /&gt;
&lt;br /&gt;
my @filenames = ( &amp;quot;55_MyFirstFile.pm&amp;quot;,&lt;br /&gt;
		  &amp;quot;55_MySecondFile.pm&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
my $prefix = &amp;quot;FHEM&amp;quot;;&lt;br /&gt;
my $filename = &amp;quot;&amp;quot;;&lt;br /&gt;
foreach $filename (@filenames)&lt;br /&gt;
{&lt;br /&gt;
  my @statOutput = stat($prefix.&amp;quot;/&amp;quot;.$filename);&lt;br /&gt;
  &lt;br /&gt;
  if (scalar @statOutput != 13)&lt;br /&gt;
  {&lt;br /&gt;
    printf(&amp;quot;error: stat has unexpected return value for &amp;quot;.$prefix.&amp;quot;/&amp;quot;.$filename.&amp;quot;\n&amp;quot;);&lt;br /&gt;
    next;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  my $mtime = $statOutput[9];&lt;br /&gt;
  my $date = POSIX::strftime(&amp;quot;%Y-%m-%d&amp;quot;, localtime($mtime));&lt;br /&gt;
  my $time = POSIX::strftime(&amp;quot;%H:%M:%S&amp;quot;, localtime($mtime));&lt;br /&gt;
  my $filetime = $date.&amp;quot;_&amp;quot;.$time;&lt;br /&gt;
&lt;br /&gt;
  my $filesize = $statOutput[7];&lt;br /&gt;
&lt;br /&gt;
  printf(&amp;quot;UPD &amp;quot;.$filetime.&amp;quot; &amp;quot;.$filesize.&amp;quot; &amp;quot;.$prefix.&amp;quot;/&amp;quot;.$filename.&amp;quot;\n&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Attribute ==&lt;br /&gt;
Zur weiteren Beeinflussung der Funktionsweise des update Befehls können Attribute verwendet werden. Diese müssen für das Objekt &#039;&#039;global&#039;&#039; gesetzt werden, also mit einem Konfigurationsbefehl der Art&lt;br /&gt;
:&amp;lt;code&amp;gt;attr global ...&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== backup_before_update ===&lt;br /&gt;
siehe auch [[backup]]&lt;br /&gt;
&lt;br /&gt;
=== restoreDirs ===&lt;br /&gt;
siehe [[#Rücksichern beim Update überschriebener Dateien|Rücksichern beim Update überschriebener Dateien]]&lt;br /&gt;
&lt;br /&gt;
=== exclude_from_update ===&lt;br /&gt;
Mit der Definition &lt;br /&gt;
:&amp;lt;code&amp;gt;attr global exclude_from_update ...&amp;lt;/code&amp;gt;&lt;br /&gt;
kann eine Liste von Dateien spezifiziert werden, die bei der Ausführung des update Befehls &#039;&#039;&#039;nicht&#039;&#039;&#039; aktualisiert werden sollen. Dateien können auch über reguläre Ausdrücke definiert werden, die einzelnen Einträge werden durch Leerzeichen voneinander getrennt.&lt;br /&gt;
&lt;br /&gt;
Einen Spezialfall stellt die &#039;&#039;commandref&#039;&#039; dar, die seit einer Modifikation des Update Prozesses (März 2015, beschrieben in dieser {{Link2Forum|Topic=34450|LinkText=Forendiskussion}}) nicht mehr heruntergeladen wird, sondern auf dem Benutzersystem durch Extraktion der Dokumentation aus den einzelnen Modulen generiert wird, angezeigt durch die Meldung im fhem.log: &lt;br /&gt;
:&#039;&#039;Calling /usr/bin/perl ./contrib/commandref_join.pl, this may take a while&#039;&#039;. &lt;br /&gt;
Sollte dieser Prozess (z.B. auf einem langsamen Rechner) zu lange dauern, bleibt die Meldung &lt;br /&gt;
:&#039;&#039;update finished, &amp;quot;shutdown restart&amp;quot; is needed to activate the changes.&#039;&#039; &lt;br /&gt;
aus. Wird &#039;&#039;commandref&#039;&#039; in das &amp;lt;code&amp;gt;exclude_from_update&amp;lt;/code&amp;gt; Attribut eingetragen, entfällt dieser Schritt, die lokale &#039;&#039;commandref&#039;&#039; wird allerdings dann auch nicht mehr aktualisiert. Die modulspezifische Hilfe, die z.B. über &amp;lt;code&amp;gt;help modulname&amp;lt;/code&amp;gt; aufgerufen werden kann, ist davon nicht betroffen.&lt;br /&gt;
&lt;br /&gt;
== Anwendungsbeispiel / Problembehebung ==&lt;br /&gt;
=== Durchführung eines Updates ===&lt;br /&gt;
Zunächst kann mit dem Befehl&lt;br /&gt;
:&amp;lt;code&amp;gt;update check&amp;lt;/code&amp;gt;&lt;br /&gt;
überprüft werden, ob es überhaupt ein neues Update gibt und welche Dateien hierbei ausgetauscht würden (die angezeigten Infos sollten in einer Textdatei gesichert werden. Mit diesen Infos kann gezielter nach Problemen, die vielleicht nach einem Update auftreten, gesucht werden). Anschließend kann mittels:&lt;br /&gt;
:&amp;lt;code&amp;gt;update&amp;lt;/code&amp;gt;&lt;br /&gt;
das Update eingespielt werden. Hierbei ist zu beachten, dass die Befehle auf der FHEM Webseite oben ([[Konfiguration|Befehls-Eingabefeld]]) eingegeben werden und anschließend die &amp;quot;Enter&amp;quot; Taste auf der Tastatur gedrückt werden muss.&lt;br /&gt;
&lt;br /&gt;
Gibt es kein Update für FHEM, sieht die Ausgabe z.B. nach &amp;quot;update check&amp;quot; wie folgt aus:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;List of new / modified files since last update:&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;nothing to do...&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rücksichern beim Update überschriebener Dateien ===&lt;br /&gt;
Sollte nach einem update etwas ganz oder teilweise nicht mehr funktionieren, kann man auf den Stand vor dem Update zurückgehen. Die Befehle sind für die FHEM Kommandozeile.&lt;br /&gt;
&lt;br /&gt;
Man kann sich einen Überblick über die Funktion des Befehls {{Link2CmdRef|Anker=restore|Label=restore}} verschaffen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
help restore&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Man kann die gesicherten Versionen listen&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
restore list update&lt;br /&gt;
&lt;br /&gt;
Available for restore in update:&lt;br /&gt;
  2020-11-01&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Man kann in der Verzeichnis Ebene tiefer suchen&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
restore list update/2020-11-01&lt;br /&gt;
&lt;br /&gt;
Available for restore in update/2020-11-01:&lt;br /&gt;
  CHANGED&lt;br /&gt;
  FHEM&lt;br /&gt;
  MAINTAINER.txt&lt;br /&gt;
  configDB.pm&lt;br /&gt;
  fhem.cfg&lt;br /&gt;
  fhem.pl&lt;br /&gt;
  lib&lt;br /&gt;
  log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Man kann gezielt wiederherstellen, entweder den kompletten Pfad oder einzelne Dateien.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
restore update/2020-11-01/FHEM&lt;br /&gt;
restore update/2020-11-01/FHEM/10_CUL_HM.pm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Weitere Informationen:&lt;br /&gt;
* Per default werden vor dem Überschreiben durch update alle Dateien in einem neuen Verzeichnis (restoreDir/update/YYYY-MM-DD) gesichert. &lt;br /&gt;
* Mit dem restoreDirs Attribut kann man die Anzahl der aufgehobenen Sicherungen (== Datum-Verzeichnisse) bestimmen, die Voreinstellung ist 3. Mit 0 kann man das Feature komplett abschalten.&lt;br /&gt;
* Ab Updatestand 29.10.2016 können bei Standardinstallationen ({{Link2Forum|Topic=59669|Message=511367}}) die fhem.cfg und fhem.save mit der Option -a des restore-Befehl wiederhergestellt werden.&lt;br /&gt;
* Zu Neuerungen ab Updatestand 18.03.2018 siehe {{Link2Forum|Topic=85801|Message=782640}}.&lt;br /&gt;
&lt;br /&gt;
=== Update ging schief - restore letzte funktionierende Version ===&lt;br /&gt;
Sollte der Fall eintreten, dass FHEM nach dem Update nicht mehr startet, kann das restore des letzten Standes auch auf Systemebene durchgeführt werden. Anzeigen der vorhandenen Sicherungen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ls /opt/fhem/restoreDir/update&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Die Pfad-Angabe YYYY-MM-DD durch das gewünschte Datum ersetzen:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo -su fhem cp -R /opt/fhem/restoreDir/update/YYYY-MM-DD/* /opt/fhem/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Die Berechtigungen bleiben durch die Verwendung des Users fhem erhalten. Danach sollte sich FHEM normal starten lassen. Im Zweifelsfall ist ein reboot des Systems die einfachste Lösung.&lt;br /&gt;
&lt;br /&gt;
=== Einzelne Dateien aus dem SVN holen ===&lt;br /&gt;
Manchmal wird im Forum die Empfehlung gegeben &#039;&#039;Die Fehler-bereinigte Datei bitte direkt aus dem SVN holen&#039;&#039;. Dies kann mit der Perlfunktion { Svn_GetFile(&#039;from SVN Path&#039;, &#039;to local Path&#039;) } direkt in der FHEM Kommandozeile erfolgen, hier ein paar Beispiele:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
{ Svn_GetFile(&#039;FHEM/DevIo.pm&#039;, &#039;FHEM/DevIo.pm&#039;) }&lt;br /&gt;
{ Svn_GetFile(&#039;contrib/86_FS10.pm&#039;, &#039;FHEM/86_FS10.pm&#039;) }&lt;br /&gt;
{ Svn_GetFile(&#039;fhem.cfg&#039;, &#039;minimal.cfg&#039;) }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Wie man sieht, kann man sich damit auch aktuelle Dateien aus dem SVN contrib Pfad in den lokalen FHEM Pfad holen. Der lokale contrib Pfad wird beim update NICHT aktualisiert und befindet sich damit immer auf dem Stand der Erstinstallation!&lt;/div&gt;</summary>
		<author><name>Soulman</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Diskussion:FHT:_Datum_und_Zeit_von_FHEM_setzen_lassen&amp;diff=36954</id>
		<title>Diskussion:FHT: Datum und Zeit von FHEM setzen lassen</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Diskussion:FHT:_Datum_und_Zeit_von_FHEM_setzen_lassen&amp;diff=36954"/>
		<updated>2022-01-04T17:17:58Z</updated>

		<summary type="html">&lt;p&gt;Soulman: Neuer Abschnitt /* Überkomplexe Lösung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Seitentitel ==&lt;br /&gt;
&lt;br /&gt;
Auch hier wieder ein Doppelpunkt im Seitentitel. Eventuell ändern auf &amp;quot;FHT - Datum und ...&amp;quot;? --[[Benutzer:Drhirn|Drhirn]] ([[Benutzer Diskussion:Drhirn|Diskussion]]) 10:08, 25. Jan. 2017 (CET)&lt;br /&gt;
:analog [[Diskussion:FritzBox:_FHEM_unter_root_starten#Seitentitel]] erst einmal keine Änderung. --[[Benutzer:Krikan|Christian]] ([[Benutzer Diskussion:Krikan|Diskussion]]) 09:24, 26. Jan. 2017 (CET)&lt;br /&gt;
&lt;br /&gt;
== Überkomplexe Lösung ==&lt;br /&gt;
&lt;br /&gt;
Für mich ist das ein Beispiel, wie Personen in FHEM überkomplexe Lösungen für Probleme erstellen, die im Prinzip recht einfach lösbar sind. Die dargestellten Varianten C und D sind &amp;quot;the way to go&amp;quot;, die Codeschnippsel in A und B bergen keinerlei Vorteile, sondern sind vermutlich blosser Unkenntnis der Möglichkeiten unter wie unter c und D beschrieben geschuldet. Das schreckt Neulinge eher ab oder sie eignen sich diese &amp;quot;Schwurbelstil&amp;quot; selbst an und erzeugen dann auch unnötig komplexen Code um simpelste Dinge zu lösen. Speziell da FHT auch langsam echt aus der Mode kommt und die Relevanz daher des Artikels daher gering ist, würde ich daher die Varianten A und B demnächst löschen. Oder sogar den ganzen Artikel. --[[Benutzer:Soulman|Soulman]] ([[Benutzer Diskussion:Soulman|Diskussion]]) 18:17, 4. Jan. 2022 (CET)&lt;/div&gt;</summary>
		<author><name>Soulman</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=AT_zu_einem_absoluten_Datum_ausf%C3%BChren&amp;diff=36953</id>
		<title>AT zu einem absoluten Datum ausführen</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=AT_zu_einem_absoluten_Datum_ausf%C3%BChren&amp;diff=36953"/>
		<updated>2022-01-04T16:50:58Z</updated>

		<summary type="html">&lt;p&gt;Soulman: Ergänzung&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Achtung:&#039;&#039;&#039; der Befehl [[at]] kennt im Gegensatz zur Behauptung im Artikel unten durchaus Ausführungen zu einem bestimmtes Datum.&lt;br /&gt;
&lt;br /&gt;
Das letztgenannte Beispiel kann z.b. mit&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Licht_25_Januar_an at 2011-01-25T07:15:00 set Licht1 on&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Realisiert werden, siehe auch Commandrefeintrag.&lt;br /&gt;
&lt;br /&gt;
Die unten dargestellt Lösung, täglich bei Erreichen der gewünschten Uhrzeit zu prüfen ob der richtige Tag erreicht wurde, erfordert mehr Code und ist auch Perfomanceseitig ungünstiger.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
________________________________________________________________________________________________&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mit dem Befehl [[at]] können in FHEM Aktionen zu einem definierten Zeitpunkt ausgeführt werden:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define morgens_Licht_an at *07:15:00 set Licht1 on&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Es können nur relative und absolute Uhrzeiten, jedoch nicht ein bestimmtes Datum definiert werden.&lt;br /&gt;
&lt;br /&gt;
Allerdings kann die Ausführung an Bedingungen geknüpft sein, wie z.b. bestimmte Wochentage oder nur am Wochenende:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define morgens_Licht_Wochenende at *07:15:00 {if (!($we)) {fhem(&amp;quot;set Licht1 on&amp;quot;)} }&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Auf die selbe Art kann auch auf ein Ausführungsdatum geprüft werden.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Licht_25_Januar_an at *07:15:00 {if($year==2011 &amp;amp;amp;&amp;amp;amp; $month==1 &amp;amp;amp;&amp;amp;amp; $mday==25) {fhem(&amp;quot;set Licht1 on&amp;quot;)} }&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
In diesem Fall wird täglich um 7:15 Uhr geprüft, ob der 25. Januar 2011 ist und falls ja, wird die Aktion ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Da dieser Fall nur einmal zutrifft, ist es sinnvoll, die Aktion nach Auslösung zu löschen, damit nicht nach dem 25. Januar 2011 weiter täglich geprüft wird, ob das Datum nochmal auftritt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;define Licht_25_Januar_an at *07:15:00 {if($year==2011 &amp;amp;amp;&amp;amp;amp; $month==1 &amp;amp;amp;&amp;amp;amp; $mday==25) \&lt;br /&gt;
{fhem (&amp;quot;set Licht1 on; delete Licht_25_Januar_an&amp;quot;} }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Code Snippets]]&lt;/div&gt;</summary>
		<author><name>Soulman</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Diskussion:AT_zu_einem_absoluten_Datum_ausf%C3%BChren&amp;diff=36951</id>
		<title>Diskussion:AT zu einem absoluten Datum ausführen</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Diskussion:AT_zu_einem_absoluten_Datum_ausf%C3%BChren&amp;diff=36951"/>
		<updated>2022-01-04T16:44:55Z</updated>

		<summary type="html">&lt;p&gt;Soulman: Die Seite wurde neu angelegt: „Hm.. die Behauptng &amp;quot;Es können nur relative und absolute Uhrzeiten, jedoch nicht ein bestimmtes Datum definiert werden.&amp;quot; ist meiner Auffassung nach falsch, das…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hm.. die Behauptng &amp;quot;Es können nur relative und absolute Uhrzeiten, jedoch nicht ein bestimmtes Datum definiert werden.&amp;quot; ist meiner Auffassung nach falsch, das geht auch aus der Commandref anders hervor, denn es gibt da expliziet &amp;quot;&amp;lt;Datespec&amp;gt;&amp;quot;. Damit der ganze Artikel hinfällig. Ich würde den gerne löschen--[[Benutzer:Soulman|Soulman]] ([[Benutzer Diskussion:Soulman|Diskussion]]) 17:44, 4. Jan. 2022 (CET)&lt;/div&gt;</summary>
		<author><name>Soulman</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Trick_der_Woche&amp;diff=36949</id>
		<title>Trick der Woche</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Trick_der_Woche&amp;diff=36949"/>
		<updated>2022-01-04T16:37:04Z</updated>

		<summary type="html">&lt;p&gt;Soulman: Luftfeuchtesensor&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diese Seite enthält Tipps und Tricks, die zu unbedeutend sind, einen eigenen Artikel zu rechtfertigen, alternative Schreibweisen/Lösungen für eine Problem darstellen, Ungenauigkeiten oder unklare Formulierungen in den offiziellen Dokumenten ergänzen und ähnliches. Jeder Eintrag ist typischerweise sehr kurz (wenige Zeilen lang) und beleuchtet vielleicht nur einen Aspekt von FHEM, er kann allgemeiner Natur sein, oder sich auf ein spezielles Gerät oder einen speziellen Anwendungsfall beziehen.&lt;br /&gt;
&lt;br /&gt;
== Januar 2022==&lt;br /&gt;
=== günstiger Luftfeuchtesensor ===&lt;br /&gt;
Der [[HM-CC-TC Funk-Wandthermostat]] ist schon lange abgekündigt. Er wird derzeit oft recht günstig im Netz angeboten und eignet sich daher als billiger &amp;quot;StandAlone&amp;quot; Temperatur- und Luftfeuchtesensor, auch wenn er keinen Ventielantrieb steuern soll.&lt;br /&gt;
&lt;br /&gt;
== Dezember 2020 ==&lt;br /&gt;
=== Performance von Notifys ===&lt;br /&gt;
Im Tipp vom Dezember 2013 [[Trick der Woche#notify durch mehrere Ereignisse auslösen lassen|notify durch mehrere Ereignisse auslösen lassen]] heisst es:&lt;br /&gt;
:&#039;&#039;[…] Wenn man aber möchte, dass z.B. &amp;quot;on&amp;quot; und &amp;quot;off&amp;quot; auslöst (um etwa Dim-Befehle auszuschliessen), kann dies wie folgt erreicht werden:&#039;&#039;&lt;br /&gt;
::&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:(on|off) …&amp;lt;/code&amp;gt;&lt;br /&gt;
Performanter ist allerdings:&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:o[nf]+  …&amp;lt;/code&amp;gt;&lt;br /&gt;
wobei &#039;&#039;&#039;o[nf]+&#039;&#039;&#039; eine &amp;quot;Regexp&amp;quot; für beliebige Zeichenketten ist, die mit &#039;&#039;&#039;o&#039;&#039;&#039; anfangen und &#039;&#039;&#039;n&#039;&#039;&#039; und/oder &#039;&#039;&#039;f&#039;&#039;&#039; enthalten, also (auch) on und off.&lt;br /&gt;
&lt;br /&gt;
Alternativ kann auch:&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:on|MeinSchalter:off … &amp;lt;/code&amp;gt;&lt;br /&gt;
verwendet werden.&lt;br /&gt;
Die letzten beiden Varianten sparen Ausführungszeit. Ganz allgemein ist es besser, im notify das Suchmuster mit einem [[Regulärer Ausdruck|regulären Ausdruck]] (Regexp) eng zu definieren.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:on ... &amp;lt;/code&amp;gt;&lt;br /&gt;
ist performanter als&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter { if ($EVENT eq &amp;quot;on&amp;quot; ... &amp;lt;/code&amp;gt;&lt;br /&gt;
auch wenn das Ergebnis gleich ist.&lt;br /&gt;
&lt;br /&gt;
Allerdings ist &lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:on ... &amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas1 notify MeinSchalter:off ... &amp;lt;/code&amp;gt;&lt;br /&gt;
langsamer als&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchaltero[nf]+ { if ($EVENT eq &amp;quot;on&amp;quot;  ) { fhem( ) } else { fhem(&amp;quot;... &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Oktober 2020 ==&lt;br /&gt;
=== Entprellen ===&lt;br /&gt;
Will man ein notify innerhalb eines bestimmten Zeitraumes nur einmal auslösen lassen, auch wenn er in diesem Zeitraum mehrfach getriggered werden sollte, so bietet sich das [[Attribut]] &#039;&#039;&#039;disabledAfterTrigger&#039;&#039;&#039; an:&lt;br /&gt;
:&amp;lt;code&amp;gt;attr &amp;lt;notify_device&amp;gt; disabledAfterTrigger &amp;lt;Anzahl Sekunden&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Oktober 2019 ==&lt;br /&gt;
=== Funkstörungen durch leere Batterien ===&lt;br /&gt;
Unerklärliche Funkstörungen besonders im SlowRF Bereich (z.b. FS20) mit stark verminderter Reichweite von CULs, gestörter [[RFR CUL]] Kommunikation etc. gestörtem Empfang von Funktelegrammen aller Art können ihre Ursache darin haben, dass einige Geräte mit (fast) leeren Batterien unkontrolliert senden und dadurch den Kanal mit Störsignalen verschmutzen. Anfällig sind insbesondere ältere FHT Fenstersensoren wie der [[FHT80TF]], die mit fast leeren Batterien eine Art Rauschen aussenden und damit die &#039;&#039;&#039;komplette&#039;&#039;&#039; FS20 Kommunikation lahmlegen können, Störungen beeinflussen auch andere Funkprotokolle im selben Frequenzbereich, wie z.b. HM.&lt;br /&gt;
Also im Falle unerklärlicher und weitreicher Funkstörungen die Batterien aller Geräte überprüfen.&lt;br /&gt;
&lt;br /&gt;
== Februar 2019 ==&lt;br /&gt;
=== Unterräume anlegen ===&lt;br /&gt;
[[Datei:Unterraeume.png|350px|thumb|right|Beispiel für einen gegliederten Raum &amp;quot;Steuerung&amp;quot;]]&lt;br /&gt;
In [[FHEMWEB]] besteht neben der Möglichkeit, Geräte dadurch übersichtlich anzuordnen, indem diese Gruppen und einfachen Räumen zugeordnet werden, auch die Möglichkeit, Räume weiter zu gliedern und Unterräume zu verwenden. Dazu wird nach der Angabe des Hauptraums der Unterraum, getrennt durch ein &amp;quot;-&amp;gt;&amp;quot; angegeben. Beispiele:&lt;br /&gt;
 attr &amp;lt;DEVICENAME&amp;gt; room Steuerung-&amp;gt;Logik&lt;br /&gt;
 attr &amp;lt;DEVICENAME&amp;gt; room Steuerung-&amp;gt;Heizung&lt;br /&gt;
&#039;&#039;&#039;Hinweis&#039;&#039;&#039;: Legt man zusätzlich einen Raum &#039;&#039;Steuerung&#039;&#039; an, erscheint dieser als zusätzlicher Eintrag in der Raumliste.&lt;br /&gt;
&lt;br /&gt;
== Januar 2019 ==&lt;br /&gt;
=== HomeMatic IP ===&lt;br /&gt;
Das [[HomeMatic IP]]-Protokoll unterscheidet sich deutlich vom bisherigen HomeMatic Protokoll, im Grunde ist es ein anderes System, das nur dem Namen nach dem älteren HomeMatic gleicht. HM-IP Geräte können aktuell (Anfang 2019) nur über eine systemeigene Zentrale CCU2 (als physisch vorhandenes Interface) und die HomeMatic-Module in FHEM integriert werden, sind in FHEM jedoch &#039;&#039;&#039;nicht&#039;&#039;&#039; unmittelbar als Homematic-Geräte ansprechbar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Dezember 2018 ==&lt;br /&gt;
===HomeMatic Heizungsregler Uhrzeit einstellen===&lt;br /&gt;
HomeMatic Thermostate / Heizungsregler  wie der HM-CC-TC der der HM-TC-IT-WM-W-EU etc. synchronisieren ihre Uhrzeit täglich etwa gegen Mitternacht mit der Zentrale. Man kann dieses Update aber jederzeit erzingen durch den Befehl  &lt;br /&gt;
 set &amp;lt;DEVICENAME&amp;gt; sysTime&lt;br /&gt;
&lt;br /&gt;
== November 2018 ==&lt;br /&gt;
===HomeMatic Heizunggeräte gebraucht gekauft===&lt;br /&gt;
HomeMatic Heizunggeräte gebraucht gekauft und jetzt lassen sie sich nicht richtig peeren oder pairen?&lt;br /&gt;
Das Problem ist meistens, dass die Geräte noch mit der Zentrale des Verkäufers gepairt oder mit anderen Geräten gepeert sind. &lt;br /&gt;
Mit Thermostaten wie der [[HM-CC-TC Funk-Wandthermostat]] oder der Nachfolger [[HM-TC-IT-WM-W-EU Funk-Wandthermostat AP]] können mit Ventilantrieben wie dem [[HM-CC-VD Funk-Stellantrieb]] nur gepeert werden, wenn &lt;br /&gt;
* die Thermostaten nicht selbst schon mit einer Zentrale (im FHEM Umfeld also z.b. einer [[Virtueller Controller VCCU]] oder [[HM-[[HM-CFG-LAN LAN Konfigurations-Adapter]] oder ähnliches) gepairt wurden&lt;br /&gt;
* die Ventilantriebe nicht selbst mit einer Zentrale gepairt oder mit einem Thermostaten gepeert wurden.&lt;br /&gt;
&lt;br /&gt;
Es ist daher sinnvoll zuerst alle Geräte zurückzusetzen, da viele Verkäufer dies vergessen. Wie das geht steht in der Anleitung.&lt;br /&gt;
Beispiele:&lt;br /&gt;
* HM-CC-TC -&amp;gt; MENU lange drücken, dann Sonderfunktion &amp;quot;RES&amp;quot; anwählen, mit OK-Taste bestätigen&lt;br /&gt;
* HM-CC-VD -&amp;gt; Anlernknopf 10 Sekunden lang drücken. Der Antrieb geht in Zustand A2, nachdem er das Ventil 1x auf- und zugefahren hat geht er in A3, Knopf nochmals drücken.&lt;br /&gt;
* HM-TC-IT-WM-W-EU -&amp;gt; Batterien entfernen, alle 3 Tasten gedrückt halten, Batterien einlegen, warten bis &amp;quot;rES&amp;quot; im Display erscheint, Tasten loslassen&lt;br /&gt;
&lt;br /&gt;
== Januar 2018 ==&lt;br /&gt;
=== at absolutem Datum ===&lt;br /&gt;
Vielen ist nicht klar, dass man mit dem &amp;quot;define … at&amp;quot; auch einfach ein absolutes Datum definieren kann (obwohl es in der Commandref steht). Anstatt umfangreicher DOIF Konstrukte oder &amp;quot;define … at&amp;quot; die täglich ablaufen und testen ob der gewünschte Tag schon erreicht ist, geht auch ein einfaches:&lt;br /&gt;
&lt;br /&gt;
 define Licht_Neujahr_2019 at 2019-01-03T06:01:01 set Licht1 on&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Allgemein: &lt;br /&gt;
 define &amp;lt;name&amp;gt; at [&amp;lt;datespec&amp;gt;] &amp;lt;command&amp;gt; &lt;br /&gt;
wobei &amp;lt;datespec&amp;gt; =  (YYYY-MM-DDTHH:MM:SS) (also in ISO8601 Schreibweise).&lt;br /&gt;
Wichtig ist die Angabe mit Sekunden, die nicht weggelassen werden können.&lt;br /&gt;
&lt;br /&gt;
== Dezember 2017 ==&lt;br /&gt;
=== perl Version ===&lt;br /&gt;
Gelegentlich taucht die Frage auf, welche perl Version zum Betrieb von FHEM minimal erforderlich ist. Bedauerlicherweise lässt sich das aber aktuell nicht definitiv bestimmen.&lt;br /&gt;
Rudolf König testet zur Zeit (Ende 2017) mit v5.16 (5 Jahre alt) und v5.24 (ca. 1 Jahr alt). &lt;br /&gt;
Sollte sich herausstellen, dass eines seiner Module (vor allem fhem.pl selbst) nicht mit der jeweils &#039;&#039;aktuellen&#039;&#039; perl Version funktioniert, so wird das Modul entsprechend kompatibel gemacht.&lt;br /&gt;
Andererseits verwendet Rudolf König nach eigener Aussage (bewusst) keine Features, die eine höhere Version als perl 5.8.3 (immerhin älter als 13 Jahre) voraussetzen. Tatsächlich zeigen aktuelle Installation auf relativ alten BuffaloLinkstation Systemen, dass FEHM mit perl 5.8.3 prinzipiell lauffähig ist.&lt;br /&gt;
&lt;br /&gt;
Rudolf König prüft als Maintainer von fhem.pl aber nicht, welche Mindestversionen andere Entwickler in Ihren Modulen benötigen. Es ist daher möglich oder sogar wahrscheinlich, das einzelne Module höhere Versionen als 5.8.3 benötigen.&lt;br /&gt;
&lt;br /&gt;
Es gibt aktuell keinen Weg, die Mindestanforderungen z.b. automatisiert zu ermitteln.&lt;br /&gt;
&lt;br /&gt;
== November 2017 ==&lt;br /&gt;
=== Grundlastmodul ===&lt;br /&gt;
Mit einem Grundlastmodul ist es möglich, LED Leuchtmittel an einem Schaltaktor / Dimmer zu betreiben. Dies ist bei manchen nicht möglich, da einige LEDs nachglimmen oder flackern. Das Grundlastmodul, welches parallel zum Verbraucher angeschlossen wird, kann diesen Effekt aufheben, da ein Verbraucher mit ohmscher Last simuliert wird.&lt;br /&gt;
Das Modul ermöglicht eventuell auch den Betrieb eines [[RSL 2-Draht Einbauschalter]]s, der bei LED Leuchtmitteln ansonsten nicht eingesetzt werden kann, da zum Betrieb eine Restspannung über den Verbraucher benötigt, der bei LED Lampen mit Vorschaltgerät nicht vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
In Frage kommt z.b. ein Eltako ELTA Grundlastelement GLE / PTC, das ca. 5-8 Euro kostet.&lt;br /&gt;
Technisch handelt sich dabei um einen PTC, also einen Widerstand mit positivem Temperaturkoeffizient, d.h. der Widerstand sinkt deutlich, wenn das Element kälter wird. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das genannte Grundlastelement hat folgende Daten: &lt;br /&gt;
 Kaltwiderstand: 3500 Ω&lt;br /&gt;
 Einschaltstrom bei 230 V: 65 mA (ca. 15 W)&lt;br /&gt;
 Verlustleistung nach 60 Sekunden: 0,65 W &lt;br /&gt;
&lt;br /&gt;
Im kalten Zustand lässt der PTC bei 230 Volt einen Strom von ca. 0,065 Ampere zu.  &lt;br /&gt;
Das reicht, um von Schaltaktoren, Freischaltern, Dimmern etc. als die erforderliche Grundlast erkannt zu werden.&lt;br /&gt;
Wird der Stromkreis eingeschaltet, fliesst auch tatsächlich ström durch den PTC, der sich dadurch schnell erwärmt (das Element wird tatsächlich sogar relativ heiss). Dadurch steigt steigt der Widerstand auf ca 50000-60000 Ohm an und die Verlustleistung sinkt auf unter 1 Watt. Der PTC regelt sich jetzt selber auf eine bestimmte Temperatur und Widerstand ein.&lt;br /&gt;
&lt;br /&gt;
Wird ausgeschaltet, so fliest über den PTC immer noch ein kleiner Reststrom von ca 0,005 Ampere, der als Grundlast reicht, um z.b. Spannungen abzubauen, die LEDs nachflackern lassen, dieser steigt mit Erkalten rasch an, dadurch werden auch Schalter wie die [[RSL 2-Draht Einbauschalter]] mit genug Strom versorgt.&lt;br /&gt;
&lt;br /&gt;
Theoretisch kann also auch ein PTC mit diesen Werten und einer Leistung von ca. 20 Watt selbst gebaut werden, der Preis der Einzelteile liegt bei unter 2 Euro. Das Eltako Element ist bereits mit Isolierung und Anschlussleitungen versehen, mit eigner Arbeitszeit ist der Preisvorteil beim Selberbau also gering.&lt;br /&gt;
&lt;br /&gt;
== Februar 2017 ==&lt;br /&gt;
=== at Zeiten ===&lt;br /&gt;
 at 03:00      -&amp;gt;  1x um 3 Uhr (wann immer das nächste mal 3 Uhr ist, ggf. erst morgen)&lt;br /&gt;
 at *03:00     -&amp;gt;  jeden Tag um 3 Uhr&lt;br /&gt;
 at +03:00     -&amp;gt;  in 3 Stunden&lt;br /&gt;
 at +*03:00    -&amp;gt;  in 3 Stunden und dann alle 3 Stunden erneut&lt;br /&gt;
 at +*{4}03:00 -&amp;gt;  in 3 Stunden und dann alle 3 Stunden erneut, aber nur 4x ausführen.&lt;br /&gt;
&lt;br /&gt;
== Oktober 2016 ==&lt;br /&gt;
=== Grundlagen der Heizungssteuerung ===&lt;br /&gt;
Der Artikel [[Grundlagen der Heizungssteuerung]] soll einen zentralen Einstiegspunkt und eine Übersicht der Möglichkeiten insb. für Neulinge in FHEM bieten.&lt;br /&gt;
&lt;br /&gt;
=== Batterieüberwachung für Geräte ohne Batteriestatus ===&lt;br /&gt;
Es gibt Möglichkeiten um auch bei Geräten ohne Batteriestatus-Reading eine schwache Batterie erkennen zu können: [[Batterie%C3%BCberwachung#Ger.C3.A4te_ohne_Batteriestatus|Geräte ohne Batteriestatus]].&lt;br /&gt;
&lt;br /&gt;
== Mai 2016 ==&lt;br /&gt;
=== DbLog reparieren ===&lt;br /&gt;
Sollte ein fhem mit DbLog Probleme machen, oder auf der SQL-Konsole Fehler werfen, so ist eine Reparatur der DB fällig. Das ist auf der Kommandozeile verhältnismäßig einfach möglich und wird im Kapitel [[DbLog#Datenbank reparieren]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
=== DbLog bearbeiten ===&lt;br /&gt;
Unerwünschte Einträge in den Loggings treten immer wieder mal auf. Wie man dies in einer Datenbank korrigiert, dazu gibt das Kapitel [[DbLog#Bearbeitung von Datenbank-Einträgen]] eine erste Einführung.&lt;br /&gt;
&lt;br /&gt;
=== Pollenflug ===&lt;br /&gt;
In dieser schönen Jahreszeit werden manche durch Heuschnupfen geplagt. Auf der Seite [[Pollenflug]] wird beschrieben, wie man eine Pollenvorhersage in fhem einbinden kann - hilft zwar nicht gegen das Niesen, ist aber trotzdem ganz informativ... ;-)&lt;br /&gt;
&lt;br /&gt;
== April 2016 ==&lt;br /&gt;
=== HomeMatic und VCCU ===&lt;br /&gt;
HomeMatic Nutzer sollten unbedingt eine [[Virtueller Controller VCCU|VCCU]] einrichten und nutzen.&lt;br /&gt;
Die Einrichtung ist unaufwändig und schafft jede Menge Vorteile, auch beim Einsetzen nur einer Schnittstelle wie z.B. einem [[HM-CFG-LAN LAN Konfigurations-Adapter]]. Auch die nachträglich Einrichtung ist problemlos, sofern vorher nur ein I/O Gerät (&amp;quot;Funkschnittstelle&amp;quot;) verwendet wurde.&lt;br /&gt;
&lt;br /&gt;
== Dezember 2015 ==&lt;br /&gt;
===defmod===&lt;br /&gt;
In vielen Fällen will man mit einer Aktion gleichzeitig eine andere Aktion bereits für später festlegen, z.b. nach Einschalten  einer Heizung durch einen Bewegungsmelder diese eine Stunde später wieder ausschalten.&lt;br /&gt;
&lt;br /&gt;
Dies kann z.B. durch ein Konstrukt dieser Art erledigt werden:&lt;br /&gt;
:&amp;lt;code&amp;gt;define Heizung_an notify Bewegung set HZG_WZ desired-temp 22 ;; define reset_Heizung at +01:00:00 set HZG_WZ desired-temp 16&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nachteilig ist, dass bei einer weiteren Auslösung des Bewegungsmelders die Heizzeit nicht verlängert wird, da eine Neudefinition von &#039;&#039;&#039;reset_Heizung&#039;&#039;&#039; mit der Fehlermeldung &#039;&#039;&#039;reset_Heizung already exists, delete it first&#039;&#039;&#039; quittiert wird. Die Lösung bisher war, das alte &#039;&#039;&#039;reset_Heizung&#039;&#039;&#039; zunächst zu löschen und dann erneut mit neuem Zeitstempel anzulegen:&lt;br /&gt;
:&amp;lt;code&amp;gt;define Heizung_an notify Bewegung set HZG_WZ desired-temp 22 ;; delete reset_Heizung ;; define reset_Heizung at +01:00:00 set HZG_WZ desired-temp 16&amp;lt;/code&amp;gt;&lt;br /&gt;
Aber auch dieses umständliche Konstrukt hat noch einen Nachteil: Es erzeugt bei einer ersten Auslösung eine Fehlermeldung, weil &#039;&#039;&#039;reset_Heizung&#039;&#039;&#039; noch nicht exisitert und daher nicht gelöscht werden kann.  Dies liesse sich abfangen, was die Konstruktion weiter verkomplizieren würde.&lt;br /&gt;
&lt;br /&gt;
Daher hat Rudolf König mit FHEM 5.6 den neuen Befehel &amp;quot;defmod&amp;quot; eingeführt, der ein noch nicht existieredendes define neu anlegt (wie &amp;quot;define&amp;quot;), eine bereits vorhandenes aber direkt ändert (wie &amp;quot;delete&amp;quot; und danach &amp;quot;define&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Dadurch lässt sich verkürzt schreiben:&lt;br /&gt;
:&amp;lt;code&amp;gt;define Heizung_an notify Bewegung set HZG_WZ desired-temp 22 ;; defmod reset_Heizung at +01:00:00 set HZG_WZ desired-temp 16&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== April 2015 ==&lt;br /&gt;
===FS20 Timer===&lt;br /&gt;
FS20 Aktoren beherrschen zwei verschiedene Timer-Methoden.&lt;br /&gt;
&lt;br /&gt;
Angenommen ein FS20 Device heisse &amp;quot;Lampe&amp;quot; und sei z.B. ein [[FS20_SU_Unterputz-Funk-Schalter|FS20 SU]] (Unterputzschalter), dann kann man mit FHEM sowohl &lt;br /&gt;
:&amp;lt;code&amp;gt; set Lampe on-for-timer 30&amp;lt;/code&amp;gt;&lt;br /&gt;
verwenden um die Lampe 30 Sekunden einzuschalten, aber auch zunächst in den FS20 SU die maximale Einschaltdauer einprogrammieren:&lt;br /&gt;
:&amp;lt;code&amp;gt; set Lampe timer 30&amp;lt;/code&amp;gt;&lt;br /&gt;
Dannach wird jedes normale&lt;br /&gt;
:&amp;lt;code&amp;gt; set Lampe on&amp;lt;/code&amp;gt;&lt;br /&gt;
die Lampe für nur 30 Sekunden einschalten.&lt;br /&gt;
&lt;br /&gt;
Als Timerwerte kommen in beiden Fällen die bekannten [[Trick_der_Woche#FS20_Timerzeiten|128 Sekundenwerte]] von 0,25 Sekunden bis Etwa 4,5 Stunden in Frage.&lt;br /&gt;
&lt;br /&gt;
Es ist offenbar nicht bei allen Aktoren möglich einen einmal eingestellten Timer zu löschen, neue Werte eingeben aber sehr wohl.&lt;br /&gt;
&lt;br /&gt;
Mehr hier: [[FS20_Allgemein#Gerätetimer setzen / löschen|FS20 timer]].&lt;br /&gt;
&lt;br /&gt;
== Februar 2015 ==&lt;br /&gt;
=== 1-wire am GPIO4-Port des RaspberryPi funktioniert nicht mehr nach Systemupdate ===&lt;br /&gt;
Es kann passieren, dass nach einem Systemupdate (apt-get update oder apt-get dist-upgrade) die 1-wire-Geräte am GPIO4-Port plötzlich nicht mehr funktionieren. Eine Problemlösung dazu ist im Artikel &amp;quot;[[Raspberry Pi und 1-Wire#1-wire am GPIO4-Port funktioniert nicht mehr nach Systemupdate]]&amp;quot; beschrieben.&lt;br /&gt;
&lt;br /&gt;
=== Backup der Konfiguration (fhem.cfg und fhem.state) bei jedem &amp;quot;save&amp;quot; ===&lt;br /&gt;
Der nachfolgende Codeschnipsel erstellt bei jedem &amp;quot;save&amp;quot; eine Kopie der aktuellen [[Konfiguration]] (fhem.cfg und fhem.state) in ein Verzeichnis &amp;quot;backup_cfg-state&amp;quot; welches unter /opt/fhem/ zu finden ist. Somit kann bei einem Fehler jederzeit auf den letzten Stand zurückgegangen werden.&lt;br /&gt;
Zuerst ins FHEM Befehlsfeld den folgenden Befehl eingeben:&lt;br /&gt;
:&amp;lt;code&amp;gt;{ `mkdir backup_cfg-state` } &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach folgendes [[notify]] anlegen:&lt;br /&gt;
 define backupCfg notify global:SAVE {\&lt;br /&gt;
 my $now = TimeNow();; $now =~ s/ /_/g;; \&lt;br /&gt;
 `cp $attr{global}{configfile} ./backup_cfg-state/fhem.cfg.$now`;;\&lt;br /&gt;
 `cp $attr{global}{statefile} ./backup_cfg-state/fhem.state.$now`;;\&lt;br /&gt;
 } &lt;br /&gt;
&lt;br /&gt;
Quelle: {{Link2Forum|Topic=30873|Message=234412|LinkText=FHEM-Forum}}&lt;br /&gt;
&lt;br /&gt;
== Januar 2015 ==&lt;br /&gt;
=== CUL &amp;amp; CO über Serial ID-einbinden ===&lt;br /&gt;
Bei mehreren USB-Geräten kann es vorkommen, dass sie vertauscht werden z.B. &#039;&#039;/dev/ttyUSB0&#039;&#039; zu&#039;&#039; /dev/ttyUSB1&#039;&#039; oder &#039;&#039;/dev/ttyACM0&#039;&#039; zu &#039;&#039;/dev/ttyACM1&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Um dies zu umgehen, kann man sie über ihre Serial-ID in FHEM einbinden.&lt;br /&gt;
&lt;br /&gt;
Dieser Befehl zeigt die Serial-ID:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;ls -l /dev/serial/by-id&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier die Beispielausgabe eines CUL868, JeeLink, RFXtrx und eines CUL433&lt;br /&gt;
&lt;br /&gt;
 user@xxxx:~# ls -l /dev/serial/by-id&lt;br /&gt;
 lrwxrwxrwx 1 root root 13 Jan  9 23:34 usb-busware.de_CUL868-if00 -&amp;gt; ../../ttyACM0&lt;br /&gt;
 lrwxrwxrwx 1 root root 13 Jan  9 13:26 usb-FTDI_FT232R_USB_UART_A901RQ9F-if00-port0-&amp;gt; ../../ttyUSB0&lt;br /&gt;
 lrwxrwxrwx 1 root root 13 Jan  9 13:26 usb-RFXCOM_RFXtrx433_A1WZWL5Y-if00-port0-&amp;gt; ../../ttyUSB1&lt;br /&gt;
 lrwxrwxrwx 1 root root 13 Jan  9 21:29 usb-busware.de_CUL433-if00 -&amp;gt; ../../ttyACM1 &lt;br /&gt;
&lt;br /&gt;
Damit lässt sich folgende Definition erstellen:&lt;br /&gt;
&lt;br /&gt;
z.B. für einen CUL868&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define CUL868 CUL /dev/serial/by-id/usb-busware.de_CUL868-if00@9600 1134&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oder einen JeeLink&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define Jeelink JeeLink /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A901RQ9F-if00-port0@57600&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Einschränkung:&#039;&#039;&#039; Bei CULs von Busware lassen sich nur CUL433 und CUL868 unterscheiden. Zwei CUL868 haben z.B. immer die gleiche Serial-ID.&lt;br /&gt;
&lt;br /&gt;
=== HM LAN Konfig-Adapter Antenne verbessern===&lt;br /&gt;
Die Antenne des [[HM-CFG-LAN LAN Konfigurations-Adapter]] kann man mit etwas Bastelgeschick verlängern um den Empfang zu verbessern. &lt;br /&gt;
&lt;br /&gt;
Sinnvoll ist die Verlängerung auf 1/2 Lambda  (868MHz = 17,27 cm) oder gar 1 Lambda.&lt;br /&gt;
1 Lambda Antennen haben starke Richtwirkung in Form eines gedachten Zylinders, dessen Mittelachse die Antenne ist.&lt;br /&gt;
D.h., Alles was sich in Richtung des Anfangs und des Endes des Antennedrahtes befindet, hat schlechteren Empfang als mit einer kurzen Antenne. Daher muss man die Antenne ggf. genauer ausrichten.&lt;br /&gt;
&lt;br /&gt;
Anleitungen dazu werden an verschiedenen Stellen veröffentlicht, z.B. in &lt;br /&gt;
[http://www.ip-symcon.de/forum/threads/18411-Umbau-HM-LAN-Adapter-auf-Lambda-1-2-Dipol-Antenne diesem Beitrag] im IP-Symcon Forum (anders als der Namen der Anleitung vermuten lässt, liegt hier kein Dipol vor, sondern eine &amp;quot;normale&amp;quot; 1 Lambda Antenne.)&lt;br /&gt;
&lt;br /&gt;
Prinzipiell so dünnen Draht wie möglich verwenden.&lt;br /&gt;
&lt;br /&gt;
Wer noch mehr rausholen will, kann auch zusätzlichen Aufwand betreiben und die Antenne etwas von der Elektronik entfernen, die nämlich Störstrahlung in die Antenne einkoppelt. Oder eine Groundplane bauen.&lt;br /&gt;
Ein Anleitung für die CCU (analog auch für den HM LAN Konfig-Adapter einsetzbar) gibt es [http://www.techwriter.de/beispiel/funkeige.htm hier].&lt;br /&gt;
&lt;br /&gt;
== Dezember 2014 ==&lt;br /&gt;
=== FHT80TF als &amp;quot;Prüfsender&amp;quot; einsetzen  ===&lt;br /&gt;
Da der [[FHT80TF-2]] günstig ist und seinen Zustand ca. alle zwei Minuten sendet, kann er gut zum Ermitteln der Funklage von [[SlowRF]] Komponenten genutzt werden, auch wenn diese nicht senden. Den RSSI einer FS20 Schaltsteckdose kann man z.B. nicht wissen, da die Dose nur ein Empfänger ist. Wenn eine Dose nicht gut funktioniert und man den Verdacht hat, dass sie funktechnisch ungünstig liegt, kann man einen [[FHT80TF-2]] neben die Steckdose legen und man bekommt nach zwei Minuten einen Wert, der (trotz umgekehrter Funkrichtung) gut genug ist, um einem Hinweise zu geben.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== November 2014 ==&lt;br /&gt;
=== FS20 Adressschema und die Rolle des Hauscodes  ===&lt;br /&gt;
[[FS20_Allgemein#FS20_Adressierungsschema_.28Vorschlag.29]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Oktober 2014 ==&lt;br /&gt;
=== Aktor für Wanddosen ohne Nulleiter  ===&lt;br /&gt;
Es gibt es viele Aktoren die man in Einbaudosen hinter Schaltern einbauen kann. Oft scheitert deren Nutzung aber daran, dass in vielen Elektroinstalltionen in der Einbaudose eines (Licht)schalters kein Neutralleiter (Nulleiter) verlegt ist, den die meisten Aktoren zur eigenen Stromversorgung brauchen. Hier kann der [[RSL 2-Draht Einbauschalter]] helfen, der auch ohne Neutraleiter funktioniert und kompatibel zu InterTechno ist. Er lässt sich z.B. mit einem CUL(433) schalten. Problematisch ist damit allerdings das Schalten von LED Lampen.&lt;br /&gt;
&lt;br /&gt;
== August 2014 ==&lt;br /&gt;
=== Perl-Skripte Online testen  ===&lt;br /&gt;
Im Internet existieren Webseiten auf denen man Perl-Code online testen kann. Beispielsweise auf [http://www.tutorialspoint.com/execute_perl_online.php codingground] kann man Code zum Testen eingeben und die Auswirkungen betrachten. Dies eignet sich zur schnellen Fehleranalyse oder um Perl zu lernen. Natürlich lassen sich keine FHEM-Besonderheiten nutzen.&lt;br /&gt;
&lt;br /&gt;
== Juli 2014 ==&lt;br /&gt;
=== Funklast reduzieren===&lt;br /&gt;
Bewegungsmelder erzeugen in der Regel eine recht hohe Funklast, wenn sie oft ausgelöst werden, also z.B. Licht in einem Zimmer schalten sollen.&lt;br /&gt;
&lt;br /&gt;
Konstruktionen der Art:&lt;br /&gt;
:&amp;lt;code&amp;gt;define FlurLicht notify Bewegungsmelder_Flur:motion:.* set Licht_Flur on-for-timer 256&amp;lt;/code&amp;gt;&lt;br /&gt;
haben daher den Nachteil bei viel Bewegung im Flur und je nach Einstellung des Sendeabstandes des Bewegungsmelders mindestens alle 120 Sekunde oder öfter ein &lt;br /&gt;
:&amp;lt;code&amp;gt;on-for-timer 256&amp;lt;/code&amp;gt;&lt;br /&gt;
zu senden. Das erzeugt eine hohe Funklast, speziell wenn der Aktor ein SlowRF Gerät ist (z.B. FS20 Unterputzschalter).&lt;br /&gt;
In solchen Fällen kann es helfen, nur dann einen Befehl zu senden, wenn das Licht nicht schon an ist:&lt;br /&gt;
:&amp;lt;code&amp;gt;define FlurLicht notify Bewegungsmelder_Flur:motion:.* { if (Value(&amp;quot;Licht_Flur&amp;quot;) eq &amp;quot;off&amp;quot;) { fhem (&amp;quot;set Licht_Flur1 on-for-timer 256&amp;quot;) } }&amp;lt;/code&amp;gt;&lt;br /&gt;
Nachteilig ist aber, dass eine Auslösung innerhalb 256 Sekunden die Einschaltzeit nicht verlängert. Dies kann man umgehen, indem man nicht on-for-timer verwendet, sondern den Aktor selber verzögert auschaltet und bei weiteren Auslösungen nur die Verzögerung erneut anlegt:&lt;br /&gt;
:&amp;lt;code&amp;gt;define FlurLicht notify Bewegungsmelder_Flur:motion:.* { if (Value(&amp;quot;Licht_Flur1&amp;quot;) eq &amp;quot;off&amp;quot;) { fhem (&amp;quot;set Licht_Flur on ;; define FlurLicht_aus at +00:04:16 set Licht_Flur off&amp;quot;) } else { fhem (&amp;quot;delete FlurLicht_aus ;; define FlurLicht_aus at +00:04:16 set Licht_Flur off&amp;quot;) }}&amp;lt;/code&amp;gt;&lt;br /&gt;
Durch den relativ neuen Befehl &amp;quot;defmod&amp;quot; kann ausserdem das Löschen und neu Anlegen zusammengefasst werden, sieh Tipp Dezember 2015&lt;br /&gt;
&lt;br /&gt;
== Juni 2014 ==&lt;br /&gt;
=== Batteriestatus bei HomeMatic Devices aktivieren===&lt;br /&gt;
Zumindest einige (wenn nicht alle) batteriegespeisten HM-Geräte können Batteriemeldungen senden, tun dies in der normalen Konfiguration aber nicht.&lt;br /&gt;
Dazu muss das Register cyclicInfoMsg auf on gesetzt werden. &lt;br /&gt;
&lt;br /&gt;
Wie man das macht steht z.B. hier&lt;br /&gt;
[[HM-SEC-SC_Tür-Fensterkontakt#Batteriestatus_aktivieren]]&lt;br /&gt;
und hier&lt;br /&gt;
[[HomeMatic_Type_ThreeState]]&lt;br /&gt;
&lt;br /&gt;
== Mai 2014 ==&lt;br /&gt;
=== Dummywert mit aktueller Uhrzeit versehen in anderen Dummy kopieren===&lt;br /&gt;
Der Inhalt von Dummy1 soll erweitert um  Uhrzeit und Datum in Dummy2 kopiert werden (z.B. um die Urzeit der letzten Auslösung einer Alarmanlage anzuzeigen)&lt;br /&gt;
:&amp;lt;code&amp;gt;{ fhem(&amp;quot;set dummy2 &amp;quot; . (Value(&amp;quot;Dummy1&amp;quot;).&amp;quot; &amp;quot;.TimeNow()) )  } &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Zwei Dummywerte in einen anderen Dummy kopieren ===&lt;br /&gt;
Der String in Dummy1 soll um den String in Dummy2 erweitert und nach Dummy3 kopiert werden:&lt;br /&gt;
:&amp;lt;code&amp;gt;{ fhem(&amp;quot;set Dummy3 &amp;quot;.(Value(&amp;quot;Dummy1&amp;quot;)+Value(&amp;quot;Dummy2&amp;quot;))) } &amp;lt;/code&amp;gt;&lt;br /&gt;
(Achtung: &amp;quot;+&amp;quot;  ist Zahlen addieren, &amp;quot;.&amp;quot; ist String konkatenieren / verketten)&lt;br /&gt;
&lt;br /&gt;
== April 2014==&lt;br /&gt;
=== Code sparen ===&lt;br /&gt;
Wer Definitionen wie die aus dem März zum [[Trick der Woche#Zuverlässigkeit von FS20 Schaltungen erhöhen|Abfangen von Fehlbedienungen]] verwendet, kann durch eine ELSE Erweiterung auch gleich das Auschalten erledigen.&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_TV_on notify TV { if (&amp;quot;$EVENT&amp;quot; eq &amp;quot;on&amp;quot; || &amp;quot;$EVENT&amp;quot; eq &amp;quot;dimup&amp;quot;) { fhem(&amp;quot;set TV on&amp;quot;) } else { fhem(&amp;quot;set TV off&amp;quot;) } }&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hierdurch schaltet ON oder versehentlich zu langes Drücken (also DIMUP) den Fernseher ein, jeder &#039;&#039;andere&#039;&#039; Tastendruck (also insbesondere die OFF Taste oder zu langes Drücken der OFF Taste -&amp;gt; DIMDOWN) den Fernseher aus.&lt;br /&gt;
&lt;br /&gt;
Voraussetzung ist, dass die Fernbedienung standardkonfiguriert ist, siehe auch nächster Tip.&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration eines FS20 Senders prüfen ===&lt;br /&gt;
Gelegentlich reagieren bestimmte notifys nicht, die von Sendern (Fernbedienungen, Sensoren oder Schaltern) ausgelöst werden sollen. Speziell bei FS20 aber auch bei HomeMatic kann das daran liegen, dass der Sender nicht sendet was man denkt. So gut wie alle FS20 Sender kennen nämlich nicht nur ON und OFF, sondern über ein Dutzend Schaltzustände. Dimmen ist einem noch hinreichend bewusst, es gibt aber auch exotische Dinge wie  Ein-für-Zeitdauer, Ein-auf-alte-Helligkeit, Aus-für-Zeitdauer (nur FS20), Ein-für-Zeitdauer-dannach-alter-Zustand und vieles mehr.&lt;br /&gt;
&lt;br /&gt;
Was also ein Infrarot-Bewegungsmelder bei Auslösung sendet und auch was eine Fernbedienungstaste sendet ist einstellbar. Wenn jetzt zum Beispiel an einer Fernbedienung auf Tastendruck nicht ON sondern Ein-für-Zeitdauer (ON-FOR-TIMER) gesendet wird, wird&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_TV_on notify TVFB:on set TV on&amp;lt;/code&amp;gt;&lt;br /&gt;
seltsamerweise nicht auslösen, obwohl die richtige Taste (und diese auch nicht zu lang) gedrückt wurde.&lt;br /&gt;
&lt;br /&gt;
Auch wenn man sich sicher ist, das Richtige in die Fernbedienung/Sensoren einprogramiert zu haben, ist ein einfacher Test immer, dies mit&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_TV notify TVFB set TV on&amp;lt;/code&amp;gt;&lt;br /&gt;
zu prüfen. Dieses notify löst immer aus, wenn &amp;quot;TVFB&amp;quot;  &#039;&#039;irgendetwas&#039;&#039; sendet, egal was. (Beachte: Man kann dann den Fernseher aber nicht mehr ausschalten, da auch die Austaste das notify auslöst und zum TV-Aktor nur &amp;quot;on&amp;quot; sendet). &lt;br /&gt;
&lt;br /&gt;
Geht die Schaltung jetzt (kann man den Fernseher also jetzt EINschalten), liegt der Verdacht nahe, dass die Konfiguration des Senders / Sensors anders ist, als man denkt. Das Logfile, der EventMonitor oder ein Beobachtung von FHEM per Telnet mittels &amp;quot;inform&amp;quot; gibt Aufschluss, welcher Befehl tatsächlich empfangen wurde.&lt;br /&gt;
&lt;br /&gt;
== März 2014==&lt;br /&gt;
=== Zuverlässigkeit von FS20 Schaltungen erhöhen ===&lt;br /&gt;
FS20 Fernbedienungen senden bei Tastendrücken von mehr als 0,4 Sekunden anstatt ON bzw. OFF DIMUP bzw DIMDOWN.(Auch einige FBs anderer Systeme verhalten sich ähnlich)&lt;br /&gt;
&lt;br /&gt;
Das führt gelegentlich zu allgemein schlechter Bedienbarkeit (und schlechtem WAF), da 0,4 Sekunden relativ kurz ist und gerne aus versehen länger gedrückt wird. Das ist vor allem problematisch, wenn etwas geschaltet werden soll, was keinen Dimmer hat oder Dimmen nicht unterstützt.&lt;br /&gt;
&lt;br /&gt;
Eine Konfiguration wie &lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_TV_on notify TVFB:on set TV on&amp;lt;/code&amp;gt;&lt;br /&gt;
hat also dann den Nachteil, dass bei versehentlich zu langem Tastendruck auf die Fernbedienung das TV nicht angeht. Da die meisten Nutzer unbewusst dazu neigen, bei Misserfolg die selbe Taste erneut aber länger zu drücken (was erneut keinen Erfolg zeigt) ist Frustration zu erwarten.&lt;br /&gt;
&lt;br /&gt;
Es kann daher speziell bei nicht dimmbaren Aktoren von Vorteil sein, auch dimmen abzufangen, z.B. durch eine zweite zusätzliche Definition:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_TV_dimup notify TVFB:dimup set TV on&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es ist in der Regel einfacher, einige dieser zusätzlichen Definitionen einzufügen, als allen Bedienern des Systems zu erklären, dass man keinesfalls länger als 0,4 Sekunden drücken darf.&lt;br /&gt;
&lt;br /&gt;
Alternativ kann man auch beide Befehle in einer Definition durch Perlbefehle {} abfangen:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_TV_on notify TVFB { if (&amp;quot;$EVENT&amp;quot; eq &amp;quot;on&amp;quot; || &amp;quot;$EVENT&amp;quot; eq &amp;quot;dimup&amp;quot;) { fhem(&amp;quot;set TV on&amp;quot;) }}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Allerdings hat dies den Nachteil, dass jedes Event dieses define durchläuft und erst später geprüft wird, ob das Event überhaupt irgendetwas auslöst. &lt;br /&gt;
Z.B. wird&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_TV_on notify TVFB ...&amp;lt;/code&amp;gt; &lt;br /&gt;
auch durch TVFB off ausgelöst (oder unter bestimmten Bedungen sogar duch alle Events), nur um dann nach dem Perl Test festzustellen, dass doch nichts getan werden soll.&lt;br /&gt;
&lt;br /&gt;
Ressourcenschonender ist daher:&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_TV_on notify TVFB:on|TVFB:dimup set TV on &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Andere Möglichkeiten vergleiche: [[Trick der Woche#notify durch mehrere Ereignisse auslösen lassen|Notify durch mehrere Ereignisse auslösen lassen]] und [[Trick der Woche#Performance_von_Notifys|Performance von Notifys]]&lt;br /&gt;
&lt;br /&gt;
== Februar 2014==&lt;br /&gt;
=== Sequence nutzen ===&lt;br /&gt;
Man kann Aktionen statt mit einem Tastedruck auch mit einer Sequenz von Tastendücken auslösen. Das Format des Befehle ist:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define &amp;lt;name&amp;gt; sequence &amp;lt;re1&amp;gt; &amp;lt;timeout1&amp;gt; &amp;lt;re2&amp;gt; [&amp;lt;timeout2&amp;gt; &amp;lt;re3&amp;gt; ...] &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
wobei &amp;lt;re1&amp;gt; ...&amp;lt;re_n&amp;gt; die Aktionen sind und &amp;lt;timeout_n&amp;gt; der maximale Abstand der Tastendrücke in Sekunden.&lt;br /&gt;
&lt;br /&gt;
Angenommen, man wolle z.B. eine Lampe dann anschalten, wenn man zuerst Taste1 EIN, dann Taste2 AUS und dann wieder Taste1 EIN einer Fernbedienung drückt, könnte das konkret so aussehen:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define MeineLampenSequenz1 sequence Btn1:on 0.5 Btn2:off 0.5 Btn1:on&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zwischen jedem der Tastendrücke darf eine halbe Sekunde Abstand sein. Diese Definition selbst löst die Lampe nicht aus, sondern definiert nur wie die Sequenz aussehen soll. Um die Lampe bei erfolgreicher Betätigung der Sequenz auch einzuschalten, bedarf es zusätzlich etwas wie:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define MeineLampe notify MeineLampenSequenz1:trigger set Lampe on&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sequence kann man gut nutzen, um mit einer Fernbedienung mehr Funktionen zu schalten als Tasten zur Verfügung stehen. Ebenso könnte man damit simple Codeschlösser für Alarmanlagen bauen, z.B. um eine Anlage auszuschalten, wenn eine bestimmte Abfolge von Tasten gedrückt wird.&lt;br /&gt;
&lt;br /&gt;
Je nach Funksystem nimmt die Zuverlässigkeit aber rasch ab. Angenommen im Bereich FS20 (das System ist etwas unzuverlässiger ist als z.B. HomeMatic) seien 95% aller Funktsignale ungestört übertragbar, dann würden in der Praxis von 100 Tastendrücken an einer Fernbedienung 95x Erfolg zeigen und 5x fehlschlagen; das ist sicher tolerabel. &lt;br /&gt;
&lt;br /&gt;
Bei einer Sequenzlänge von nur 4 Tasten würde die kombinierte Erfolgsquote der Sequenz jedoch nur noch ca. 80% sein, zum Ausschalten einer Alarmanlage vermutlich bereits unpraktisch.&lt;br /&gt;
&lt;br /&gt;
== Januar 2014==&lt;br /&gt;
===isday===&lt;br /&gt;
Bekanntlich kann man  mit &amp;quot;isday&amp;quot; leicht testen ob es draussen hell ist oder nicht. isday ist eine Funktion des (automatisch geladenen) Moduls [[SUNRISE_EL]], das auch sunset und sunrise enthält.&lt;br /&gt;
&lt;br /&gt;
Problematisch bei isday ist die fehlende Möglichkeit, Sonnenaufgang und Untergang einzustellen (zumindest wenn man nicht 99_SUNRISE_EL.pm verändern will): isday ist wahr, wenn die Sonne im gegebenen Breitengrad theoretisch sichtbar ist. Wenn örtliche Gegebenheiten (Bebauung, Bäume, Tal etc.) eine Anpassung erfordern, kann man sich auch ein eigenes isday basteln, in dem man sunrise und sunset verwendet und dieses mit getrennten offsets versieht.&lt;br /&gt;
&lt;br /&gt;
Zuerst definiert man sich eine Variable (&amp;quot;dummy&amp;quot;) der anstelle isday eingesetzt werden soll, z.B.:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define Tageslicht dummy &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann wird diese mit sunset und sunrise befüllt:&lt;br /&gt;
&lt;br /&gt;
 define SetDummy1 at *{sunset(-3600)} set Tageslicht hell &lt;br /&gt;
 define SetDummy2 at *{sunrise(+1800)} set Tageslicht dunkel &lt;br /&gt;
&lt;br /&gt;
Jetzt kann für jeden Wechsel ein eigener Offset gewählt werden, im Beispiel 3600 Sekunden vor Sonnenuntergang und 1800 Sekunden nach Sonnenaufgang. Anstatt das Dummy &amp;quot;Tageslicht&amp;quot; mit den Werten &amp;quot;hell/dunkel&amp;quot; zu befüllen, kann natürlich auch 1/0 oder &amp;quot;Tag/Nacht&amp;quot; etc. verwendet werden, je nachdem was bei der Anwendung besser passt.&lt;br /&gt;
&lt;br /&gt;
Für höhere Ansprüche könnte hingegen das [[Twilight]]-Modul verwendet werden, das Dämmerungsstufen kennt.&lt;br /&gt;
&lt;br /&gt;
===Struktur von &amp;quot;else if&amp;quot; Verzweigungen===&lt;br /&gt;
 define ... notify ... {\&lt;br /&gt;
  if ... {\&lt;br /&gt;
   fhem (&amp;quot;... ;; ...&amp;quot;)\&lt;br /&gt;
  }\&lt;br /&gt;
  elsif ... {\&lt;br /&gt;
    fhem (&amp;quot;... ;; ...&amp;quot;)\&lt;br /&gt;
  }\&lt;br /&gt;
  elsif ... {\&lt;br /&gt;
    fhem (&amp;quot;... ;; ...&amp;quot;)\&lt;br /&gt;
  }\&lt;br /&gt;
  else {\&lt;br /&gt;
   if ... {\&lt;br /&gt;
    fhem (&amp;quot;... ;; ...&amp;quot;)\&lt;br /&gt;
  }\&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Achtung: es muss tatsächlich &amp;quot;elsif&amp;quot; heissen und nicht &amp;quot;elseif&amp;quot; oder &amp;quot;else if&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Gilt für Perl Aufrufe. &lt;br /&gt;
Wer aktuell in FHEM neu einsteigt, kann auch den seit 2014 zur Verfügung stehenden FHEM Befehl [[DOIF]] verwenden, der komfortabler ist und zusätzliche Features aufweist.&lt;br /&gt;
&lt;br /&gt;
== Dezember 2013==&lt;br /&gt;
===notify durch mehrere Ereignisse auslösen lassen===&lt;br /&gt;
Bekanntermassen löst&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter …&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
aus, wenn irgendein Ereignis vom Sender &amp;quot;MeinSchalter&amp;quot; eintrifft.&lt;br /&gt;
&lt;br /&gt;
Mit&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:on …&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
wird das notify jedoch nur ausgelöst, wenn dieses Ereignis eine &amp;quot;on&amp;quot; ist.&lt;br /&gt;
Wenn man aber möchte, das z.B. &amp;quot;on&amp;quot; und &amp;quot;off&amp;quot; auslöst (um etwa Dim-Befehle auszuschliessen) kann dies wie folgt erreicht werden:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:(on|off) …&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Klammern sind wichtig, vergleiche eine Lösung, bei der zwei Sender alternativ das notify auslösen können:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:on|MeinAndererSchalter:on …&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Selbstverständlich geht z.B. auch folgendes:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define irgendwas notify MeinSchalter:on|MeinAndererSchalter …&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier wird ausgelöst wenn &amp;quot;MeinSchalter&amp;quot; das Ereignis &amp;quot;on&amp;quot; liefert oder &amp;quot;MeinAndererSchalter&amp;quot; irgendein Ereignis. Beachte hierzu jedoch den Tipp vom Dezember 2020 &amp;quot;Performance von Notifys&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Aktoren über mehrere Funkschnittstellen ansprechen ===&lt;br /&gt;
Falls man mehrere Funkschnittstellen zur Reichweitenverlängerung hat (CUL / CUNO etc), und ein Aktor von beiden Funkschnittstellen in etwa gleich (schlecht) erreichbar ist, mag der Wunsch aufkommen, einen Funkbefehl über beide Schnittstellen auszusenden. Dies ist bei Funkprotokollen möglich, die kein echtes Pairing der Aktoren an die Funkschnittstelle erfordern, also z.B. FS20 oder Intertechno, nicht jedoch ohne weiteres bei HomeMatic.&lt;br /&gt;
&lt;br /&gt;
Problematisch ist aber, dass die Funkschnittstelle über IODev eindeutige je Aktor festgelegt werden muss, eine Zuordnung mehrerer IODevs ist nicht vorgesehen.&lt;br /&gt;
(wenn man IODev nicht setzt, wird per default die LETZTE definiert passende Schnittstelle verwendet)&lt;br /&gt;
&lt;br /&gt;
Dieses Problem kann mit einem Trick aber umgangen werden. Und zwar legt man den Aktor 2x mit gleicher Adresse aber abweichenden Namen und IOdevs an, z.B. so:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 define brenner_CUL1 FS20 11114244 11&lt;br /&gt;
 attr brenner_CUL1 IODev CUL1&lt;br /&gt;
 attr brenner_CUL2 room Keller&lt;br /&gt;
&lt;br /&gt;
 define brenner_CUL2 FS20 11114244 11&lt;br /&gt;
 attr brenner_CUL2 IODev CUL2&lt;br /&gt;
 attr brenner_CUL2 room Keller&lt;br /&gt;
&lt;br /&gt;
Ein Befehl der Art:&lt;br /&gt;
&lt;br /&gt;
 set brenner_CUL1,brenner_CUL2 on&lt;br /&gt;
&lt;br /&gt;
sendet den ON Befehl für den FS20 Aktor 11114244 11  jetzt tatsächlich über beide CULs aus!&lt;br /&gt;
&lt;br /&gt;
Achtung: Wenn die Schnittstellen gleichschnell angebunden sind, sollte vermutlich der [[Sendpool]] verwendet werden, da die Aussendungen sonst tatsächlich gleichzeitig erfolgen könnten und sich dann gegenseitig stören würden. Dieser Trick funktioniert ausserdem nur bei Befehlen, bei denen es im Zweifel egal ist, wenn sie beim Aktor 2x eintreffen. &lt;br /&gt;
&lt;br /&gt;
Bei HomeMatic lässt sich ein ähnlicher Effekt durch einrichten einer [[Virtueller Controller VCCU|virtuellen CCU]] erreichen.&lt;br /&gt;
&lt;br /&gt;
=== Retrycount bei FHTs ist überflüssig===&lt;br /&gt;
Das von der Funktion &#039;&#039;autocreate&#039;&#039; älterer FHEM Versionen beim Anlegen von FHT80 Heizungsreglern voreingetragene attribute &amp;quot;retrycount&amp;quot; hat in den allermeisten Fällen keine Wirkung, da es NUR greift, wenn man als Funkschnittstelle eine FHZ1X00PC verwendet und dann den Softbuffer einschaltet. Selbst wenn man diese Konfiguration nutzt, will gut überlegt werden, ob die Wirkung postiv ist: Bei ungenügender Empfangslage vergrössert es Kommunikationsprobleme eventuell sogar.&lt;br /&gt;
&lt;br /&gt;
Es kann also in der Regel entfernt oder auf den Wert &amp;quot;1&amp;quot; gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
 define Heizung_Bad FHT 060d&lt;br /&gt;
 attr Heizung_Bad retrycount 3       &amp;lt;=== Diese Zeile entfernen&lt;br /&gt;
&lt;br /&gt;
Siehe auch:[[Kommunikationsprobleme mit FHT]]&lt;br /&gt;
&lt;br /&gt;
== November 2013 ==&lt;br /&gt;
=== FS20 Funksteckdose sicherer schalten===&lt;br /&gt;
Seltsamerweise kommt es vor, das FS20 Aktoren - insbesondere die FS20 Funksteckdose - an der Grenze der Funkreichweite bestimmte Befehle eines Typs empfängt, andere aber nicht. Z.B. lässt sich die FS20 Steckdose zwar immer einschalten, aber oft nicht mehr aus (oder umgekehrt).&lt;br /&gt;
&lt;br /&gt;
Gelegentlich kann man die Zuverlässigkeit erhöhen, indem man statt dem nicht funktionierenden Befehl das Gegenteil mit &amp;quot;for-timer 1&amp;quot; verwendet.&lt;br /&gt;
&lt;br /&gt;
Im Fall, dass eine FS20 Steckdose sich also einwandfrei EINschalten lässt:&lt;br /&gt;
:&amp;lt;code&amp;gt;set SteckdoseA on&amp;lt;/code&amp;gt;&lt;br /&gt;
aber oft ein AUSschalten mittels&lt;br /&gt;
:&amp;lt;code&amp;gt;set SteckdoseA off&amp;lt;/code&amp;gt;&lt;br /&gt;
nicht funktioniert, kann man versuchen die Dose anstelle mit &amp;quot;off&amp;quot; mit dem Befehl&lt;br /&gt;
:&amp;lt;code&amp;gt;set SteckdoseA on-for-timer 1&amp;lt;/code&amp;gt;&lt;br /&gt;
auszuschalten.&lt;br /&gt;
&lt;br /&gt;
Analog kann man mit off-for-timer arbeiten, wenn sich Aktoren nicht einschalten lassen, ausschalten aber geht.&lt;br /&gt;
&lt;br /&gt;
Achtung: Dieser Trick funtioniert ausdrücklich nur, wenn der &amp;quot;on/off-for-timer&amp;quot; Befehl im Aktor selber abgebildet wird. Daher ist der Trick vermutlich nicht auf andere Funksysteme übertragbar. z.B. unterstützt HM nur on-for-timer und Intertechno kennt keinen Timer.&lt;br /&gt;
&lt;br /&gt;
=== Mehrere Geräte zugleich schalten===&lt;br /&gt;
Ein Ereignis soll mehrere Geräte schalten:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_Bewegungsmelder notify Bewegungsmelder set Lampe1 on;;set Lampe2 on;;set FunksteckdoseA on&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aus Übersichtlichkeitsgründen können vor und nach den Semikolons auch Leerzeichen eingefügt werden (obwohl in einigen Dokumentation behauptet wird, dies dürfe man nicht machen):&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_Bewegungsmelder notify Bewegungsmelder set Lampe1 on ;; set Lampe2 on ;; set FunksteckdoseA on&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn der Schaltbefehl bei allen Geräten gleich ist, kann man wie folgt zusammenfassen:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define act_on_Bewegungsmelder notify Bewegungsmelder set Lampe1,Lampe2,FunksteckdoseA on&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Komma wird nicht [[Escapen in Perlbefehlen|escaped]] (verdoppelt), hier darf tatsächlich KEIN Leerzeichen vor oder nach dem Komma eingefügt werden.&lt;br /&gt;
&lt;br /&gt;
=== Logfileinträge unterdrücken===&lt;br /&gt;
Das Attribute &amp;quot;verbose 0&amp;quot; verhindert, dass das Gerät Logfileinträge erzeugt.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 define Funksteckdose FS20 22224222 01&lt;br /&gt;
 attr Funksteckdose verbose 0&lt;br /&gt;
&lt;br /&gt;
===FHT Lazy Mode benutzen===&lt;br /&gt;
Es gibt wenig Gründe, den FHT &amp;quot;Lazy Mode&amp;quot; nicht zu verwenden&lt;br /&gt;
 define Heizung_Bad FHT 060d&lt;br /&gt;
 attr Heizung_Bad lazy&lt;br /&gt;
&lt;br /&gt;
Dieser sorgt dafür, dass Temperaturänderungen (genau genommen alle Änderungen, auch z.B. date) nur übertragen werden, wenn sie nicht sowieso schon am FHT eingestellt sind und veringern die Funklast dadurch deutlich. &lt;br /&gt;
&lt;br /&gt;
Siehe auch: [[Kommunikationsprobleme mit FHT]]&lt;br /&gt;
&lt;br /&gt;
== Oktober 2013 ==&lt;br /&gt;
=== Zuverlässigkeit von Wiedereinschalten erhöhen ===&lt;br /&gt;
Speziell bei FS20 Aktoren ist wegen des fehlenden Rückkanals nicht leicht erkennbar, ob ein Einschaltbefehl Wirkung gezeigt hat. Das bringt einen ganz schlechten WAF, wenn man z.B. mit einem FS20 Aktor eine Heizung ausschaltet und das Wiedereinschalten nach z.B. einer Stunde nicht klappt.&lt;br /&gt;
&lt;br /&gt;
Hier empfiehlt es sich, das Ausschalten mittels &lt;br /&gt;
:&amp;lt;code&amp;gt;set Heizungs_schalter off-for-timer 3584&amp;lt;/code&amp;gt;   (= fast eine Stunde)&lt;br /&gt;
zu erledigen. Da bei FS20 der off-for-timer Befehl im Aktor abgewickelt wird (und nicht durch FHEM), schaltet sich der Aktor auch dann garantiert wieder ein, wenn FHEM abstürzt, eine Funkstörung vorliegt oder ähnliches.  Bei Bedarf kann der Befehl off-for-timer zur  Verlängerung der Ausschaltzeit wiederholt werden. Dies kann z.B. nötig sein, wenn die Ausschaltung länger als 4,5 Stunden (15360 Sekunden, der Maximalwert des Timers) dauern soll.&lt;br /&gt;
&lt;br /&gt;
Achtung: dieser Trick funktioniert nur, wenn der Aktor &amp;quot;off-for-timer&amp;quot; selbst beherrscht. FS20 Geräte können das, HomeMatic können aber nur &amp;quot;on-for-timer&amp;quot;. Man kann off-for-timer mit HomeMatic trotzdem verwenden, aber in diesem Fall sendet FHEM den Einschaltbefehl nach der Timerzeit. InterTechno, RSL etc, können gar keinen Timer, hier sendet FHEM immer 2 Befehle im passenden Abstand.&lt;br /&gt;
&lt;br /&gt;
=== FS20 Timerzeiten ===&lt;br /&gt;
FS20 Timer werden in Sekunden angegeben. Es sind jedoch nicht alle Werte einstellbar. Da der Timer Wert in 7 Bit übertragen werden muss, sind nur 128 Werte möglich. Um mit diesen Werten im unteren Bereich möglichst fein aufzulösen, andererseits aber auch lange Zeiten zu ermöglichen, ist die Verteilung nicht linear. Einstellbar sind folgende Zeiten in Sekunden;&lt;br /&gt;
&lt;br /&gt;
0,25  0,5  0,75  1  1,25  1,5  1,75  2  2,25  2,5  2,75  3  3,25  3,5  3,75   &lt;br /&gt;
4  4,5  5  5,5  6  6,5  7  7,5  8  9  10  11  12  13  14  15  16  18  20  22   &lt;br /&gt;
24  26  28  30  32  36  40  44  48  52  56  60  64  72  80  88  96  104  112   &lt;br /&gt;
120  128  144  160  176  192  208  224  240  256  288  320  352  384  416   &lt;br /&gt;
448  480  512  576  640  704  768  832  896  960  1024  1152  1280  1408   &lt;br /&gt;
1536  1664  1792  1920  2048  2304  2560  2816  3072  3328  3584  3840  4096   &lt;br /&gt;
4608  5120  5632  6144  6656  7168  7680  8192  9216  10240  11264  12288   &lt;br /&gt;
13312  14336  15360 &lt;br /&gt;
(etwas übersichtlicher formatiert auch [[FS20 Allgemein#ON/OFF Befehle mit Time Parameter|hier]]).&lt;br /&gt;
 &lt;br /&gt;
Andere Zeiten werden von FHEM gerundet. Ein neues Setzen des Timer für FS20 löscht den alten Wert.&lt;br /&gt;
&lt;br /&gt;
Auch HomeMatic Aktoren beherrschen Time Parameter, im Gegensatz zu FS20 allerdings kein &amp;quot;off-for-timer&amp;quot;. Details dazu im Artikel [[HomeMatic Timerwerte]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Soulman</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-CC-VD_Funk-Stellantrieb&amp;diff=36948</id>
		<title>HM-CC-VD Funk-Stellantrieb</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-CC-VD_Funk-Stellantrieb&amp;diff=36948"/>
		<updated>2022-01-04T16:30:34Z</updated>

		<summary type="html">&lt;p&gt;Soulman: /* Betrieb mit FHEM */ Ergänzung&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;HM-CC-VD Funk-Stellantrieb&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung: Dieses Gerät ist abgekündigt (wird nicht mehr hergestellt). Nachfolgeprodukt ist der [[HM-CC-RT-DN]].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Allgemeines =&lt;br /&gt;
&lt;br /&gt;
Stellantrieb für den [[HM-CC-TC Funk-Wandthermostat|HM-CC-TC]]. Es können maximal 4 HM-CC-VD an ein HM-CC-TC angelernt werden.&lt;br /&gt;
&lt;br /&gt;
Aktuelle Firmware: 2.0&lt;br /&gt;
&lt;br /&gt;
Der HM-CC-VD &#039;&#039;&#039;misst nicht selbst&#039;&#039;&#039; die Temperatur. Diese wird von dem [[HM-CC-TC Funk-Wandthermostat]], mit dem der Stellantrieb [[Peering (HomeMatic)|gepeert]] wurde, gemessen.&lt;br /&gt;
&lt;br /&gt;
= Betrieb mit FHEM =&lt;br /&gt;
&lt;br /&gt;
HM-CC-VDs werden mit dem für ihren Betrieb/Raum zuständigen [[HM-CC-TC Funk-Wandthermostat]] [[Peering (HomeMatic)|gepeert]], dieser wird dann mit FHEM (z.b. einer [[Virtueller Controller VCCU |VCCU]]) gepairt. Dadurch ist der HM-CC-TC für die Ansteuerung der Ventiltriebe zuständig. Achtung: Peeren zwischen Ventiltrieb (und ggf Tür-/Fensterkontakte) und HM-CC-TC muss zuerst erfolgen, erst dann pairing des Thermostaten mit FHEM.&lt;br /&gt;
&lt;br /&gt;
Alternativ können auch Stellantriebe und Tür-/Fensterkontakte sowie der HM-CC-TC mit FHEM (z.b. einem VCCU oder direkt mit einem IO wie dem CUL) gepairen werden, also z.b. &amp;lt;pre&amp;gt;&lt;br /&gt;
set CUL hmPairForSec 300 &lt;br /&gt;
&amp;lt;/pre&amp;gt;und an allen Devices den Anlernknopf drücken innerhalb des Zeitfensters von 300 Sekunden). Dann Stellantriebe und Tür-/Fensterkontakte mit den Channels des HM-CC-TC peeren (siehe [http://fhem.de/commandref.html#CUL_HMpeerChan commandref :peerChan].&lt;br /&gt;
&lt;br /&gt;
Eine etwas detailliertere Diskussion der beiden Optionen findet sich im Artikel zum Nachfolgemodell [[HM-TC-IT-WM-W-EU]]&lt;br /&gt;
&lt;br /&gt;
Ausserdem kann der Antrieb mit einem virtuellen HM-CC-TC betreiben werden, siehe weiter unten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Log-Daten ==&lt;br /&gt;
=== Device-Log ===&lt;br /&gt;
&lt;br /&gt;
Zur Behebung des &amp;quot;1 bzw. 4 % Fehlers&amp;quot; wurde die Raumtemperatur über die Ansteuerung des HM-CC-TC temporär auf 28 °C erhöht. Nachdem das Thermostat (VD) laut Logs das Ventil auf hier 68 % geöffnet hat, wurde die Temperatur wieder auf die gewünschte (desired) Temperatur (am TC) gesetzt. Diese Befehle mussten allerdings einige Male wiederholt werden und es bedurfte einiger Minuten Wartezeit zwischen den Umstellungen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2013-03-18_22:34:57 OG.AZ.Thermostat set_0 %&lt;br /&gt;
2013-03-18_22:34:57 OG.AZ.Thermostat ValveDesired: 0 %&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat ValvePosition: 1 %&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat 1 %&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat battery: ok&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat motorErr: ok&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat motor: stop&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat operState: errorTargetNotMet&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat operStateErrCnt: 1&lt;br /&gt;
2013-03-18_22:37:42 OG.AZ.Thermostat set_68 %&lt;br /&gt;
2013-03-18_22:37:42 OG.AZ.Thermostat ValveDesired: 68 %&lt;br /&gt;
2013-03-18_22:37:43 OG.AZ.Thermostat ValvePosition: 1 %&lt;br /&gt;
2013-03-18_22:37:43 OG.AZ.Thermostat 1 %&lt;br /&gt;
2013-03-18_22:40:20 OG.AZ.Thermostat set_68 %&lt;br /&gt;
2013-03-18_22:40:20 OG.AZ.Thermostat ValveDesired: 68 %&lt;br /&gt;
2013-03-18_22:40:22 OG.AZ.Thermostat ValvePosition: 68 %&lt;br /&gt;
2013-03-18_22:40:22 OG.AZ.Thermostat 68 %&lt;br /&gt;
2013-03-18_22:40:22 OG.AZ.Thermostat battery: ok&lt;br /&gt;
2013-03-18_22:40:22 OG.AZ.Thermostat motorErr: ok&lt;br /&gt;
2013-03-18_22:40:22 OG.AZ.Thermostat motor: stop&lt;br /&gt;
2013-03-18_22:40:22 OG.AZ.Thermostat operState: onTarget&lt;br /&gt;
2013-03-18_22:42:31 OG.AZ.Thermostat set_0 %&lt;br /&gt;
2013-03-18_22:42:31 OG.AZ.Thermostat ValveDesired: 0 %&lt;br /&gt;
2013-03-18_22:42:33 OG.AZ.Thermostat ValvePosition: 68 %&lt;br /&gt;
2013-03-18_22:42:33 OG.AZ.Thermostat 68 %&lt;br /&gt;
2013-03-18_22:42:33 OG.AZ.Thermostat battery: ok&lt;br /&gt;
2013-03-18_22:42:33 OG.AZ.Thermostat motorErr: ok&lt;br /&gt;
2013-03-18_22:42:33 OG.AZ.Thermostat motor: closing&lt;br /&gt;
2013-03-18_22:42:33 OG.AZ.Thermostat operState: adjusting&lt;br /&gt;
2013-03-18_22:44:34 OG.AZ.Thermostat set_0 %&lt;br /&gt;
2013-03-18_22:44:34 OG.AZ.Thermostat ValveDesired: 0 %&lt;br /&gt;
2013-03-18_22:44:36 OG.AZ.Thermostat ValvePosition: 0 %&lt;br /&gt;
2013-03-18_22:44:36 OG.AZ.Thermostat 0 %&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Event monitor ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2013-03-18 22:42:33 CUL_HM OG.AZ.Thermostat motor: closing&lt;br /&gt;
2013-03-18 22:42:33 CUL_HM OG.AZ.Thermostat operState: adjusting&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Stromversorgung / Batterien ==&lt;br /&gt;
&lt;br /&gt;
=== Batteriealarme des HM-CC-VD in Verbindung mit HM-CC-TC ===&lt;br /&gt;
* Bei U-Bat. &amp;lt; 2,4 V erscheint im Display des VD und des TC das Batteriesymbol mit battery:low in den Readings und Events.&lt;br /&gt;
* Bei U-Bat. &amp;lt; 2,3 V erscheint im Display des VD zusätzlich F4 mit battery:critical in den Readings und Events.&lt;br /&gt;
Faktisch ist ein Betrieb bis ca. 2,2 Volt möglich (also je Zelle 1,1 Volt) darunter nimmt die Zuverlässigkeit der Funkverbindung stark ab.&lt;br /&gt;
&lt;br /&gt;
=== Akkubetrieb ===&lt;br /&gt;
Wegen der oben genannten Warngrenzen eigenen sich viele Akkus nicht sehr gut, da auch frisch geladenen NiMh-Akkus eine Zellenspannung von nur etwas über 1,2 Volt haben. Desshalb wird schnell die battery:low Warngrenze erreicht; mitunter unmittelbar nach dem Einsetzen mit der Kalibierungsfahrt. Mit  &#039;&#039;NiMh-Akkus mit geringer Selbstentladung&#039;&#039; (z.b. Panasonic Eneloop) ist ein Betrieb jedoch sinnvoll möglich, da der Spannungsabfall bei den sehr geringen Entladeströmen im Stellantrieb relativ lange oberhalb 1,2 Volt verläuft.&lt;br /&gt;
&lt;br /&gt;
= Betrieb mit FHEM, ohne (physischen) HM-CC-TC =&lt;br /&gt;
&lt;br /&gt;
Alternativ kann der HM-CC-VD auch über einen virtuellen HM-CC-TC betrieben werden.&lt;br /&gt;
Damit diese Lösung stabil funktioniert, sollte die Kommunikation (nach Nutzererfahrung aus dem Forum) als IO-Device ein HMLAND oder ein HM-MOD-UART (Raspi-Modul) nutzen.&lt;br /&gt;
Ein CUL im RF-Mode &#039;Homematic&#039; scheint das nötige präzise Timing (s.o.) nicht immer zu halten.&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ==&lt;br /&gt;
=== Vorbereitung ===&lt;br /&gt;
- der HM-CC-VD sollte zurückgesetzt sein - ca. 20 s den Button drücken und die Einfahrprozedur am Heizkörperventil abschließen.&lt;br /&gt;
- das Pairing durchführen: am HMLAND oder HM-MOD-UART (oder besser einer VCCU)  &#039;set &amp;lt;HMIO&amp;gt; hmPairForSec nnn&#039; und am HM-CC-VD den Button 5-10 s drücken, es sollte im Display des VD kurz von 20 s rückwärts gezählt werden und dann das Antennensymbol dauerhaft stehen.&lt;br /&gt;
Der HM-CC-VD sollte jetzt in der Liste der FHEM-Devices als HM_xxxxxx sichtbar sein.&lt;br /&gt;
Wichtig: Am neu eingerichteten Device HM-CC-VD  muss noch das Attribut msgRepeat = 0 gesetzt werden, sonst führt ein Zuviel an Kommunikation zwischen HM-CC-VD und IO-Device zum Verlust der Verbindung.&amp;lt;ref&amp;gt;{{Link2Forum|Topic=41588|Message=339484|LinkText=FHEM-Forum-Beitrag}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set HM_xxxxxx deviceRename &amp;lt;HM_CC_VD&amp;gt;&lt;br /&gt;
attr &amp;lt;HM_CC_VD&amp;gt; msgRepeat 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Einrichten virtueller HM-CC-TC ===&lt;br /&gt;
Der zur Kommunikation mit dem Stellantrieb HM-CC-VD nötige Virtuelle Controller wird wie folgt eingerichtet:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define &amp;lt;HM-VIRT-TC&amp;gt; CUL_HM 112233*&lt;br /&gt;
attr &amp;lt;HM-VIRT-TC&amp;gt; expert 2_raw&lt;br /&gt;
attr &amp;lt;HM-VIRT-TC&amp;gt; model virtual_1&lt;br /&gt;
attr &amp;lt;HM-VIRT-TC&amp;gt; msgRepeat 0&lt;br /&gt;
attr &amp;lt;HM-VIRT-TC&amp;gt; subType virtual&lt;br /&gt;
&lt;br /&gt;
set &amp;lt;HM-VIRT-TC&amp;gt; virtual 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* oder eine andere noch nicht vergebene ID&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Weil es sich nicht um einen virtuellen Button, sondern um den Kanal eines virtuellen HM-CC-TC handelt, kann man den Kanal umbenennen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rename &amp;lt;HM-VIRT-TC&amp;gt;_Btn1 &amp;lt;HM-VIRT-TC&amp;gt;_c1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel wird ein virtueller TC einem VD zugeortnet. Wenn man einen TC mit mehreren Kanälen nutzt (z.B. set &amp;lt;HM-VIRT-TC&amp;gt; virtual 2),&lt;br /&gt;
kann man den einzelnen VD nachher nicht kontrollieren, es wird nur der Status des zuletzt angesteuerten Kanals am &amp;lt;HM-VIRT-TC&amp;gt; ausgewertet.&lt;br /&gt;
&lt;br /&gt;
Bei Einsatz einer VCCU kontrollieren, ob das richtige IO-Device genutzt wird (s. VCCU) - falls nicht, per IOgrp-Attribut setzen.&lt;br /&gt;
Ohne VCCU sollte IODev auf das richtige Device zeigen.&lt;br /&gt;
&lt;br /&gt;
Hier z.B. ein HM-MOD-UART &amp;quot;UART-HM&amp;quot; an der VCCU &amp;quot;VIRTCCU1&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr &amp;lt;HM-VIRT-TC&amp;gt; IOgrp VIRTCCU1:UART_HM&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Peering von HM-CC-VD und virtuellem HM-CC-TC ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set &amp;lt;HM-VIRT-TC&amp;gt;c1 peerChan 0 &amp;lt;HM_CC_VD&amp;gt; single set&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach den Button am HM-CC-VD drücken, bis die 20-Sekunden-Anzeige anfängt zu laufen.&lt;br /&gt;
&lt;br /&gt;
mit&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set &amp;lt;HM-VIRT-TC&amp;gt;c1 valvePos 55&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
kann man den VD jetzt testen.&lt;br /&gt;
&lt;br /&gt;
mit&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define heizung_regler PID20 &amp;lt;thermosensor&amp;gt;:temperature &amp;lt;HM-VIRT-TC&amp;gt;c1:valvePos&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lässt sich die Kombination aus HM-CC-VD und virtuellem HM-CC-TC im Regelmodul PID20 als Heizungsregler nutzen.&lt;br /&gt;
&lt;br /&gt;
= Fehlercodes =&lt;br /&gt;
Im Display des Antriebs wird im Normalbetrieb der Öffnungswinkel in % angezeigt, jedoch vor der Montage bzw. Im Fehlerfall folgende Codes:&lt;br /&gt;
&lt;br /&gt;
== Statuscodes ==&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;A1&#039;&#039;&#039; Batterien neu eingelegt, Antrieb fährt Stellstift zurück&lt;br /&gt;
*&#039;&#039;&#039;A2&#039;&#039;&#039; Batterien neu eingelegt, Stellstift ist komplett eingefahren, fertig zur Montage&lt;br /&gt;
*&#039;&#039;&#039;A3&#039;&#039;&#039; Taste wurde nach Montage kurz gedrückt, Stellstift fährt aus und schließt Ventil&lt;br /&gt;
Wenn Vorgang abgeschlossen zeigt der Antrieb 0%, solange bis das Ventil im Betrieb geöffnet werden soll.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlercodes ==&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;F1&#039;&#039;&#039; Ventilantrieb kann Stift nicht bewegen. Ventil zu schwergängig oder blockiert&lt;br /&gt;
*&#039;&#039;&#039;F2&#039;&#039;&#039; Ventilantrieb nicht montiert oder Stellbereich zu gross. Ursache ist fast immer, dass die Taste im Zustand &#039;&#039;&#039;A2&#039;&#039;&#039; gedrückt wurde, obwohl der Antrieb noch nicht montiert war. Batterie kurz entnehmen, warten bis Display erlischt, neu einlegen, Antrieb nach &#039;&#039;&#039;A2&#039;&#039;&#039; zuerst montieren, dann Taste drücken.&lt;br /&gt;
*&#039;&#039;&#039;F3&#039;&#039;&#039; Stellbereich zu klein. Ursache ist oft ein klemmendes Ventil, versuchen Ventil gangbar zu machen.&lt;br /&gt;
*&#039;&#039;&#039;F4+Batterisymbol&#039;&#039;&#039; Batterien sind leer (Batteriespannung liegt dann unter 2,3 Volt). Speziell bei Nutzung von Akkus funktioniert der Antrieb aber mitunter noch eine kurze Zeit weiter.&lt;br /&gt;
*&#039;&#039;&#039;F5&#039;&#039;&#039; Anlernen gesperrt. Tritt z.b. auf, wenn versucht wird, das Ventil mit beiden oben beschrieben Methoden zu betreiben, also peering mit HM-CC-TC und zugleich pairing mit FHEM.&lt;br /&gt;
*&#039;&#039;&#039; Antennensymbol blinkt&#039;&#039;&#039; Keine Funkverbindung. Gerät ist noch nicht gepeert oder gepairt oder das gepeerte oder gepairte Device kann nicht empfangen werden. (z.b. Batterie im HM-CC-TC leer oder Funkstörung)&lt;br /&gt;
*&#039;&#039;&#039; Battriesymbol&#039;&#039;&#039; Batterien sind fast leer. Speziell bei Nutzung von Akkus funktioniert der Antrieb aber mitunter noch recht lange problemlos weiter.&lt;br /&gt;
&lt;br /&gt;
= bekannte Probleme =&lt;br /&gt;
&lt;br /&gt;
Bei Firmwareversionen vor 2.0 kann es vorkommen, dass sich der Stellantrieb bei einer bestimmten Stellung &amp;quot;festfährt&amp;quot; (z.B. 4%) und der Raum sich kontinuierlich erhitzt, obwohl eine niedrigere Temperatur am Wandthermostat eingestellt ist. Erst nach einem Reset des Stellantriebs oder manuellen Erhöhung der Temperatur am Wandthermostat/FHEM verrichtet der Stellantrieb wieder wie gewohnt seine Arbeit.&lt;br /&gt;
&lt;br /&gt;
Quelle: [[http://www.elv.de/output/controller.aspx?cid=834&amp;amp;detail=2&amp;amp;detail2=582 1]]&lt;br /&gt;
&lt;br /&gt;
Ein Firmwareupdate kann derzeit nur mittels Einschicken des Stellantriebs erfolgen.&lt;br /&gt;
&lt;br /&gt;
Ist der Stellantrieb mit dem HM-CC-TC gepairt (zu sehen im Menü des HM-CC-TC als VST Nummer X), erscheint aber nicht in FHEM (hier mit HMLAN), dann hilft der Befehl &#039;&#039;set &amp;lt;HMLAN-Name&amp;gt; hmPairForSec 300&#039;&#039; und das Drücken des Anlernknopfes am HM-CC-VD für mind. 5 Sekunden.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
; Quellen:&lt;br /&gt;
* {{Link2Forum|Topic=60296|LinkText=FHEM-Forum-Thema}}&lt;br /&gt;
* {{Link2Forum|Topic=22419|LinkText=FHEM-Forum-Thema}}&lt;br /&gt;
* {{Link2Forum|Topic=30738|LinkText=FHEM-Forum-Thema}}&lt;br /&gt;
* {{Link2Forum|Topic=54911|LinkText=FHEM-Forum-Thema}}&lt;br /&gt;
* {{Link2Forum|Topic=41588|LinkText=FHEM-Forum-Thema}}&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
* Anleitung bei EQ-3: [http://www.eq-3.de/Downloads/eq3/downloads_produktkatalog/homematic/bda/HM-CC-VD_UM_GE_eQ-3_081013.pdf HM-CC-VD Funk-Stellantrieb]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;br /&gt;
[[Kategorie:Heizungsventile]]&lt;/div&gt;</summary>
		<author><name>Soulman</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-CC-VD_Funk-Stellantrieb&amp;diff=36947</id>
		<title>HM-CC-VD Funk-Stellantrieb</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-CC-VD_Funk-Stellantrieb&amp;diff=36947"/>
		<updated>2022-01-04T16:28:41Z</updated>

		<summary type="html">&lt;p&gt;Soulman: /* Fehlercodes */ typos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;HM-CC-VD Funk-Stellantrieb&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung: Dieses Gerät ist abgekündigt (wird nicht mehr hergestellt). Nachfolgeprodukt ist der [[HM-CC-RT-DN]].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Allgemeines =&lt;br /&gt;
&lt;br /&gt;
Stellantrieb für den [[HM-CC-TC Funk-Wandthermostat|HM-CC-TC]]. Es können maximal 4 HM-CC-VD an ein HM-CC-TC angelernt werden.&lt;br /&gt;
&lt;br /&gt;
Aktuelle Firmware: 2.0&lt;br /&gt;
&lt;br /&gt;
Der HM-CC-VD &#039;&#039;&#039;misst nicht selbst&#039;&#039;&#039; die Temperatur. Diese wird von dem [[HM-CC-TC Funk-Wandthermostat]], mit dem der Stellantrieb [[Peering (HomeMatic)|gepeert]] wurde, gemessen.&lt;br /&gt;
&lt;br /&gt;
= Betrieb mit FHEM =&lt;br /&gt;
&lt;br /&gt;
HM-CC-VDs werden mit dem für ihren Betrieb/Raum zuständigen [[HM-CC-TC Funk-Wandthermostat]] [[Peering (HomeMatic)|gepeert]], dieser wird dann mit FHEM (z.b. einer [[Virtueller Controller VCCU |VCCU]]) gepairt. Dadurch ist der HM-CC-TC für die Ansteuerung der Ventiltriebe zuständig.&lt;br /&gt;
&lt;br /&gt;
Alternativ können auch Stellantriebe und Tür-/Fensterkontakte sowie der HM-CC-TC mit FHEM (z.b. einem VCCU oder direkt mit einem IO wie dem CUL) gepairen werden, also z.b. &amp;lt;pre&amp;gt;&lt;br /&gt;
set CUL hmPairForSec 300 &lt;br /&gt;
&amp;lt;/pre&amp;gt;und an allen Devices den Anlernknopf drücken innerhalb des Zeitfensters von 300 Sekunden). Dann Stellantriebe und Tür-/Fensterkontakte mit den Channels des HM-CC-TC peeren (siehe [http://fhem.de/commandref.html#CUL_HMpeerChan commandref :peerChan].&lt;br /&gt;
&lt;br /&gt;
Eine etwas detailliertere Diskussion der beiden Optionen findet sich im Artikel zum Nachfolgemodell [[HM-TC-IT-WM-W-EU]]&lt;br /&gt;
&lt;br /&gt;
Ausserdem kann der Antrieb mit einem virtuellen HM-CC-TC betreiben werden, siehe weiter unten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Log-Daten ==&lt;br /&gt;
=== Device-Log ===&lt;br /&gt;
&lt;br /&gt;
Zur Behebung des &amp;quot;1 bzw. 4 % Fehlers&amp;quot; wurde die Raumtemperatur über die Ansteuerung des HM-CC-TC temporär auf 28 °C erhöht. Nachdem das Thermostat (VD) laut Logs das Ventil auf hier 68 % geöffnet hat, wurde die Temperatur wieder auf die gewünschte (desired) Temperatur (am TC) gesetzt. Diese Befehle mussten allerdings einige Male wiederholt werden und es bedurfte einiger Minuten Wartezeit zwischen den Umstellungen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2013-03-18_22:34:57 OG.AZ.Thermostat set_0 %&lt;br /&gt;
2013-03-18_22:34:57 OG.AZ.Thermostat ValveDesired: 0 %&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat ValvePosition: 1 %&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat 1 %&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat battery: ok&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat motorErr: ok&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat motor: stop&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat operState: errorTargetNotMet&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat operStateErrCnt: 1&lt;br /&gt;
2013-03-18_22:37:42 OG.AZ.Thermostat set_68 %&lt;br /&gt;
2013-03-18_22:37:42 OG.AZ.Thermostat ValveDesired: 68 %&lt;br /&gt;
2013-03-18_22:37:43 OG.AZ.Thermostat ValvePosition: 1 %&lt;br /&gt;
2013-03-18_22:37:43 OG.AZ.Thermostat 1 %&lt;br /&gt;
2013-03-18_22:40:20 OG.AZ.Thermostat set_68 %&lt;br /&gt;
2013-03-18_22:40:20 OG.AZ.Thermostat ValveDesired: 68 %&lt;br /&gt;
2013-03-18_22:40:22 OG.AZ.Thermostat ValvePosition: 68 %&lt;br /&gt;
2013-03-18_22:40:22 OG.AZ.Thermostat 68 %&lt;br /&gt;
2013-03-18_22:40:22 OG.AZ.Thermostat battery: ok&lt;br /&gt;
2013-03-18_22:40:22 OG.AZ.Thermostat motorErr: ok&lt;br /&gt;
2013-03-18_22:40:22 OG.AZ.Thermostat motor: stop&lt;br /&gt;
2013-03-18_22:40:22 OG.AZ.Thermostat operState: onTarget&lt;br /&gt;
2013-03-18_22:42:31 OG.AZ.Thermostat set_0 %&lt;br /&gt;
2013-03-18_22:42:31 OG.AZ.Thermostat ValveDesired: 0 %&lt;br /&gt;
2013-03-18_22:42:33 OG.AZ.Thermostat ValvePosition: 68 %&lt;br /&gt;
2013-03-18_22:42:33 OG.AZ.Thermostat 68 %&lt;br /&gt;
2013-03-18_22:42:33 OG.AZ.Thermostat battery: ok&lt;br /&gt;
2013-03-18_22:42:33 OG.AZ.Thermostat motorErr: ok&lt;br /&gt;
2013-03-18_22:42:33 OG.AZ.Thermostat motor: closing&lt;br /&gt;
2013-03-18_22:42:33 OG.AZ.Thermostat operState: adjusting&lt;br /&gt;
2013-03-18_22:44:34 OG.AZ.Thermostat set_0 %&lt;br /&gt;
2013-03-18_22:44:34 OG.AZ.Thermostat ValveDesired: 0 %&lt;br /&gt;
2013-03-18_22:44:36 OG.AZ.Thermostat ValvePosition: 0 %&lt;br /&gt;
2013-03-18_22:44:36 OG.AZ.Thermostat 0 %&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Event monitor ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2013-03-18 22:42:33 CUL_HM OG.AZ.Thermostat motor: closing&lt;br /&gt;
2013-03-18 22:42:33 CUL_HM OG.AZ.Thermostat operState: adjusting&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Stromversorgung / Batterien ==&lt;br /&gt;
&lt;br /&gt;
=== Batteriealarme des HM-CC-VD in Verbindung mit HM-CC-TC ===&lt;br /&gt;
* Bei U-Bat. &amp;lt; 2,4 V erscheint im Display des VD und des TC das Batteriesymbol mit battery:low in den Readings und Events.&lt;br /&gt;
* Bei U-Bat. &amp;lt; 2,3 V erscheint im Display des VD zusätzlich F4 mit battery:critical in den Readings und Events.&lt;br /&gt;
Faktisch ist ein Betrieb bis ca. 2,2 Volt möglich (also je Zelle 1,1 Volt) darunter nimmt die Zuverlässigkeit der Funkverbindung stark ab.&lt;br /&gt;
&lt;br /&gt;
=== Akkubetrieb ===&lt;br /&gt;
Wegen der oben genannten Warngrenzen eigenen sich viele Akkus nicht sehr gut, da auch frisch geladenen NiMh-Akkus eine Zellenspannung von nur etwas über 1,2 Volt haben. Desshalb wird schnell die battery:low Warngrenze erreicht; mitunter unmittelbar nach dem Einsetzen mit der Kalibierungsfahrt. Mit  &#039;&#039;NiMh-Akkus mit geringer Selbstentladung&#039;&#039; (z.b. Panasonic Eneloop) ist ein Betrieb jedoch sinnvoll möglich, da der Spannungsabfall bei den sehr geringen Entladeströmen im Stellantrieb relativ lange oberhalb 1,2 Volt verläuft.&lt;br /&gt;
&lt;br /&gt;
= Betrieb mit FHEM, ohne (physischen) HM-CC-TC =&lt;br /&gt;
&lt;br /&gt;
Alternativ kann der HM-CC-VD auch über einen virtuellen HM-CC-TC betrieben werden.&lt;br /&gt;
Damit diese Lösung stabil funktioniert, sollte die Kommunikation (nach Nutzererfahrung aus dem Forum) als IO-Device ein HMLAND oder ein HM-MOD-UART (Raspi-Modul) nutzen.&lt;br /&gt;
Ein CUL im RF-Mode &#039;Homematic&#039; scheint das nötige präzise Timing (s.o.) nicht immer zu halten.&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ==&lt;br /&gt;
=== Vorbereitung ===&lt;br /&gt;
- der HM-CC-VD sollte zurückgesetzt sein - ca. 20 s den Button drücken und die Einfahrprozedur am Heizkörperventil abschließen.&lt;br /&gt;
- das Pairing durchführen: am HMLAND oder HM-MOD-UART (oder besser einer VCCU)  &#039;set &amp;lt;HMIO&amp;gt; hmPairForSec nnn&#039; und am HM-CC-VD den Button 5-10 s drücken, es sollte im Display des VD kurz von 20 s rückwärts gezählt werden und dann das Antennensymbol dauerhaft stehen.&lt;br /&gt;
Der HM-CC-VD sollte jetzt in der Liste der FHEM-Devices als HM_xxxxxx sichtbar sein.&lt;br /&gt;
Wichtig: Am neu eingerichteten Device HM-CC-VD  muss noch das Attribut msgRepeat = 0 gesetzt werden, sonst führt ein Zuviel an Kommunikation zwischen HM-CC-VD und IO-Device zum Verlust der Verbindung.&amp;lt;ref&amp;gt;{{Link2Forum|Topic=41588|Message=339484|LinkText=FHEM-Forum-Beitrag}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set HM_xxxxxx deviceRename &amp;lt;HM_CC_VD&amp;gt;&lt;br /&gt;
attr &amp;lt;HM_CC_VD&amp;gt; msgRepeat 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Einrichten virtueller HM-CC-TC ===&lt;br /&gt;
Der zur Kommunikation mit dem Stellantrieb HM-CC-VD nötige Virtuelle Controller wird wie folgt eingerichtet:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define &amp;lt;HM-VIRT-TC&amp;gt; CUL_HM 112233*&lt;br /&gt;
attr &amp;lt;HM-VIRT-TC&amp;gt; expert 2_raw&lt;br /&gt;
attr &amp;lt;HM-VIRT-TC&amp;gt; model virtual_1&lt;br /&gt;
attr &amp;lt;HM-VIRT-TC&amp;gt; msgRepeat 0&lt;br /&gt;
attr &amp;lt;HM-VIRT-TC&amp;gt; subType virtual&lt;br /&gt;
&lt;br /&gt;
set &amp;lt;HM-VIRT-TC&amp;gt; virtual 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* oder eine andere noch nicht vergebene ID&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Weil es sich nicht um einen virtuellen Button, sondern um den Kanal eines virtuellen HM-CC-TC handelt, kann man den Kanal umbenennen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rename &amp;lt;HM-VIRT-TC&amp;gt;_Btn1 &amp;lt;HM-VIRT-TC&amp;gt;_c1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel wird ein virtueller TC einem VD zugeortnet. Wenn man einen TC mit mehreren Kanälen nutzt (z.B. set &amp;lt;HM-VIRT-TC&amp;gt; virtual 2),&lt;br /&gt;
kann man den einzelnen VD nachher nicht kontrollieren, es wird nur der Status des zuletzt angesteuerten Kanals am &amp;lt;HM-VIRT-TC&amp;gt; ausgewertet.&lt;br /&gt;
&lt;br /&gt;
Bei Einsatz einer VCCU kontrollieren, ob das richtige IO-Device genutzt wird (s. VCCU) - falls nicht, per IOgrp-Attribut setzen.&lt;br /&gt;
Ohne VCCU sollte IODev auf das richtige Device zeigen.&lt;br /&gt;
&lt;br /&gt;
Hier z.B. ein HM-MOD-UART &amp;quot;UART-HM&amp;quot; an der VCCU &amp;quot;VIRTCCU1&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr &amp;lt;HM-VIRT-TC&amp;gt; IOgrp VIRTCCU1:UART_HM&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Peering von HM-CC-VD und virtuellem HM-CC-TC ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set &amp;lt;HM-VIRT-TC&amp;gt;c1 peerChan 0 &amp;lt;HM_CC_VD&amp;gt; single set&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach den Button am HM-CC-VD drücken, bis die 20-Sekunden-Anzeige anfängt zu laufen.&lt;br /&gt;
&lt;br /&gt;
mit&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set &amp;lt;HM-VIRT-TC&amp;gt;c1 valvePos 55&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
kann man den VD jetzt testen.&lt;br /&gt;
&lt;br /&gt;
mit&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define heizung_regler PID20 &amp;lt;thermosensor&amp;gt;:temperature &amp;lt;HM-VIRT-TC&amp;gt;c1:valvePos&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lässt sich die Kombination aus HM-CC-VD und virtuellem HM-CC-TC im Regelmodul PID20 als Heizungsregler nutzen.&lt;br /&gt;
&lt;br /&gt;
= Fehlercodes =&lt;br /&gt;
Im Display des Antriebs wird im Normalbetrieb der Öffnungswinkel in % angezeigt, jedoch vor der Montage bzw. Im Fehlerfall folgende Codes:&lt;br /&gt;
&lt;br /&gt;
== Statuscodes ==&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;A1&#039;&#039;&#039; Batterien neu eingelegt, Antrieb fährt Stellstift zurück&lt;br /&gt;
*&#039;&#039;&#039;A2&#039;&#039;&#039; Batterien neu eingelegt, Stellstift ist komplett eingefahren, fertig zur Montage&lt;br /&gt;
*&#039;&#039;&#039;A3&#039;&#039;&#039; Taste wurde nach Montage kurz gedrückt, Stellstift fährt aus und schließt Ventil&lt;br /&gt;
Wenn Vorgang abgeschlossen zeigt der Antrieb 0%, solange bis das Ventil im Betrieb geöffnet werden soll.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlercodes ==&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;F1&#039;&#039;&#039; Ventilantrieb kann Stift nicht bewegen. Ventil zu schwergängig oder blockiert&lt;br /&gt;
*&#039;&#039;&#039;F2&#039;&#039;&#039; Ventilantrieb nicht montiert oder Stellbereich zu gross. Ursache ist fast immer, dass die Taste im Zustand &#039;&#039;&#039;A2&#039;&#039;&#039; gedrückt wurde, obwohl der Antrieb noch nicht montiert war. Batterie kurz entnehmen, warten bis Display erlischt, neu einlegen, Antrieb nach &#039;&#039;&#039;A2&#039;&#039;&#039; zuerst montieren, dann Taste drücken.&lt;br /&gt;
*&#039;&#039;&#039;F3&#039;&#039;&#039; Stellbereich zu klein. Ursache ist oft ein klemmendes Ventil, versuchen Ventil gangbar zu machen.&lt;br /&gt;
*&#039;&#039;&#039;F4+Batterisymbol&#039;&#039;&#039; Batterien sind leer (Batteriespannung liegt dann unter 2,3 Volt). Speziell bei Nutzung von Akkus funktioniert der Antrieb aber mitunter noch eine kurze Zeit weiter.&lt;br /&gt;
*&#039;&#039;&#039;F5&#039;&#039;&#039; Anlernen gesperrt. Tritt z.b. auf, wenn versucht wird, das Ventil mit beiden oben beschrieben Methoden zu betreiben, also peering mit HM-CC-TC und zugleich pairing mit FHEM.&lt;br /&gt;
*&#039;&#039;&#039; Antennensymbol blinkt&#039;&#039;&#039; Keine Funkverbindung. Gerät ist noch nicht gepeert oder gepairt oder das gepeerte oder gepairte Device kann nicht empfangen werden. (z.b. Batterie im HM-CC-TC leer oder Funkstörung)&lt;br /&gt;
*&#039;&#039;&#039; Battriesymbol&#039;&#039;&#039; Batterien sind fast leer. Speziell bei Nutzung von Akkus funktioniert der Antrieb aber mitunter noch recht lange problemlos weiter.&lt;br /&gt;
&lt;br /&gt;
= bekannte Probleme =&lt;br /&gt;
&lt;br /&gt;
Bei Firmwareversionen vor 2.0 kann es vorkommen, dass sich der Stellantrieb bei einer bestimmten Stellung &amp;quot;festfährt&amp;quot; (z.B. 4%) und der Raum sich kontinuierlich erhitzt, obwohl eine niedrigere Temperatur am Wandthermostat eingestellt ist. Erst nach einem Reset des Stellantriebs oder manuellen Erhöhung der Temperatur am Wandthermostat/FHEM verrichtet der Stellantrieb wieder wie gewohnt seine Arbeit.&lt;br /&gt;
&lt;br /&gt;
Quelle: [[http://www.elv.de/output/controller.aspx?cid=834&amp;amp;detail=2&amp;amp;detail2=582 1]]&lt;br /&gt;
&lt;br /&gt;
Ein Firmwareupdate kann derzeit nur mittels Einschicken des Stellantriebs erfolgen.&lt;br /&gt;
&lt;br /&gt;
Ist der Stellantrieb mit dem HM-CC-TC gepairt (zu sehen im Menü des HM-CC-TC als VST Nummer X), erscheint aber nicht in FHEM (hier mit HMLAN), dann hilft der Befehl &#039;&#039;set &amp;lt;HMLAN-Name&amp;gt; hmPairForSec 300&#039;&#039; und das Drücken des Anlernknopfes am HM-CC-VD für mind. 5 Sekunden.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
; Quellen:&lt;br /&gt;
* {{Link2Forum|Topic=60296|LinkText=FHEM-Forum-Thema}}&lt;br /&gt;
* {{Link2Forum|Topic=22419|LinkText=FHEM-Forum-Thema}}&lt;br /&gt;
* {{Link2Forum|Topic=30738|LinkText=FHEM-Forum-Thema}}&lt;br /&gt;
* {{Link2Forum|Topic=54911|LinkText=FHEM-Forum-Thema}}&lt;br /&gt;
* {{Link2Forum|Topic=41588|LinkText=FHEM-Forum-Thema}}&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
* Anleitung bei EQ-3: [http://www.eq-3.de/Downloads/eq3/downloads_produktkatalog/homematic/bda/HM-CC-VD_UM_GE_eQ-3_081013.pdf HM-CC-VD Funk-Stellantrieb]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;br /&gt;
[[Kategorie:Heizungsventile]]&lt;/div&gt;</summary>
		<author><name>Soulman</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-CC-VD_Funk-Stellantrieb&amp;diff=36946</id>
		<title>HM-CC-VD Funk-Stellantrieb</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-CC-VD_Funk-Stellantrieb&amp;diff=36946"/>
		<updated>2022-01-04T16:27:59Z</updated>

		<summary type="html">&lt;p&gt;Soulman: /* Fehlercodes */ Korrektur&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;HM-CC-VD Funk-Stellantrieb&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung: Dieses Gerät ist abgekündigt (wird nicht mehr hergestellt). Nachfolgeprodukt ist der [[HM-CC-RT-DN]].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Allgemeines =&lt;br /&gt;
&lt;br /&gt;
Stellantrieb für den [[HM-CC-TC Funk-Wandthermostat|HM-CC-TC]]. Es können maximal 4 HM-CC-VD an ein HM-CC-TC angelernt werden.&lt;br /&gt;
&lt;br /&gt;
Aktuelle Firmware: 2.0&lt;br /&gt;
&lt;br /&gt;
Der HM-CC-VD &#039;&#039;&#039;misst nicht selbst&#039;&#039;&#039; die Temperatur. Diese wird von dem [[HM-CC-TC Funk-Wandthermostat]], mit dem der Stellantrieb [[Peering (HomeMatic)|gepeert]] wurde, gemessen.&lt;br /&gt;
&lt;br /&gt;
= Betrieb mit FHEM =&lt;br /&gt;
&lt;br /&gt;
HM-CC-VDs werden mit dem für ihren Betrieb/Raum zuständigen [[HM-CC-TC Funk-Wandthermostat]] [[Peering (HomeMatic)|gepeert]], dieser wird dann mit FHEM (z.b. einer [[Virtueller Controller VCCU |VCCU]]) gepairt. Dadurch ist der HM-CC-TC für die Ansteuerung der Ventiltriebe zuständig.&lt;br /&gt;
&lt;br /&gt;
Alternativ können auch Stellantriebe und Tür-/Fensterkontakte sowie der HM-CC-TC mit FHEM (z.b. einem VCCU oder direkt mit einem IO wie dem CUL) gepairen werden, also z.b. &amp;lt;pre&amp;gt;&lt;br /&gt;
set CUL hmPairForSec 300 &lt;br /&gt;
&amp;lt;/pre&amp;gt;und an allen Devices den Anlernknopf drücken innerhalb des Zeitfensters von 300 Sekunden). Dann Stellantriebe und Tür-/Fensterkontakte mit den Channels des HM-CC-TC peeren (siehe [http://fhem.de/commandref.html#CUL_HMpeerChan commandref :peerChan].&lt;br /&gt;
&lt;br /&gt;
Eine etwas detailliertere Diskussion der beiden Optionen findet sich im Artikel zum Nachfolgemodell [[HM-TC-IT-WM-W-EU]]&lt;br /&gt;
&lt;br /&gt;
Ausserdem kann der Antrieb mit einem virtuellen HM-CC-TC betreiben werden, siehe weiter unten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Log-Daten ==&lt;br /&gt;
=== Device-Log ===&lt;br /&gt;
&lt;br /&gt;
Zur Behebung des &amp;quot;1 bzw. 4 % Fehlers&amp;quot; wurde die Raumtemperatur über die Ansteuerung des HM-CC-TC temporär auf 28 °C erhöht. Nachdem das Thermostat (VD) laut Logs das Ventil auf hier 68 % geöffnet hat, wurde die Temperatur wieder auf die gewünschte (desired) Temperatur (am TC) gesetzt. Diese Befehle mussten allerdings einige Male wiederholt werden und es bedurfte einiger Minuten Wartezeit zwischen den Umstellungen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2013-03-18_22:34:57 OG.AZ.Thermostat set_0 %&lt;br /&gt;
2013-03-18_22:34:57 OG.AZ.Thermostat ValveDesired: 0 %&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat ValvePosition: 1 %&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat 1 %&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat battery: ok&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat motorErr: ok&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat motor: stop&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat operState: errorTargetNotMet&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat operStateErrCnt: 1&lt;br /&gt;
2013-03-18_22:37:42 OG.AZ.Thermostat set_68 %&lt;br /&gt;
2013-03-18_22:37:42 OG.AZ.Thermostat ValveDesired: 68 %&lt;br /&gt;
2013-03-18_22:37:43 OG.AZ.Thermostat ValvePosition: 1 %&lt;br /&gt;
2013-03-18_22:37:43 OG.AZ.Thermostat 1 %&lt;br /&gt;
2013-03-18_22:40:20 OG.AZ.Thermostat set_68 %&lt;br /&gt;
2013-03-18_22:40:20 OG.AZ.Thermostat ValveDesired: 68 %&lt;br /&gt;
2013-03-18_22:40:22 OG.AZ.Thermostat ValvePosition: 68 %&lt;br /&gt;
2013-03-18_22:40:22 OG.AZ.Thermostat 68 %&lt;br /&gt;
2013-03-18_22:40:22 OG.AZ.Thermostat battery: ok&lt;br /&gt;
2013-03-18_22:40:22 OG.AZ.Thermostat motorErr: ok&lt;br /&gt;
2013-03-18_22:40:22 OG.AZ.Thermostat motor: stop&lt;br /&gt;
2013-03-18_22:40:22 OG.AZ.Thermostat operState: onTarget&lt;br /&gt;
2013-03-18_22:42:31 OG.AZ.Thermostat set_0 %&lt;br /&gt;
2013-03-18_22:42:31 OG.AZ.Thermostat ValveDesired: 0 %&lt;br /&gt;
2013-03-18_22:42:33 OG.AZ.Thermostat ValvePosition: 68 %&lt;br /&gt;
2013-03-18_22:42:33 OG.AZ.Thermostat 68 %&lt;br /&gt;
2013-03-18_22:42:33 OG.AZ.Thermostat battery: ok&lt;br /&gt;
2013-03-18_22:42:33 OG.AZ.Thermostat motorErr: ok&lt;br /&gt;
2013-03-18_22:42:33 OG.AZ.Thermostat motor: closing&lt;br /&gt;
2013-03-18_22:42:33 OG.AZ.Thermostat operState: adjusting&lt;br /&gt;
2013-03-18_22:44:34 OG.AZ.Thermostat set_0 %&lt;br /&gt;
2013-03-18_22:44:34 OG.AZ.Thermostat ValveDesired: 0 %&lt;br /&gt;
2013-03-18_22:44:36 OG.AZ.Thermostat ValvePosition: 0 %&lt;br /&gt;
2013-03-18_22:44:36 OG.AZ.Thermostat 0 %&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Event monitor ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2013-03-18 22:42:33 CUL_HM OG.AZ.Thermostat motor: closing&lt;br /&gt;
2013-03-18 22:42:33 CUL_HM OG.AZ.Thermostat operState: adjusting&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Stromversorgung / Batterien ==&lt;br /&gt;
&lt;br /&gt;
=== Batteriealarme des HM-CC-VD in Verbindung mit HM-CC-TC ===&lt;br /&gt;
* Bei U-Bat. &amp;lt; 2,4 V erscheint im Display des VD und des TC das Batteriesymbol mit battery:low in den Readings und Events.&lt;br /&gt;
* Bei U-Bat. &amp;lt; 2,3 V erscheint im Display des VD zusätzlich F4 mit battery:critical in den Readings und Events.&lt;br /&gt;
Faktisch ist ein Betrieb bis ca. 2,2 Volt möglich (also je Zelle 1,1 Volt) darunter nimmt die Zuverlässigkeit der Funkverbindung stark ab.&lt;br /&gt;
&lt;br /&gt;
=== Akkubetrieb ===&lt;br /&gt;
Wegen der oben genannten Warngrenzen eigenen sich viele Akkus nicht sehr gut, da auch frisch geladenen NiMh-Akkus eine Zellenspannung von nur etwas über 1,2 Volt haben. Desshalb wird schnell die battery:low Warngrenze erreicht; mitunter unmittelbar nach dem Einsetzen mit der Kalibierungsfahrt. Mit  &#039;&#039;NiMh-Akkus mit geringer Selbstentladung&#039;&#039; (z.b. Panasonic Eneloop) ist ein Betrieb jedoch sinnvoll möglich, da der Spannungsabfall bei den sehr geringen Entladeströmen im Stellantrieb relativ lange oberhalb 1,2 Volt verläuft.&lt;br /&gt;
&lt;br /&gt;
= Betrieb mit FHEM, ohne (physischen) HM-CC-TC =&lt;br /&gt;
&lt;br /&gt;
Alternativ kann der HM-CC-VD auch über einen virtuellen HM-CC-TC betrieben werden.&lt;br /&gt;
Damit diese Lösung stabil funktioniert, sollte die Kommunikation (nach Nutzererfahrung aus dem Forum) als IO-Device ein HMLAND oder ein HM-MOD-UART (Raspi-Modul) nutzen.&lt;br /&gt;
Ein CUL im RF-Mode &#039;Homematic&#039; scheint das nötige präzise Timing (s.o.) nicht immer zu halten.&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ==&lt;br /&gt;
=== Vorbereitung ===&lt;br /&gt;
- der HM-CC-VD sollte zurückgesetzt sein - ca. 20 s den Button drücken und die Einfahrprozedur am Heizkörperventil abschließen.&lt;br /&gt;
- das Pairing durchführen: am HMLAND oder HM-MOD-UART (oder besser einer VCCU)  &#039;set &amp;lt;HMIO&amp;gt; hmPairForSec nnn&#039; und am HM-CC-VD den Button 5-10 s drücken, es sollte im Display des VD kurz von 20 s rückwärts gezählt werden und dann das Antennensymbol dauerhaft stehen.&lt;br /&gt;
Der HM-CC-VD sollte jetzt in der Liste der FHEM-Devices als HM_xxxxxx sichtbar sein.&lt;br /&gt;
Wichtig: Am neu eingerichteten Device HM-CC-VD  muss noch das Attribut msgRepeat = 0 gesetzt werden, sonst führt ein Zuviel an Kommunikation zwischen HM-CC-VD und IO-Device zum Verlust der Verbindung.&amp;lt;ref&amp;gt;{{Link2Forum|Topic=41588|Message=339484|LinkText=FHEM-Forum-Beitrag}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set HM_xxxxxx deviceRename &amp;lt;HM_CC_VD&amp;gt;&lt;br /&gt;
attr &amp;lt;HM_CC_VD&amp;gt; msgRepeat 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Einrichten virtueller HM-CC-TC ===&lt;br /&gt;
Der zur Kommunikation mit dem Stellantrieb HM-CC-VD nötige Virtuelle Controller wird wie folgt eingerichtet:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define &amp;lt;HM-VIRT-TC&amp;gt; CUL_HM 112233*&lt;br /&gt;
attr &amp;lt;HM-VIRT-TC&amp;gt; expert 2_raw&lt;br /&gt;
attr &amp;lt;HM-VIRT-TC&amp;gt; model virtual_1&lt;br /&gt;
attr &amp;lt;HM-VIRT-TC&amp;gt; msgRepeat 0&lt;br /&gt;
attr &amp;lt;HM-VIRT-TC&amp;gt; subType virtual&lt;br /&gt;
&lt;br /&gt;
set &amp;lt;HM-VIRT-TC&amp;gt; virtual 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* oder eine andere noch nicht vergebene ID&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Weil es sich nicht um einen virtuellen Button, sondern um den Kanal eines virtuellen HM-CC-TC handelt, kann man den Kanal umbenennen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rename &amp;lt;HM-VIRT-TC&amp;gt;_Btn1 &amp;lt;HM-VIRT-TC&amp;gt;_c1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel wird ein virtueller TC einem VD zugeortnet. Wenn man einen TC mit mehreren Kanälen nutzt (z.B. set &amp;lt;HM-VIRT-TC&amp;gt; virtual 2),&lt;br /&gt;
kann man den einzelnen VD nachher nicht kontrollieren, es wird nur der Status des zuletzt angesteuerten Kanals am &amp;lt;HM-VIRT-TC&amp;gt; ausgewertet.&lt;br /&gt;
&lt;br /&gt;
Bei Einsatz einer VCCU kontrollieren, ob das richtige IO-Device genutzt wird (s. VCCU) - falls nicht, per IOgrp-Attribut setzen.&lt;br /&gt;
Ohne VCCU sollte IODev auf das richtige Device zeigen.&lt;br /&gt;
&lt;br /&gt;
Hier z.B. ein HM-MOD-UART &amp;quot;UART-HM&amp;quot; an der VCCU &amp;quot;VIRTCCU1&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr &amp;lt;HM-VIRT-TC&amp;gt; IOgrp VIRTCCU1:UART_HM&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Peering von HM-CC-VD und virtuellem HM-CC-TC ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set &amp;lt;HM-VIRT-TC&amp;gt;c1 peerChan 0 &amp;lt;HM_CC_VD&amp;gt; single set&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach den Button am HM-CC-VD drücken, bis die 20-Sekunden-Anzeige anfängt zu laufen.&lt;br /&gt;
&lt;br /&gt;
mit&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set &amp;lt;HM-VIRT-TC&amp;gt;c1 valvePos 55&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
kann man den VD jetzt testen.&lt;br /&gt;
&lt;br /&gt;
mit&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define heizung_regler PID20 &amp;lt;thermosensor&amp;gt;:temperature &amp;lt;HM-VIRT-TC&amp;gt;c1:valvePos&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lässt sich die Kombination aus HM-CC-VD und virtuellem HM-CC-TC im Regelmodul PID20 als Heizungsregler nutzen.&lt;br /&gt;
&lt;br /&gt;
= Fehlercodes =&lt;br /&gt;
Im Display des Antriebs wird im Normalbetrieb der Öffnungswinkel in % angezeigt, jedoch vor der Montage bzw. Im Fehlerfall folgende Codes:&lt;br /&gt;
&lt;br /&gt;
== Statuscodes ==&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;A1&#039;&#039;&#039; Batterien neu eingelegt, Antrieb fährt Stellstift zurück&lt;br /&gt;
*&#039;&#039;&#039;A2&#039;&#039;&#039; Batterien neu eingelegt, Stellstift ist komplett eingefahren, fertig zur Montage&lt;br /&gt;
*&#039;&#039;&#039;A3&#039;&#039;&#039; Taste wurde nach Montage kurz gedrückt, Stellstift fährt aus und schließt Ventil&lt;br /&gt;
Wenn Vorgang abgeschlossen zeigt der Antrieb 0%, solange bis das Ventil im Betrieb geöffnet werden soll.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlercodes ==&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;F1&#039;&#039;&#039; Ventilantrieb kann Stift nicht bewegen. Ventil zu schwergängig oder blockiert&lt;br /&gt;
*&#039;&#039;&#039;F2&#039;&#039;&#039; Ventilantrieb nicht montiert oder Stellbereich zu gross. Ursache ist fast immer, dass die Taste im Zustand &#039;&#039;&#039;A2&#039;&#039;&#039; gedrückt wurde, obwohl der Antrieb noch nicht montiert war. Batterie kurz entnehmen, warten bis Display erlischt, neu einlegen, Antrieb nach &#039;&#039;&#039;A2&#039;&#039;&#039; zuerst montieren, dann Taste drücken.&lt;br /&gt;
*&#039;&#039;&#039;F3&#039;&#039;&#039; Stellbereich zu klein. Ursache ist oft ein klemmendes Ventil, versuchen Ventil gangbar zu machen.&lt;br /&gt;
*&#039;&#039;&#039;F4+Batterisymbol&#039;&#039;&#039; Batterien sind leer. (Batteriespannung liegt dann unter 2,3 Volt) Speziell bei Nutzung von Akkus funktioniert der Antrieb aber mitunter noch eine kurze Zeit weiter.&lt;br /&gt;
*&#039;&#039;&#039;F5&#039;&#039;&#039; Anlernen gesperrt. Tritt z.b. auf, wenn versucht wird, das Ventil mit beiden oben beschrieben Methoden zu betreiben, also peering mit HM-CC-TC und zugleich pairing mit FHEM.&lt;br /&gt;
*&#039;&#039;&#039; Antennensymbol blinkt&#039;&#039;&#039; Keine Funkverbindung. Gerät ist noch nicht gepeert oder gepairt oder das gepeerte oder gepairte Device kann nicht empfangen werden. (z.b. Batterie im HM-CC-TC leer oder Funkstörung)&lt;br /&gt;
*&#039;&#039;&#039; Battriesymbol&#039;&#039;&#039;Batterien sind fast leer. Speziell bei Nutzung von Akkus funktioniert der Antrieb aber mitunter noch recht lange problemlos weiter.&lt;br /&gt;
&lt;br /&gt;
= bekannte Probleme =&lt;br /&gt;
&lt;br /&gt;
Bei Firmwareversionen vor 2.0 kann es vorkommen, dass sich der Stellantrieb bei einer bestimmten Stellung &amp;quot;festfährt&amp;quot; (z.B. 4%) und der Raum sich kontinuierlich erhitzt, obwohl eine niedrigere Temperatur am Wandthermostat eingestellt ist. Erst nach einem Reset des Stellantriebs oder manuellen Erhöhung der Temperatur am Wandthermostat/FHEM verrichtet der Stellantrieb wieder wie gewohnt seine Arbeit.&lt;br /&gt;
&lt;br /&gt;
Quelle: [[http://www.elv.de/output/controller.aspx?cid=834&amp;amp;detail=2&amp;amp;detail2=582 1]]&lt;br /&gt;
&lt;br /&gt;
Ein Firmwareupdate kann derzeit nur mittels Einschicken des Stellantriebs erfolgen.&lt;br /&gt;
&lt;br /&gt;
Ist der Stellantrieb mit dem HM-CC-TC gepairt (zu sehen im Menü des HM-CC-TC als VST Nummer X), erscheint aber nicht in FHEM (hier mit HMLAN), dann hilft der Befehl &#039;&#039;set &amp;lt;HMLAN-Name&amp;gt; hmPairForSec 300&#039;&#039; und das Drücken des Anlernknopfes am HM-CC-VD für mind. 5 Sekunden.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
; Quellen:&lt;br /&gt;
* {{Link2Forum|Topic=60296|LinkText=FHEM-Forum-Thema}}&lt;br /&gt;
* {{Link2Forum|Topic=22419|LinkText=FHEM-Forum-Thema}}&lt;br /&gt;
* {{Link2Forum|Topic=30738|LinkText=FHEM-Forum-Thema}}&lt;br /&gt;
* {{Link2Forum|Topic=54911|LinkText=FHEM-Forum-Thema}}&lt;br /&gt;
* {{Link2Forum|Topic=41588|LinkText=FHEM-Forum-Thema}}&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
* Anleitung bei EQ-3: [http://www.eq-3.de/Downloads/eq3/downloads_produktkatalog/homematic/bda/HM-CC-VD_UM_GE_eQ-3_081013.pdf HM-CC-VD Funk-Stellantrieb]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;br /&gt;
[[Kategorie:Heizungsventile]]&lt;/div&gt;</summary>
		<author><name>Soulman</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-CC-VD_Funk-Stellantrieb&amp;diff=36944</id>
		<title>HM-CC-VD Funk-Stellantrieb</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-CC-VD_Funk-Stellantrieb&amp;diff=36944"/>
		<updated>2022-01-04T16:23:08Z</updated>

		<summary type="html">&lt;p&gt;Soulman: /* Fehlercodes */ typos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;HM-CC-VD Funk-Stellantrieb&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung: Dieses Gerät ist abgekündigt (wird nicht mehr hergestellt). Nachfolgeprodukt ist der [[HM-CC-RT-DN]].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Allgemeines =&lt;br /&gt;
&lt;br /&gt;
Stellantrieb für den [[HM-CC-TC Funk-Wandthermostat|HM-CC-TC]]. Es können maximal 4 HM-CC-VD an ein HM-CC-TC angelernt werden.&lt;br /&gt;
&lt;br /&gt;
Aktuelle Firmware: 2.0&lt;br /&gt;
&lt;br /&gt;
Der HM-CC-VD &#039;&#039;&#039;misst nicht selbst&#039;&#039;&#039; die Temperatur. Diese wird von dem [[HM-CC-TC Funk-Wandthermostat]], mit dem der Stellantrieb [[Peering (HomeMatic)|gepeert]] wurde, gemessen.&lt;br /&gt;
&lt;br /&gt;
= Betrieb mit FHEM =&lt;br /&gt;
&lt;br /&gt;
HM-CC-VDs werden mit dem für ihren Betrieb/Raum zuständigen [[HM-CC-TC Funk-Wandthermostat]] [[Peering (HomeMatic)|gepeert]], dieser wird dann mit FHEM (z.b. einer [[Virtueller Controller VCCU |VCCU]]) gepairt. Dadurch ist der HM-CC-TC für die Ansteuerung der Ventiltriebe zuständig.&lt;br /&gt;
&lt;br /&gt;
Alternativ können auch Stellantriebe und Tür-/Fensterkontakte sowie der HM-CC-TC mit FHEM (z.b. einem VCCU oder direkt mit einem IO wie dem CUL) gepairen werden, also z.b. &amp;lt;pre&amp;gt;&lt;br /&gt;
set CUL hmPairForSec 300 &lt;br /&gt;
&amp;lt;/pre&amp;gt;und an allen Devices den Anlernknopf drücken innerhalb des Zeitfensters von 300 Sekunden). Dann Stellantriebe und Tür-/Fensterkontakte mit den Channels des HM-CC-TC peeren (siehe [http://fhem.de/commandref.html#CUL_HMpeerChan commandref :peerChan].&lt;br /&gt;
&lt;br /&gt;
Eine etwas detailliertere Diskussion der beiden Optionen findet sich im Artikel zum Nachfolgemodell [[HM-TC-IT-WM-W-EU]]&lt;br /&gt;
&lt;br /&gt;
Ausserdem kann der Antrieb mit einem virtuellen HM-CC-TC betreiben werden, siehe weiter unten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Log-Daten ==&lt;br /&gt;
=== Device-Log ===&lt;br /&gt;
&lt;br /&gt;
Zur Behebung des &amp;quot;1 bzw. 4 % Fehlers&amp;quot; wurde die Raumtemperatur über die Ansteuerung des HM-CC-TC temporär auf 28 °C erhöht. Nachdem das Thermostat (VD) laut Logs das Ventil auf hier 68 % geöffnet hat, wurde die Temperatur wieder auf die gewünschte (desired) Temperatur (am TC) gesetzt. Diese Befehle mussten allerdings einige Male wiederholt werden und es bedurfte einiger Minuten Wartezeit zwischen den Umstellungen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2013-03-18_22:34:57 OG.AZ.Thermostat set_0 %&lt;br /&gt;
2013-03-18_22:34:57 OG.AZ.Thermostat ValveDesired: 0 %&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat ValvePosition: 1 %&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat 1 %&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat battery: ok&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat motorErr: ok&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat motor: stop&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat operState: errorTargetNotMet&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat operStateErrCnt: 1&lt;br /&gt;
2013-03-18_22:37:42 OG.AZ.Thermostat set_68 %&lt;br /&gt;
2013-03-18_22:37:42 OG.AZ.Thermostat ValveDesired: 68 %&lt;br /&gt;
2013-03-18_22:37:43 OG.AZ.Thermostat ValvePosition: 1 %&lt;br /&gt;
2013-03-18_22:37:43 OG.AZ.Thermostat 1 %&lt;br /&gt;
2013-03-18_22:40:20 OG.AZ.Thermostat set_68 %&lt;br /&gt;
2013-03-18_22:40:20 OG.AZ.Thermostat ValveDesired: 68 %&lt;br /&gt;
2013-03-18_22:40:22 OG.AZ.Thermostat ValvePosition: 68 %&lt;br /&gt;
2013-03-18_22:40:22 OG.AZ.Thermostat 68 %&lt;br /&gt;
2013-03-18_22:40:22 OG.AZ.Thermostat battery: ok&lt;br /&gt;
2013-03-18_22:40:22 OG.AZ.Thermostat motorErr: ok&lt;br /&gt;
2013-03-18_22:40:22 OG.AZ.Thermostat motor: stop&lt;br /&gt;
2013-03-18_22:40:22 OG.AZ.Thermostat operState: onTarget&lt;br /&gt;
2013-03-18_22:42:31 OG.AZ.Thermostat set_0 %&lt;br /&gt;
2013-03-18_22:42:31 OG.AZ.Thermostat ValveDesired: 0 %&lt;br /&gt;
2013-03-18_22:42:33 OG.AZ.Thermostat ValvePosition: 68 %&lt;br /&gt;
2013-03-18_22:42:33 OG.AZ.Thermostat 68 %&lt;br /&gt;
2013-03-18_22:42:33 OG.AZ.Thermostat battery: ok&lt;br /&gt;
2013-03-18_22:42:33 OG.AZ.Thermostat motorErr: ok&lt;br /&gt;
2013-03-18_22:42:33 OG.AZ.Thermostat motor: closing&lt;br /&gt;
2013-03-18_22:42:33 OG.AZ.Thermostat operState: adjusting&lt;br /&gt;
2013-03-18_22:44:34 OG.AZ.Thermostat set_0 %&lt;br /&gt;
2013-03-18_22:44:34 OG.AZ.Thermostat ValveDesired: 0 %&lt;br /&gt;
2013-03-18_22:44:36 OG.AZ.Thermostat ValvePosition: 0 %&lt;br /&gt;
2013-03-18_22:44:36 OG.AZ.Thermostat 0 %&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Event monitor ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2013-03-18 22:42:33 CUL_HM OG.AZ.Thermostat motor: closing&lt;br /&gt;
2013-03-18 22:42:33 CUL_HM OG.AZ.Thermostat operState: adjusting&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Stromversorgung / Batterien ==&lt;br /&gt;
&lt;br /&gt;
=== Batteriealarme des HM-CC-VD in Verbindung mit HM-CC-TC ===&lt;br /&gt;
* Bei U-Bat. &amp;lt; 2,4 V erscheint im Display des VD und des TC das Batteriesymbol mit battery:low in den Readings und Events.&lt;br /&gt;
* Bei U-Bat. &amp;lt; 2,3 V erscheint im Display des VD zusätzlich F4 mit battery:critical in den Readings und Events.&lt;br /&gt;
Faktisch ist ein Betrieb bis ca. 2,2 Volt möglich (also je Zelle 1,1 Volt) darunter nimmt die Zuverlässigkeit der Funkverbindung stark ab.&lt;br /&gt;
&lt;br /&gt;
=== Akkubetrieb ===&lt;br /&gt;
Wegen der oben genannten Warngrenzen eigenen sich viele Akkus nicht sehr gut, da auch frisch geladenen NiMh-Akkus eine Zellenspannung von nur etwas über 1,2 Volt haben. Desshalb wird schnell die battery:low Warngrenze erreicht; mitunter unmittelbar nach dem Einsetzen mit der Kalibierungsfahrt. Mit  &#039;&#039;NiMh-Akkus mit geringer Selbstentladung&#039;&#039; (z.b. Panasonic Eneloop) ist ein Betrieb jedoch sinnvoll möglich, da der Spannungsabfall bei den sehr geringen Entladeströmen im Stellantrieb relativ lange oberhalb 1,2 Volt verläuft.&lt;br /&gt;
&lt;br /&gt;
= Betrieb mit FHEM, ohne (physischen) HM-CC-TC =&lt;br /&gt;
&lt;br /&gt;
Alternativ kann der HM-CC-VD auch über einen virtuellen HM-CC-TC betrieben werden.&lt;br /&gt;
Damit diese Lösung stabil funktioniert, sollte die Kommunikation (nach Nutzererfahrung aus dem Forum) als IO-Device ein HMLAND oder ein HM-MOD-UART (Raspi-Modul) nutzen.&lt;br /&gt;
Ein CUL im RF-Mode &#039;Homematic&#039; scheint das nötige präzise Timing (s.o.) nicht immer zu halten.&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ==&lt;br /&gt;
=== Vorbereitung ===&lt;br /&gt;
- der HM-CC-VD sollte zurückgesetzt sein - ca. 20 s den Button drücken und die Einfahrprozedur am Heizkörperventil abschließen.&lt;br /&gt;
- das Pairing durchführen: am HMLAND oder HM-MOD-UART (oder besser einer VCCU)  &#039;set &amp;lt;HMIO&amp;gt; hmPairForSec nnn&#039; und am HM-CC-VD den Button 5-10 s drücken, es sollte im Display des VD kurz von 20 s rückwärts gezählt werden und dann das Antennensymbol dauerhaft stehen.&lt;br /&gt;
Der HM-CC-VD sollte jetzt in der Liste der FHEM-Devices als HM_xxxxxx sichtbar sein.&lt;br /&gt;
Wichtig: Am neu eingerichteten Device HM-CC-VD  muss noch das Attribut msgRepeat = 0 gesetzt werden, sonst führt ein Zuviel an Kommunikation zwischen HM-CC-VD und IO-Device zum Verlust der Verbindung.&amp;lt;ref&amp;gt;{{Link2Forum|Topic=41588|Message=339484|LinkText=FHEM-Forum-Beitrag}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set HM_xxxxxx deviceRename &amp;lt;HM_CC_VD&amp;gt;&lt;br /&gt;
attr &amp;lt;HM_CC_VD&amp;gt; msgRepeat 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Einrichten virtueller HM-CC-TC ===&lt;br /&gt;
Der zur Kommunikation mit dem Stellantrieb HM-CC-VD nötige Virtuelle Controller wird wie folgt eingerichtet:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define &amp;lt;HM-VIRT-TC&amp;gt; CUL_HM 112233*&lt;br /&gt;
attr &amp;lt;HM-VIRT-TC&amp;gt; expert 2_raw&lt;br /&gt;
attr &amp;lt;HM-VIRT-TC&amp;gt; model virtual_1&lt;br /&gt;
attr &amp;lt;HM-VIRT-TC&amp;gt; msgRepeat 0&lt;br /&gt;
attr &amp;lt;HM-VIRT-TC&amp;gt; subType virtual&lt;br /&gt;
&lt;br /&gt;
set &amp;lt;HM-VIRT-TC&amp;gt; virtual 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* oder eine andere noch nicht vergebene ID&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Weil es sich nicht um einen virtuellen Button, sondern um den Kanal eines virtuellen HM-CC-TC handelt, kann man den Kanal umbenennen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rename &amp;lt;HM-VIRT-TC&amp;gt;_Btn1 &amp;lt;HM-VIRT-TC&amp;gt;_c1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel wird ein virtueller TC einem VD zugeortnet. Wenn man einen TC mit mehreren Kanälen nutzt (z.B. set &amp;lt;HM-VIRT-TC&amp;gt; virtual 2),&lt;br /&gt;
kann man den einzelnen VD nachher nicht kontrollieren, es wird nur der Status des zuletzt angesteuerten Kanals am &amp;lt;HM-VIRT-TC&amp;gt; ausgewertet.&lt;br /&gt;
&lt;br /&gt;
Bei Einsatz einer VCCU kontrollieren, ob das richtige IO-Device genutzt wird (s. VCCU) - falls nicht, per IOgrp-Attribut setzen.&lt;br /&gt;
Ohne VCCU sollte IODev auf das richtige Device zeigen.&lt;br /&gt;
&lt;br /&gt;
Hier z.B. ein HM-MOD-UART &amp;quot;UART-HM&amp;quot; an der VCCU &amp;quot;VIRTCCU1&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr &amp;lt;HM-VIRT-TC&amp;gt; IOgrp VIRTCCU1:UART_HM&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Peering von HM-CC-VD und virtuellem HM-CC-TC ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set &amp;lt;HM-VIRT-TC&amp;gt;c1 peerChan 0 &amp;lt;HM_CC_VD&amp;gt; single set&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach den Button am HM-CC-VD drücken, bis die 20-Sekunden-Anzeige anfängt zu laufen.&lt;br /&gt;
&lt;br /&gt;
mit&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set &amp;lt;HM-VIRT-TC&amp;gt;c1 valvePos 55&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
kann man den VD jetzt testen.&lt;br /&gt;
&lt;br /&gt;
mit&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define heizung_regler PID20 &amp;lt;thermosensor&amp;gt;:temperature &amp;lt;HM-VIRT-TC&amp;gt;c1:valvePos&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lässt sich die Kombination aus HM-CC-VD und virtuellem HM-CC-TC im Regelmodul PID20 als Heizungsregler nutzen.&lt;br /&gt;
&lt;br /&gt;
= Fehlercodes =&lt;br /&gt;
Im Display des Antriebs wird im Normalbetrieb der Öffnungswinkel in % angezeigt, jedoch vor der Montage bzw. Im Fehlerfall folgende Codes:&lt;br /&gt;
&lt;br /&gt;
== Statuscodes ==&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;A1&#039;&#039;&#039; Batterien neu eingelegt, Antrieb fährt Stellstift zurück&lt;br /&gt;
*&#039;&#039;&#039;A2&#039;&#039;&#039; Batterien neu eingelegt, Stellstift ist komplett eingefahren, fertig zur Montage&lt;br /&gt;
*&#039;&#039;&#039;A3&#039;&#039;&#039; Taste wurde nach Montage kurz gedrückt, Stellstift fährt aus und schließt Ventil&lt;br /&gt;
Wenn Vorgang abgeschlossen zeigt der Antrieb 0%, solange bis das Ventil im Betrieb geöffnet werden soll.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlercodes ==&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;F1&#039;&#039;&#039; Ventilantrieb kann Stift nicht bewegen. Ventil zu schwergängig oder blockiert&lt;br /&gt;
*&#039;&#039;&#039;F2&#039;&#039;&#039; Ventilantrieb nicht montiert oder Stellbereich zu gross. Ursache ist fast immer, dass die Taste im Zustand &#039;&#039;&#039;A2&#039;&#039;&#039; gedrückt wurde, obwohl der Antrieb noch nicht montiert war. Batterie kurz entnehmen, warten bis Display erlischt, neu einlegen, Antrieb nach &#039;&#039;&#039;A2&#039;&#039;&#039; zuerst montieren, dann Taste drücken.&lt;br /&gt;
*&#039;&#039;&#039;F3&#039;&#039;&#039; Stellbereich zu klein. Ursache ist oft ein klemmendes Ventil, versuchen Ventil gangbar zu machen.&lt;br /&gt;
*&#039;&#039;&#039;F4+Batterisymbol&#039;&#039;&#039; Batterien sind leer, nicht mehr genug Spannung um Antrieb zu bewegen. Batteriespannung liegt dann meist um die 2 Volt.&lt;br /&gt;
*&#039;&#039;&#039;F5&#039;&#039;&#039; Anlernen gesperrt. Tritt z.b. auf, wenn versucht wird, das Ventil mit beiden oben beschrieben Methoden zu betreiben, also peering mit HM-CC-TC und zugleich pairing mit FHEM.&lt;br /&gt;
*&#039;&#039;&#039; Antennensymbol blinkt&#039;&#039;&#039; Keine Funkverbindung. Gerät ist noch nicht gepeert oder gepairt oder das gepeerte oder gepairte Device kann nicht empfangen werden. (z.b. Batterie im HM-CC-TC leer oder Funkstörung)&lt;br /&gt;
*&#039;&#039;&#039; Battriesymbol&#039;&#039;&#039;Batterien sind fast leer. Speziell bei Nutzung von Akkus funktioniert der Antrieb aber mitunter noch recht lange weiter.&lt;br /&gt;
&lt;br /&gt;
= bekannte Probleme =&lt;br /&gt;
&lt;br /&gt;
Bei Firmwareversionen vor 2.0 kann es vorkommen, dass sich der Stellantrieb bei einer bestimmten Stellung &amp;quot;festfährt&amp;quot; (z.B. 4%) und der Raum sich kontinuierlich erhitzt, obwohl eine niedrigere Temperatur am Wandthermostat eingestellt ist. Erst nach einem Reset des Stellantriebs oder manuellen Erhöhung der Temperatur am Wandthermostat/FHEM verrichtet der Stellantrieb wieder wie gewohnt seine Arbeit.&lt;br /&gt;
&lt;br /&gt;
Quelle: [[http://www.elv.de/output/controller.aspx?cid=834&amp;amp;detail=2&amp;amp;detail2=582 1]]&lt;br /&gt;
&lt;br /&gt;
Ein Firmwareupdate kann derzeit nur mittels Einschicken des Stellantriebs erfolgen.&lt;br /&gt;
&lt;br /&gt;
Ist der Stellantrieb mit dem HM-CC-TC gepairt (zu sehen im Menü des HM-CC-TC als VST Nummer X), erscheint aber nicht in FHEM (hier mit HMLAN), dann hilft der Befehl &#039;&#039;set &amp;lt;HMLAN-Name&amp;gt; hmPairForSec 300&#039;&#039; und das Drücken des Anlernknopfes am HM-CC-VD für mind. 5 Sekunden.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
; Quellen:&lt;br /&gt;
* {{Link2Forum|Topic=60296|LinkText=FHEM-Forum-Thema}}&lt;br /&gt;
* {{Link2Forum|Topic=22419|LinkText=FHEM-Forum-Thema}}&lt;br /&gt;
* {{Link2Forum|Topic=30738|LinkText=FHEM-Forum-Thema}}&lt;br /&gt;
* {{Link2Forum|Topic=54911|LinkText=FHEM-Forum-Thema}}&lt;br /&gt;
* {{Link2Forum|Topic=41588|LinkText=FHEM-Forum-Thema}}&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
* Anleitung bei EQ-3: [http://www.eq-3.de/Downloads/eq3/downloads_produktkatalog/homematic/bda/HM-CC-VD_UM_GE_eQ-3_081013.pdf HM-CC-VD Funk-Stellantrieb]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;br /&gt;
[[Kategorie:Heizungsventile]]&lt;/div&gt;</summary>
		<author><name>Soulman</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-CC-VD_Funk-Stellantrieb&amp;diff=36943</id>
		<title>HM-CC-VD Funk-Stellantrieb</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-CC-VD_Funk-Stellantrieb&amp;diff=36943"/>
		<updated>2022-01-04T16:21:24Z</updated>

		<summary type="html">&lt;p&gt;Soulman: /* Fehlercodes */ Formatierung&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;HM-CC-VD Funk-Stellantrieb&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung: Dieses Gerät ist abgekündigt (wird nicht mehr hergestellt). Nachfolgeprodukt ist der [[HM-CC-RT-DN]].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Allgemeines =&lt;br /&gt;
&lt;br /&gt;
Stellantrieb für den [[HM-CC-TC Funk-Wandthermostat|HM-CC-TC]]. Es können maximal 4 HM-CC-VD an ein HM-CC-TC angelernt werden.&lt;br /&gt;
&lt;br /&gt;
Aktuelle Firmware: 2.0&lt;br /&gt;
&lt;br /&gt;
Der HM-CC-VD &#039;&#039;&#039;misst nicht selbst&#039;&#039;&#039; die Temperatur. Diese wird von dem [[HM-CC-TC Funk-Wandthermostat]], mit dem der Stellantrieb [[Peering (HomeMatic)|gepeert]] wurde, gemessen.&lt;br /&gt;
&lt;br /&gt;
= Betrieb mit FHEM =&lt;br /&gt;
&lt;br /&gt;
HM-CC-VDs werden mit dem für ihren Betrieb/Raum zuständigen [[HM-CC-TC Funk-Wandthermostat]] [[Peering (HomeMatic)|gepeert]], dieser wird dann mit FHEM (z.b. einer [[Virtueller Controller VCCU |VCCU]]) gepairt. Dadurch ist der HM-CC-TC für die Ansteuerung der Ventiltriebe zuständig.&lt;br /&gt;
&lt;br /&gt;
Alternativ können auch Stellantriebe und Tür-/Fensterkontakte sowie der HM-CC-TC mit FHEM (z.b. einem VCCU oder direkt mit einem IO wie dem CUL) gepairen werden, also z.b. &amp;lt;pre&amp;gt;&lt;br /&gt;
set CUL hmPairForSec 300 &lt;br /&gt;
&amp;lt;/pre&amp;gt;und an allen Devices den Anlernknopf drücken innerhalb des Zeitfensters von 300 Sekunden). Dann Stellantriebe und Tür-/Fensterkontakte mit den Channels des HM-CC-TC peeren (siehe [http://fhem.de/commandref.html#CUL_HMpeerChan commandref :peerChan].&lt;br /&gt;
&lt;br /&gt;
Eine etwas detailliertere Diskussion der beiden Optionen findet sich im Artikel zum Nachfolgemodell [[HM-TC-IT-WM-W-EU]]&lt;br /&gt;
&lt;br /&gt;
Ausserdem kann der Antrieb mit einem virtuellen HM-CC-TC betreiben werden, siehe weiter unten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Log-Daten ==&lt;br /&gt;
=== Device-Log ===&lt;br /&gt;
&lt;br /&gt;
Zur Behebung des &amp;quot;1 bzw. 4 % Fehlers&amp;quot; wurde die Raumtemperatur über die Ansteuerung des HM-CC-TC temporär auf 28 °C erhöht. Nachdem das Thermostat (VD) laut Logs das Ventil auf hier 68 % geöffnet hat, wurde die Temperatur wieder auf die gewünschte (desired) Temperatur (am TC) gesetzt. Diese Befehle mussten allerdings einige Male wiederholt werden und es bedurfte einiger Minuten Wartezeit zwischen den Umstellungen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2013-03-18_22:34:57 OG.AZ.Thermostat set_0 %&lt;br /&gt;
2013-03-18_22:34:57 OG.AZ.Thermostat ValveDesired: 0 %&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat ValvePosition: 1 %&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat 1 %&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat battery: ok&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat motorErr: ok&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat motor: stop&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat operState: errorTargetNotMet&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat operStateErrCnt: 1&lt;br /&gt;
2013-03-18_22:37:42 OG.AZ.Thermostat set_68 %&lt;br /&gt;
2013-03-18_22:37:42 OG.AZ.Thermostat ValveDesired: 68 %&lt;br /&gt;
2013-03-18_22:37:43 OG.AZ.Thermostat ValvePosition: 1 %&lt;br /&gt;
2013-03-18_22:37:43 OG.AZ.Thermostat 1 %&lt;br /&gt;
2013-03-18_22:40:20 OG.AZ.Thermostat set_68 %&lt;br /&gt;
2013-03-18_22:40:20 OG.AZ.Thermostat ValveDesired: 68 %&lt;br /&gt;
2013-03-18_22:40:22 OG.AZ.Thermostat ValvePosition: 68 %&lt;br /&gt;
2013-03-18_22:40:22 OG.AZ.Thermostat 68 %&lt;br /&gt;
2013-03-18_22:40:22 OG.AZ.Thermostat battery: ok&lt;br /&gt;
2013-03-18_22:40:22 OG.AZ.Thermostat motorErr: ok&lt;br /&gt;
2013-03-18_22:40:22 OG.AZ.Thermostat motor: stop&lt;br /&gt;
2013-03-18_22:40:22 OG.AZ.Thermostat operState: onTarget&lt;br /&gt;
2013-03-18_22:42:31 OG.AZ.Thermostat set_0 %&lt;br /&gt;
2013-03-18_22:42:31 OG.AZ.Thermostat ValveDesired: 0 %&lt;br /&gt;
2013-03-18_22:42:33 OG.AZ.Thermostat ValvePosition: 68 %&lt;br /&gt;
2013-03-18_22:42:33 OG.AZ.Thermostat 68 %&lt;br /&gt;
2013-03-18_22:42:33 OG.AZ.Thermostat battery: ok&lt;br /&gt;
2013-03-18_22:42:33 OG.AZ.Thermostat motorErr: ok&lt;br /&gt;
2013-03-18_22:42:33 OG.AZ.Thermostat motor: closing&lt;br /&gt;
2013-03-18_22:42:33 OG.AZ.Thermostat operState: adjusting&lt;br /&gt;
2013-03-18_22:44:34 OG.AZ.Thermostat set_0 %&lt;br /&gt;
2013-03-18_22:44:34 OG.AZ.Thermostat ValveDesired: 0 %&lt;br /&gt;
2013-03-18_22:44:36 OG.AZ.Thermostat ValvePosition: 0 %&lt;br /&gt;
2013-03-18_22:44:36 OG.AZ.Thermostat 0 %&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Event monitor ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2013-03-18 22:42:33 CUL_HM OG.AZ.Thermostat motor: closing&lt;br /&gt;
2013-03-18 22:42:33 CUL_HM OG.AZ.Thermostat operState: adjusting&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Stromversorgung / Batterien ==&lt;br /&gt;
&lt;br /&gt;
=== Batteriealarme des HM-CC-VD in Verbindung mit HM-CC-TC ===&lt;br /&gt;
* Bei U-Bat. &amp;lt; 2,4 V erscheint im Display des VD und des TC das Batteriesymbol mit battery:low in den Readings und Events.&lt;br /&gt;
* Bei U-Bat. &amp;lt; 2,3 V erscheint im Display des VD zusätzlich F4 mit battery:critical in den Readings und Events.&lt;br /&gt;
Faktisch ist ein Betrieb bis ca. 2,2 Volt möglich (also je Zelle 1,1 Volt) darunter nimmt die Zuverlässigkeit der Funkverbindung stark ab.&lt;br /&gt;
&lt;br /&gt;
=== Akkubetrieb ===&lt;br /&gt;
Wegen der oben genannten Warngrenzen eigenen sich viele Akkus nicht sehr gut, da auch frisch geladenen NiMh-Akkus eine Zellenspannung von nur etwas über 1,2 Volt haben. Desshalb wird schnell die battery:low Warngrenze erreicht; mitunter unmittelbar nach dem Einsetzen mit der Kalibierungsfahrt. Mit  &#039;&#039;NiMh-Akkus mit geringer Selbstentladung&#039;&#039; (z.b. Panasonic Eneloop) ist ein Betrieb jedoch sinnvoll möglich, da der Spannungsabfall bei den sehr geringen Entladeströmen im Stellantrieb relativ lange oberhalb 1,2 Volt verläuft.&lt;br /&gt;
&lt;br /&gt;
= Betrieb mit FHEM, ohne (physischen) HM-CC-TC =&lt;br /&gt;
&lt;br /&gt;
Alternativ kann der HM-CC-VD auch über einen virtuellen HM-CC-TC betrieben werden.&lt;br /&gt;
Damit diese Lösung stabil funktioniert, sollte die Kommunikation (nach Nutzererfahrung aus dem Forum) als IO-Device ein HMLAND oder ein HM-MOD-UART (Raspi-Modul) nutzen.&lt;br /&gt;
Ein CUL im RF-Mode &#039;Homematic&#039; scheint das nötige präzise Timing (s.o.) nicht immer zu halten.&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ==&lt;br /&gt;
=== Vorbereitung ===&lt;br /&gt;
- der HM-CC-VD sollte zurückgesetzt sein - ca. 20 s den Button drücken und die Einfahrprozedur am Heizkörperventil abschließen.&lt;br /&gt;
- das Pairing durchführen: am HMLAND oder HM-MOD-UART (oder besser einer VCCU)  &#039;set &amp;lt;HMIO&amp;gt; hmPairForSec nnn&#039; und am HM-CC-VD den Button 5-10 s drücken, es sollte im Display des VD kurz von 20 s rückwärts gezählt werden und dann das Antennensymbol dauerhaft stehen.&lt;br /&gt;
Der HM-CC-VD sollte jetzt in der Liste der FHEM-Devices als HM_xxxxxx sichtbar sein.&lt;br /&gt;
Wichtig: Am neu eingerichteten Device HM-CC-VD  muss noch das Attribut msgRepeat = 0 gesetzt werden, sonst führt ein Zuviel an Kommunikation zwischen HM-CC-VD und IO-Device zum Verlust der Verbindung.&amp;lt;ref&amp;gt;{{Link2Forum|Topic=41588|Message=339484|LinkText=FHEM-Forum-Beitrag}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set HM_xxxxxx deviceRename &amp;lt;HM_CC_VD&amp;gt;&lt;br /&gt;
attr &amp;lt;HM_CC_VD&amp;gt; msgRepeat 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Einrichten virtueller HM-CC-TC ===&lt;br /&gt;
Der zur Kommunikation mit dem Stellantrieb HM-CC-VD nötige Virtuelle Controller wird wie folgt eingerichtet:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define &amp;lt;HM-VIRT-TC&amp;gt; CUL_HM 112233*&lt;br /&gt;
attr &amp;lt;HM-VIRT-TC&amp;gt; expert 2_raw&lt;br /&gt;
attr &amp;lt;HM-VIRT-TC&amp;gt; model virtual_1&lt;br /&gt;
attr &amp;lt;HM-VIRT-TC&amp;gt; msgRepeat 0&lt;br /&gt;
attr &amp;lt;HM-VIRT-TC&amp;gt; subType virtual&lt;br /&gt;
&lt;br /&gt;
set &amp;lt;HM-VIRT-TC&amp;gt; virtual 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* oder eine andere noch nicht vergebene ID&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Weil es sich nicht um einen virtuellen Button, sondern um den Kanal eines virtuellen HM-CC-TC handelt, kann man den Kanal umbenennen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rename &amp;lt;HM-VIRT-TC&amp;gt;_Btn1 &amp;lt;HM-VIRT-TC&amp;gt;_c1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel wird ein virtueller TC einem VD zugeortnet. Wenn man einen TC mit mehreren Kanälen nutzt (z.B. set &amp;lt;HM-VIRT-TC&amp;gt; virtual 2),&lt;br /&gt;
kann man den einzelnen VD nachher nicht kontrollieren, es wird nur der Status des zuletzt angesteuerten Kanals am &amp;lt;HM-VIRT-TC&amp;gt; ausgewertet.&lt;br /&gt;
&lt;br /&gt;
Bei Einsatz einer VCCU kontrollieren, ob das richtige IO-Device genutzt wird (s. VCCU) - falls nicht, per IOgrp-Attribut setzen.&lt;br /&gt;
Ohne VCCU sollte IODev auf das richtige Device zeigen.&lt;br /&gt;
&lt;br /&gt;
Hier z.B. ein HM-MOD-UART &amp;quot;UART-HM&amp;quot; an der VCCU &amp;quot;VIRTCCU1&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr &amp;lt;HM-VIRT-TC&amp;gt; IOgrp VIRTCCU1:UART_HM&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Peering von HM-CC-VD und virtuellem HM-CC-TC ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set &amp;lt;HM-VIRT-TC&amp;gt;c1 peerChan 0 &amp;lt;HM_CC_VD&amp;gt; single set&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach den Button am HM-CC-VD drücken, bis die 20-Sekunden-Anzeige anfängt zu laufen.&lt;br /&gt;
&lt;br /&gt;
mit&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set &amp;lt;HM-VIRT-TC&amp;gt;c1 valvePos 55&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
kann man den VD jetzt testen.&lt;br /&gt;
&lt;br /&gt;
mit&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define heizung_regler PID20 &amp;lt;thermosensor&amp;gt;:temperature &amp;lt;HM-VIRT-TC&amp;gt;c1:valvePos&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lässt sich die Kombination aus HM-CC-VD und virtuellem HM-CC-TC im Regelmodul PID20 als Heizungsregler nutzen.&lt;br /&gt;
&lt;br /&gt;
= Fehlercodes =&lt;br /&gt;
Im Display des Antriebs wird im Normalbetrieb der Öffnungswinkel in % angezeigt, jedoch vor der Montage bzw. Im Fehlerfall folgende Codes:&lt;br /&gt;
&lt;br /&gt;
== Statuscodes ==&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;A1&#039;&#039;&#039; Batterien neu eingelegt, Antrieb fährt Stellstift zurück&lt;br /&gt;
*&#039;&#039;&#039;A2&#039;&#039;&#039; Batterien neu eingelegt, Stellstift ist komplett eingefahren, fertig zur Montage&lt;br /&gt;
*&#039;&#039;&#039;A3&#039;&#039;&#039; Taste wurde nach Montage kurz gedrückt, Stellstift fährt aus und schließt Ventil&lt;br /&gt;
Wenn Vorgang abgeschlossen zeigt der Antrieb 0%, solange bis das Ventil im Betrieb geöffnet werden soll.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlercodes ==&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;F1&#039;&#039;&#039; Ventilantrieb kann Stift nicht bewegen. Ventil zu schwergängig oder blockiert&lt;br /&gt;
*&#039;&#039;&#039;F2&#039;&#039;&#039; Ventilantrieb nicht montiert oder Stellbereich zu gross. Ursache ist fast immer, dass die Taste im Zustand &#039;&#039;&#039;A2&#039;&#039;&#039; gedrückt wurde, obwohl der Antrieb noch nicht montiert war. Batterie kurz entnehmen, warten bis Display erlischt, neu einlegen, Antrieb nach &#039;&#039;&#039;A2&#039;&#039;&#039; zuerst montieren, dann Taste drücken.&lt;br /&gt;
*&#039;&#039;&#039;F3&#039;&#039;&#039; Stellbereich zu klein. Ursache ist oft ein klemmendes Ventil, versuchen Ventil gangbar zu machen.&lt;br /&gt;
*&#039;&#039;&#039;F4+Batterisymbol&#039;&#039;&#039; Batterien sind leer, nicht mehr genug Spannung um Antrieb zu bewegen. Batteriespannung liegt dann meist um die 2 Volt.&lt;br /&gt;
*&#039;&#039;&#039;F5&#039;&#039;&#039; Anlernen gesperrt. Tritt z.b. auf, wenn versucht wird das Ventil mit beiden oben beschrieben MEthoden zu betreiben also peering mit HM-CC-TC und zugleich pairing mit FHEM.&lt;br /&gt;
*&#039;&#039;&#039; Antennensymbol blinkt&#039;&#039;&#039; Keine Funkverbindung. Gerät ist noch nicht gepeert oder gepairt oder das gepeerte oder gepairte Device kann nicht empfangen werden. (Batterie im HM-CC-TC leer oder Funkstörung)&lt;br /&gt;
*&#039;&#039;&#039; Battriesymbol&#039;&#039;&#039;Batterien sind fast leer.&lt;br /&gt;
&lt;br /&gt;
= bekannte Probleme =&lt;br /&gt;
&lt;br /&gt;
Bei Firmwareversionen vor 2.0 kann es vorkommen, dass sich der Stellantrieb bei einer bestimmten Stellung &amp;quot;festfährt&amp;quot; (z.B. 4%) und der Raum sich kontinuierlich erhitzt, obwohl eine niedrigere Temperatur am Wandthermostat eingestellt ist. Erst nach einem Reset des Stellantriebs oder manuellen Erhöhung der Temperatur am Wandthermostat/FHEM verrichtet der Stellantrieb wieder wie gewohnt seine Arbeit.&lt;br /&gt;
&lt;br /&gt;
Quelle: [[http://www.elv.de/output/controller.aspx?cid=834&amp;amp;detail=2&amp;amp;detail2=582 1]]&lt;br /&gt;
&lt;br /&gt;
Ein Firmwareupdate kann derzeit nur mittels Einschicken des Stellantriebs erfolgen.&lt;br /&gt;
&lt;br /&gt;
Ist der Stellantrieb mit dem HM-CC-TC gepairt (zu sehen im Menü des HM-CC-TC als VST Nummer X), erscheint aber nicht in FHEM (hier mit HMLAN), dann hilft der Befehl &#039;&#039;set &amp;lt;HMLAN-Name&amp;gt; hmPairForSec 300&#039;&#039; und das Drücken des Anlernknopfes am HM-CC-VD für mind. 5 Sekunden.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
; Quellen:&lt;br /&gt;
* {{Link2Forum|Topic=60296|LinkText=FHEM-Forum-Thema}}&lt;br /&gt;
* {{Link2Forum|Topic=22419|LinkText=FHEM-Forum-Thema}}&lt;br /&gt;
* {{Link2Forum|Topic=30738|LinkText=FHEM-Forum-Thema}}&lt;br /&gt;
* {{Link2Forum|Topic=54911|LinkText=FHEM-Forum-Thema}}&lt;br /&gt;
* {{Link2Forum|Topic=41588|LinkText=FHEM-Forum-Thema}}&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
* Anleitung bei EQ-3: [http://www.eq-3.de/Downloads/eq3/downloads_produktkatalog/homematic/bda/HM-CC-VD_UM_GE_eQ-3_081013.pdf HM-CC-VD Funk-Stellantrieb]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;br /&gt;
[[Kategorie:Heizungsventile]]&lt;/div&gt;</summary>
		<author><name>Soulman</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-CC-VD_Funk-Stellantrieb&amp;diff=36942</id>
		<title>HM-CC-VD Funk-Stellantrieb</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-CC-VD_Funk-Stellantrieb&amp;diff=36942"/>
		<updated>2022-01-04T16:19:36Z</updated>

		<summary type="html">&lt;p&gt;Soulman: /* Akkubetrieb */ korrektur&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;HM-CC-VD Funk-Stellantrieb&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung: Dieses Gerät ist abgekündigt (wird nicht mehr hergestellt). Nachfolgeprodukt ist der [[HM-CC-RT-DN]].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Allgemeines =&lt;br /&gt;
&lt;br /&gt;
Stellantrieb für den [[HM-CC-TC Funk-Wandthermostat|HM-CC-TC]]. Es können maximal 4 HM-CC-VD an ein HM-CC-TC angelernt werden.&lt;br /&gt;
&lt;br /&gt;
Aktuelle Firmware: 2.0&lt;br /&gt;
&lt;br /&gt;
Der HM-CC-VD &#039;&#039;&#039;misst nicht selbst&#039;&#039;&#039; die Temperatur. Diese wird von dem [[HM-CC-TC Funk-Wandthermostat]], mit dem der Stellantrieb [[Peering (HomeMatic)|gepeert]] wurde, gemessen.&lt;br /&gt;
&lt;br /&gt;
= Betrieb mit FHEM =&lt;br /&gt;
&lt;br /&gt;
HM-CC-VDs werden mit dem für ihren Betrieb/Raum zuständigen [[HM-CC-TC Funk-Wandthermostat]] [[Peering (HomeMatic)|gepeert]], dieser wird dann mit FHEM (z.b. einer [[Virtueller Controller VCCU |VCCU]]) gepairt. Dadurch ist der HM-CC-TC für die Ansteuerung der Ventiltriebe zuständig.&lt;br /&gt;
&lt;br /&gt;
Alternativ können auch Stellantriebe und Tür-/Fensterkontakte sowie der HM-CC-TC mit FHEM (z.b. einem VCCU oder direkt mit einem IO wie dem CUL) gepairen werden, also z.b. &amp;lt;pre&amp;gt;&lt;br /&gt;
set CUL hmPairForSec 300 &lt;br /&gt;
&amp;lt;/pre&amp;gt;und an allen Devices den Anlernknopf drücken innerhalb des Zeitfensters von 300 Sekunden). Dann Stellantriebe und Tür-/Fensterkontakte mit den Channels des HM-CC-TC peeren (siehe [http://fhem.de/commandref.html#CUL_HMpeerChan commandref :peerChan].&lt;br /&gt;
&lt;br /&gt;
Eine etwas detailliertere Diskussion der beiden Optionen findet sich im Artikel zum Nachfolgemodell [[HM-TC-IT-WM-W-EU]]&lt;br /&gt;
&lt;br /&gt;
Ausserdem kann der Antrieb mit einem virtuellen HM-CC-TC betreiben werden, siehe weiter unten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Log-Daten ==&lt;br /&gt;
=== Device-Log ===&lt;br /&gt;
&lt;br /&gt;
Zur Behebung des &amp;quot;1 bzw. 4 % Fehlers&amp;quot; wurde die Raumtemperatur über die Ansteuerung des HM-CC-TC temporär auf 28 °C erhöht. Nachdem das Thermostat (VD) laut Logs das Ventil auf hier 68 % geöffnet hat, wurde die Temperatur wieder auf die gewünschte (desired) Temperatur (am TC) gesetzt. Diese Befehle mussten allerdings einige Male wiederholt werden und es bedurfte einiger Minuten Wartezeit zwischen den Umstellungen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2013-03-18_22:34:57 OG.AZ.Thermostat set_0 %&lt;br /&gt;
2013-03-18_22:34:57 OG.AZ.Thermostat ValveDesired: 0 %&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat ValvePosition: 1 %&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat 1 %&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat battery: ok&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat motorErr: ok&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat motor: stop&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat operState: errorTargetNotMet&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat operStateErrCnt: 1&lt;br /&gt;
2013-03-18_22:37:42 OG.AZ.Thermostat set_68 %&lt;br /&gt;
2013-03-18_22:37:42 OG.AZ.Thermostat ValveDesired: 68 %&lt;br /&gt;
2013-03-18_22:37:43 OG.AZ.Thermostat ValvePosition: 1 %&lt;br /&gt;
2013-03-18_22:37:43 OG.AZ.Thermostat 1 %&lt;br /&gt;
2013-03-18_22:40:20 OG.AZ.Thermostat set_68 %&lt;br /&gt;
2013-03-18_22:40:20 OG.AZ.Thermostat ValveDesired: 68 %&lt;br /&gt;
2013-03-18_22:40:22 OG.AZ.Thermostat ValvePosition: 68 %&lt;br /&gt;
2013-03-18_22:40:22 OG.AZ.Thermostat 68 %&lt;br /&gt;
2013-03-18_22:40:22 OG.AZ.Thermostat battery: ok&lt;br /&gt;
2013-03-18_22:40:22 OG.AZ.Thermostat motorErr: ok&lt;br /&gt;
2013-03-18_22:40:22 OG.AZ.Thermostat motor: stop&lt;br /&gt;
2013-03-18_22:40:22 OG.AZ.Thermostat operState: onTarget&lt;br /&gt;
2013-03-18_22:42:31 OG.AZ.Thermostat set_0 %&lt;br /&gt;
2013-03-18_22:42:31 OG.AZ.Thermostat ValveDesired: 0 %&lt;br /&gt;
2013-03-18_22:42:33 OG.AZ.Thermostat ValvePosition: 68 %&lt;br /&gt;
2013-03-18_22:42:33 OG.AZ.Thermostat 68 %&lt;br /&gt;
2013-03-18_22:42:33 OG.AZ.Thermostat battery: ok&lt;br /&gt;
2013-03-18_22:42:33 OG.AZ.Thermostat motorErr: ok&lt;br /&gt;
2013-03-18_22:42:33 OG.AZ.Thermostat motor: closing&lt;br /&gt;
2013-03-18_22:42:33 OG.AZ.Thermostat operState: adjusting&lt;br /&gt;
2013-03-18_22:44:34 OG.AZ.Thermostat set_0 %&lt;br /&gt;
2013-03-18_22:44:34 OG.AZ.Thermostat ValveDesired: 0 %&lt;br /&gt;
2013-03-18_22:44:36 OG.AZ.Thermostat ValvePosition: 0 %&lt;br /&gt;
2013-03-18_22:44:36 OG.AZ.Thermostat 0 %&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Event monitor ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2013-03-18 22:42:33 CUL_HM OG.AZ.Thermostat motor: closing&lt;br /&gt;
2013-03-18 22:42:33 CUL_HM OG.AZ.Thermostat operState: adjusting&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Stromversorgung / Batterien ==&lt;br /&gt;
&lt;br /&gt;
=== Batteriealarme des HM-CC-VD in Verbindung mit HM-CC-TC ===&lt;br /&gt;
* Bei U-Bat. &amp;lt; 2,4 V erscheint im Display des VD und des TC das Batteriesymbol mit battery:low in den Readings und Events.&lt;br /&gt;
* Bei U-Bat. &amp;lt; 2,3 V erscheint im Display des VD zusätzlich F4 mit battery:critical in den Readings und Events.&lt;br /&gt;
Faktisch ist ein Betrieb bis ca. 2,2 Volt möglich (also je Zelle 1,1 Volt) darunter nimmt die Zuverlässigkeit der Funkverbindung stark ab.&lt;br /&gt;
&lt;br /&gt;
=== Akkubetrieb ===&lt;br /&gt;
Wegen der oben genannten Warngrenzen eigenen sich viele Akkus nicht sehr gut, da auch frisch geladenen NiMh-Akkus eine Zellenspannung von nur etwas über 1,2 Volt haben. Desshalb wird schnell die battery:low Warngrenze erreicht; mitunter unmittelbar nach dem Einsetzen mit der Kalibierungsfahrt. Mit  &#039;&#039;NiMh-Akkus mit geringer Selbstentladung&#039;&#039; (z.b. Panasonic Eneloop) ist ein Betrieb jedoch sinnvoll möglich, da der Spannungsabfall bei den sehr geringen Entladeströmen im Stellantrieb relativ lange oberhalb 1,2 Volt verläuft.&lt;br /&gt;
&lt;br /&gt;
= Betrieb mit FHEM, ohne (physischen) HM-CC-TC =&lt;br /&gt;
&lt;br /&gt;
Alternativ kann der HM-CC-VD auch über einen virtuellen HM-CC-TC betrieben werden.&lt;br /&gt;
Damit diese Lösung stabil funktioniert, sollte die Kommunikation (nach Nutzererfahrung aus dem Forum) als IO-Device ein HMLAND oder ein HM-MOD-UART (Raspi-Modul) nutzen.&lt;br /&gt;
Ein CUL im RF-Mode &#039;Homematic&#039; scheint das nötige präzise Timing (s.o.) nicht immer zu halten.&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ==&lt;br /&gt;
=== Vorbereitung ===&lt;br /&gt;
- der HM-CC-VD sollte zurückgesetzt sein - ca. 20 s den Button drücken und die Einfahrprozedur am Heizkörperventil abschließen.&lt;br /&gt;
- das Pairing durchführen: am HMLAND oder HM-MOD-UART (oder besser einer VCCU)  &#039;set &amp;lt;HMIO&amp;gt; hmPairForSec nnn&#039; und am HM-CC-VD den Button 5-10 s drücken, es sollte im Display des VD kurz von 20 s rückwärts gezählt werden und dann das Antennensymbol dauerhaft stehen.&lt;br /&gt;
Der HM-CC-VD sollte jetzt in der Liste der FHEM-Devices als HM_xxxxxx sichtbar sein.&lt;br /&gt;
Wichtig: Am neu eingerichteten Device HM-CC-VD  muss noch das Attribut msgRepeat = 0 gesetzt werden, sonst führt ein Zuviel an Kommunikation zwischen HM-CC-VD und IO-Device zum Verlust der Verbindung.&amp;lt;ref&amp;gt;{{Link2Forum|Topic=41588|Message=339484|LinkText=FHEM-Forum-Beitrag}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set HM_xxxxxx deviceRename &amp;lt;HM_CC_VD&amp;gt;&lt;br /&gt;
attr &amp;lt;HM_CC_VD&amp;gt; msgRepeat 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Einrichten virtueller HM-CC-TC ===&lt;br /&gt;
Der zur Kommunikation mit dem Stellantrieb HM-CC-VD nötige Virtuelle Controller wird wie folgt eingerichtet:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define &amp;lt;HM-VIRT-TC&amp;gt; CUL_HM 112233*&lt;br /&gt;
attr &amp;lt;HM-VIRT-TC&amp;gt; expert 2_raw&lt;br /&gt;
attr &amp;lt;HM-VIRT-TC&amp;gt; model virtual_1&lt;br /&gt;
attr &amp;lt;HM-VIRT-TC&amp;gt; msgRepeat 0&lt;br /&gt;
attr &amp;lt;HM-VIRT-TC&amp;gt; subType virtual&lt;br /&gt;
&lt;br /&gt;
set &amp;lt;HM-VIRT-TC&amp;gt; virtual 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* oder eine andere noch nicht vergebene ID&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Weil es sich nicht um einen virtuellen Button, sondern um den Kanal eines virtuellen HM-CC-TC handelt, kann man den Kanal umbenennen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rename &amp;lt;HM-VIRT-TC&amp;gt;_Btn1 &amp;lt;HM-VIRT-TC&amp;gt;_c1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel wird ein virtueller TC einem VD zugeortnet. Wenn man einen TC mit mehreren Kanälen nutzt (z.B. set &amp;lt;HM-VIRT-TC&amp;gt; virtual 2),&lt;br /&gt;
kann man den einzelnen VD nachher nicht kontrollieren, es wird nur der Status des zuletzt angesteuerten Kanals am &amp;lt;HM-VIRT-TC&amp;gt; ausgewertet.&lt;br /&gt;
&lt;br /&gt;
Bei Einsatz einer VCCU kontrollieren, ob das richtige IO-Device genutzt wird (s. VCCU) - falls nicht, per IOgrp-Attribut setzen.&lt;br /&gt;
Ohne VCCU sollte IODev auf das richtige Device zeigen.&lt;br /&gt;
&lt;br /&gt;
Hier z.B. ein HM-MOD-UART &amp;quot;UART-HM&amp;quot; an der VCCU &amp;quot;VIRTCCU1&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr &amp;lt;HM-VIRT-TC&amp;gt; IOgrp VIRTCCU1:UART_HM&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Peering von HM-CC-VD und virtuellem HM-CC-TC ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set &amp;lt;HM-VIRT-TC&amp;gt;c1 peerChan 0 &amp;lt;HM_CC_VD&amp;gt; single set&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach den Button am HM-CC-VD drücken, bis die 20-Sekunden-Anzeige anfängt zu laufen.&lt;br /&gt;
&lt;br /&gt;
mit&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set &amp;lt;HM-VIRT-TC&amp;gt;c1 valvePos 55&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
kann man den VD jetzt testen.&lt;br /&gt;
&lt;br /&gt;
mit&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define heizung_regler PID20 &amp;lt;thermosensor&amp;gt;:temperature &amp;lt;HM-VIRT-TC&amp;gt;c1:valvePos&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lässt sich die Kombination aus HM-CC-VD und virtuellem HM-CC-TC im Regelmodul PID20 als Heizungsregler nutzen.&lt;br /&gt;
&lt;br /&gt;
= Fehlercodes =&lt;br /&gt;
Im Display des Antriebs wird im Normalbetrieb der Öffnungswinkel in % angezeigt, jedoch vor der Montage bzw. Im Fehlerfall folgende Codes:&lt;br /&gt;
&lt;br /&gt;
== Statuscodes ==&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;A1&#039;&#039;&#039; Batterien neu eingelegt, Antrieb fährt Stellstift zurück&lt;br /&gt;
*&#039;&#039;&#039;A2&#039;&#039;&#039; Batterien neu eingelegt, Stellstift ist komplett eingefahren, fertig zur Montage&lt;br /&gt;
*&#039;&#039;&#039;A3&#039;&#039;&#039; Taste wurde nach Montage kurz gedrückt, Stellstift fährt aus und schließt Ventil&lt;br /&gt;
Wenn Vorgang abgeschlossen zeigt der Antrieb 0%, solange bis das Ventil im Betrieb geöffnet werden soll.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlercodes ==&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;F1&#039;&#039;&#039;Ventilantrieb kann Stift nicht bewegen. Ventil zu schwergängig oder blockiert&lt;br /&gt;
*&#039;&#039;&#039;F2&#039;&#039;&#039;Ventilantrieb nicht montiert oder Stellbereich zu gross. Ursache ist fast immer, dass die Taste im Zustand &#039;&#039;&#039;A2&#039;&#039;&#039; gedrückt wurde, obwohl der Antrieb noch nicht montiert war. Batterie kurz entnehmen, warten bis Display erlischt, neu einlegen, Antrieb nach &#039;&#039;&#039;A2&#039;&#039;&#039; zuerst montieren, dann Taste drücken.&lt;br /&gt;
*&#039;&#039;&#039;F3&#039;&#039;&#039;Stellbereich zu klein. Ursache ist oft ein klemmendes Ventil, versuchen Ventil gangbar zu machen.&lt;br /&gt;
*&#039;&#039;&#039;F4+Batterisymbol&#039;&#039;&#039; Batterien sind leer, nicht mehr genug Spannung um Antrieb zu bewegen. Batteriespannung liegt dann meist um die 2 Volt.&lt;br /&gt;
*&#039;&#039;&#039;F5&#039;&#039;&#039;Anlernen gesperrt. Tritt z.b. auf, wenn versucht wird das Ventil mit beiden oben beschrieben MEthoden zu betreiben also peering mit HM-CC-TC und zugleich pairing mit FHEM.&lt;br /&gt;
*&#039;&#039;&#039;Antennensymbol blinkt&#039;&#039;&#039; Keine Funkverbindung. Gerät ist noch nicht gepeert oder gepairt oder das gepeerte oder gepairte Device kann nicht empfangen werden. (Batterie im HM-CC-TC leer oder Funkstörung)&lt;br /&gt;
*&#039;&#039;&#039;Battriesymbol&#039;&#039;&#039;Batterien sind fast leer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= bekannte Probleme =&lt;br /&gt;
&lt;br /&gt;
Bei Firmwareversionen vor 2.0 kann es vorkommen, dass sich der Stellantrieb bei einer bestimmten Stellung &amp;quot;festfährt&amp;quot; (z.B. 4%) und der Raum sich kontinuierlich erhitzt, obwohl eine niedrigere Temperatur am Wandthermostat eingestellt ist. Erst nach einem Reset des Stellantriebs oder manuellen Erhöhung der Temperatur am Wandthermostat/FHEM verrichtet der Stellantrieb wieder wie gewohnt seine Arbeit.&lt;br /&gt;
&lt;br /&gt;
Quelle: [[http://www.elv.de/output/controller.aspx?cid=834&amp;amp;detail=2&amp;amp;detail2=582 1]]&lt;br /&gt;
&lt;br /&gt;
Ein Firmwareupdate kann derzeit nur mittels Einschicken des Stellantriebs erfolgen.&lt;br /&gt;
&lt;br /&gt;
Ist der Stellantrieb mit dem HM-CC-TC gepairt (zu sehen im Menü des HM-CC-TC als VST Nummer X), erscheint aber nicht in FHEM (hier mit HMLAN), dann hilft der Befehl &#039;&#039;set &amp;lt;HMLAN-Name&amp;gt; hmPairForSec 300&#039;&#039; und das Drücken des Anlernknopfes am HM-CC-VD für mind. 5 Sekunden.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
; Quellen:&lt;br /&gt;
* {{Link2Forum|Topic=60296|LinkText=FHEM-Forum-Thema}}&lt;br /&gt;
* {{Link2Forum|Topic=22419|LinkText=FHEM-Forum-Thema}}&lt;br /&gt;
* {{Link2Forum|Topic=30738|LinkText=FHEM-Forum-Thema}}&lt;br /&gt;
* {{Link2Forum|Topic=54911|LinkText=FHEM-Forum-Thema}}&lt;br /&gt;
* {{Link2Forum|Topic=41588|LinkText=FHEM-Forum-Thema}}&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
* Anleitung bei EQ-3: [http://www.eq-3.de/Downloads/eq3/downloads_produktkatalog/homematic/bda/HM-CC-VD_UM_GE_eQ-3_081013.pdf HM-CC-VD Funk-Stellantrieb]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;br /&gt;
[[Kategorie:Heizungsventile]]&lt;/div&gt;</summary>
		<author><name>Soulman</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-CC-VD_Funk-Stellantrieb&amp;diff=36941</id>
		<title>HM-CC-VD Funk-Stellantrieb</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-CC-VD_Funk-Stellantrieb&amp;diff=36941"/>
		<updated>2022-01-04T16:18:26Z</updated>

		<summary type="html">&lt;p&gt;Soulman: typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;HM-CC-VD Funk-Stellantrieb&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung: Dieses Gerät ist abgekündigt (wird nicht mehr hergestellt). Nachfolgeprodukt ist der [[HM-CC-RT-DN]].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Allgemeines =&lt;br /&gt;
&lt;br /&gt;
Stellantrieb für den [[HM-CC-TC Funk-Wandthermostat|HM-CC-TC]]. Es können maximal 4 HM-CC-VD an ein HM-CC-TC angelernt werden.&lt;br /&gt;
&lt;br /&gt;
Aktuelle Firmware: 2.0&lt;br /&gt;
&lt;br /&gt;
Der HM-CC-VD &#039;&#039;&#039;misst nicht selbst&#039;&#039;&#039; die Temperatur. Diese wird von dem [[HM-CC-TC Funk-Wandthermostat]], mit dem der Stellantrieb [[Peering (HomeMatic)|gepeert]] wurde, gemessen.&lt;br /&gt;
&lt;br /&gt;
= Betrieb mit FHEM =&lt;br /&gt;
&lt;br /&gt;
HM-CC-VDs werden mit dem für ihren Betrieb/Raum zuständigen [[HM-CC-TC Funk-Wandthermostat]] [[Peering (HomeMatic)|gepeert]], dieser wird dann mit FHEM (z.b. einer [[Virtueller Controller VCCU |VCCU]]) gepairt. Dadurch ist der HM-CC-TC für die Ansteuerung der Ventiltriebe zuständig.&lt;br /&gt;
&lt;br /&gt;
Alternativ können auch Stellantriebe und Tür-/Fensterkontakte sowie der HM-CC-TC mit FHEM (z.b. einem VCCU oder direkt mit einem IO wie dem CUL) gepairen werden, also z.b. &amp;lt;pre&amp;gt;&lt;br /&gt;
set CUL hmPairForSec 300 &lt;br /&gt;
&amp;lt;/pre&amp;gt;und an allen Devices den Anlernknopf drücken innerhalb des Zeitfensters von 300 Sekunden). Dann Stellantriebe und Tür-/Fensterkontakte mit den Channels des HM-CC-TC peeren (siehe [http://fhem.de/commandref.html#CUL_HMpeerChan commandref :peerChan].&lt;br /&gt;
&lt;br /&gt;
Eine etwas detailliertere Diskussion der beiden Optionen findet sich im Artikel zum Nachfolgemodell [[HM-TC-IT-WM-W-EU]]&lt;br /&gt;
&lt;br /&gt;
Ausserdem kann der Antrieb mit einem virtuellen HM-CC-TC betreiben werden, siehe weiter unten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Log-Daten ==&lt;br /&gt;
=== Device-Log ===&lt;br /&gt;
&lt;br /&gt;
Zur Behebung des &amp;quot;1 bzw. 4 % Fehlers&amp;quot; wurde die Raumtemperatur über die Ansteuerung des HM-CC-TC temporär auf 28 °C erhöht. Nachdem das Thermostat (VD) laut Logs das Ventil auf hier 68 % geöffnet hat, wurde die Temperatur wieder auf die gewünschte (desired) Temperatur (am TC) gesetzt. Diese Befehle mussten allerdings einige Male wiederholt werden und es bedurfte einiger Minuten Wartezeit zwischen den Umstellungen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2013-03-18_22:34:57 OG.AZ.Thermostat set_0 %&lt;br /&gt;
2013-03-18_22:34:57 OG.AZ.Thermostat ValveDesired: 0 %&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat ValvePosition: 1 %&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat 1 %&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat battery: ok&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat motorErr: ok&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat motor: stop&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat operState: errorTargetNotMet&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat operStateErrCnt: 1&lt;br /&gt;
2013-03-18_22:37:42 OG.AZ.Thermostat set_68 %&lt;br /&gt;
2013-03-18_22:37:42 OG.AZ.Thermostat ValveDesired: 68 %&lt;br /&gt;
2013-03-18_22:37:43 OG.AZ.Thermostat ValvePosition: 1 %&lt;br /&gt;
2013-03-18_22:37:43 OG.AZ.Thermostat 1 %&lt;br /&gt;
2013-03-18_22:40:20 OG.AZ.Thermostat set_68 %&lt;br /&gt;
2013-03-18_22:40:20 OG.AZ.Thermostat ValveDesired: 68 %&lt;br /&gt;
2013-03-18_22:40:22 OG.AZ.Thermostat ValvePosition: 68 %&lt;br /&gt;
2013-03-18_22:40:22 OG.AZ.Thermostat 68 %&lt;br /&gt;
2013-03-18_22:40:22 OG.AZ.Thermostat battery: ok&lt;br /&gt;
2013-03-18_22:40:22 OG.AZ.Thermostat motorErr: ok&lt;br /&gt;
2013-03-18_22:40:22 OG.AZ.Thermostat motor: stop&lt;br /&gt;
2013-03-18_22:40:22 OG.AZ.Thermostat operState: onTarget&lt;br /&gt;
2013-03-18_22:42:31 OG.AZ.Thermostat set_0 %&lt;br /&gt;
2013-03-18_22:42:31 OG.AZ.Thermostat ValveDesired: 0 %&lt;br /&gt;
2013-03-18_22:42:33 OG.AZ.Thermostat ValvePosition: 68 %&lt;br /&gt;
2013-03-18_22:42:33 OG.AZ.Thermostat 68 %&lt;br /&gt;
2013-03-18_22:42:33 OG.AZ.Thermostat battery: ok&lt;br /&gt;
2013-03-18_22:42:33 OG.AZ.Thermostat motorErr: ok&lt;br /&gt;
2013-03-18_22:42:33 OG.AZ.Thermostat motor: closing&lt;br /&gt;
2013-03-18_22:42:33 OG.AZ.Thermostat operState: adjusting&lt;br /&gt;
2013-03-18_22:44:34 OG.AZ.Thermostat set_0 %&lt;br /&gt;
2013-03-18_22:44:34 OG.AZ.Thermostat ValveDesired: 0 %&lt;br /&gt;
2013-03-18_22:44:36 OG.AZ.Thermostat ValvePosition: 0 %&lt;br /&gt;
2013-03-18_22:44:36 OG.AZ.Thermostat 0 %&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Event monitor ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2013-03-18 22:42:33 CUL_HM OG.AZ.Thermostat motor: closing&lt;br /&gt;
2013-03-18 22:42:33 CUL_HM OG.AZ.Thermostat operState: adjusting&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Stromversorgung / Batterien ==&lt;br /&gt;
&lt;br /&gt;
=== Batteriealarme des HM-CC-VD in Verbindung mit HM-CC-TC ===&lt;br /&gt;
* Bei U-Bat. &amp;lt; 2,4 V erscheint im Display des VD und des TC das Batteriesymbol mit battery:low in den Readings und Events.&lt;br /&gt;
* Bei U-Bat. &amp;lt; 2,3 V erscheint im Display des VD zusätzlich F4 mit battery:critical in den Readings und Events.&lt;br /&gt;
Faktisch ist ein Betrieb bis ca. 2,2 Volt möglich (also je Zelle 1,1 Volt) darunter nimmt die Zuverlässigkeit der Funkverbindung stark ab.&lt;br /&gt;
&lt;br /&gt;
=== Akkubetrieb ===&lt;br /&gt;
Wegen der oben genannten Warngrenzen eigenen sich viele Akkus nicht sehr gut, da auch frisch geladenen NiMh-Akkus eine Zellenspannung von nur 1,2 Volt haben. Desshalb wird schnell die battery:low Warngrenze erreicht; mitunter unmittelbar nach dem Einsetzen mit der Kalibierungsfahrt. Mit  &#039;&#039;NiMh-Akkus mit geringer Selbstentladung&#039;&#039; (z.b. Panasonic Eneloop) ist ein Betrieb jedoch sinnvoll möglich, da der Spannungsabfall bei den sehr geringen Entladeströmen im Stellantrieb relativ lange oberhalb 1,3 Volt verläuft.&lt;br /&gt;
&lt;br /&gt;
= Betrieb mit FHEM, ohne (physischen) HM-CC-TC =&lt;br /&gt;
&lt;br /&gt;
Alternativ kann der HM-CC-VD auch über einen virtuellen HM-CC-TC betrieben werden.&lt;br /&gt;
Damit diese Lösung stabil funktioniert, sollte die Kommunikation (nach Nutzererfahrung aus dem Forum) als IO-Device ein HMLAND oder ein HM-MOD-UART (Raspi-Modul) nutzen.&lt;br /&gt;
Ein CUL im RF-Mode &#039;Homematic&#039; scheint das nötige präzise Timing (s.o.) nicht immer zu halten.&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ==&lt;br /&gt;
=== Vorbereitung ===&lt;br /&gt;
- der HM-CC-VD sollte zurückgesetzt sein - ca. 20 s den Button drücken und die Einfahrprozedur am Heizkörperventil abschließen.&lt;br /&gt;
- das Pairing durchführen: am HMLAND oder HM-MOD-UART (oder besser einer VCCU)  &#039;set &amp;lt;HMIO&amp;gt; hmPairForSec nnn&#039; und am HM-CC-VD den Button 5-10 s drücken, es sollte im Display des VD kurz von 20 s rückwärts gezählt werden und dann das Antennensymbol dauerhaft stehen.&lt;br /&gt;
Der HM-CC-VD sollte jetzt in der Liste der FHEM-Devices als HM_xxxxxx sichtbar sein.&lt;br /&gt;
Wichtig: Am neu eingerichteten Device HM-CC-VD  muss noch das Attribut msgRepeat = 0 gesetzt werden, sonst führt ein Zuviel an Kommunikation zwischen HM-CC-VD und IO-Device zum Verlust der Verbindung.&amp;lt;ref&amp;gt;{{Link2Forum|Topic=41588|Message=339484|LinkText=FHEM-Forum-Beitrag}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set HM_xxxxxx deviceRename &amp;lt;HM_CC_VD&amp;gt;&lt;br /&gt;
attr &amp;lt;HM_CC_VD&amp;gt; msgRepeat 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Einrichten virtueller HM-CC-TC ===&lt;br /&gt;
Der zur Kommunikation mit dem Stellantrieb HM-CC-VD nötige Virtuelle Controller wird wie folgt eingerichtet:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define &amp;lt;HM-VIRT-TC&amp;gt; CUL_HM 112233*&lt;br /&gt;
attr &amp;lt;HM-VIRT-TC&amp;gt; expert 2_raw&lt;br /&gt;
attr &amp;lt;HM-VIRT-TC&amp;gt; model virtual_1&lt;br /&gt;
attr &amp;lt;HM-VIRT-TC&amp;gt; msgRepeat 0&lt;br /&gt;
attr &amp;lt;HM-VIRT-TC&amp;gt; subType virtual&lt;br /&gt;
&lt;br /&gt;
set &amp;lt;HM-VIRT-TC&amp;gt; virtual 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* oder eine andere noch nicht vergebene ID&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Weil es sich nicht um einen virtuellen Button, sondern um den Kanal eines virtuellen HM-CC-TC handelt, kann man den Kanal umbenennen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rename &amp;lt;HM-VIRT-TC&amp;gt;_Btn1 &amp;lt;HM-VIRT-TC&amp;gt;_c1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel wird ein virtueller TC einem VD zugeortnet. Wenn man einen TC mit mehreren Kanälen nutzt (z.B. set &amp;lt;HM-VIRT-TC&amp;gt; virtual 2),&lt;br /&gt;
kann man den einzelnen VD nachher nicht kontrollieren, es wird nur der Status des zuletzt angesteuerten Kanals am &amp;lt;HM-VIRT-TC&amp;gt; ausgewertet.&lt;br /&gt;
&lt;br /&gt;
Bei Einsatz einer VCCU kontrollieren, ob das richtige IO-Device genutzt wird (s. VCCU) - falls nicht, per IOgrp-Attribut setzen.&lt;br /&gt;
Ohne VCCU sollte IODev auf das richtige Device zeigen.&lt;br /&gt;
&lt;br /&gt;
Hier z.B. ein HM-MOD-UART &amp;quot;UART-HM&amp;quot; an der VCCU &amp;quot;VIRTCCU1&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr &amp;lt;HM-VIRT-TC&amp;gt; IOgrp VIRTCCU1:UART_HM&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Peering von HM-CC-VD und virtuellem HM-CC-TC ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set &amp;lt;HM-VIRT-TC&amp;gt;c1 peerChan 0 &amp;lt;HM_CC_VD&amp;gt; single set&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach den Button am HM-CC-VD drücken, bis die 20-Sekunden-Anzeige anfängt zu laufen.&lt;br /&gt;
&lt;br /&gt;
mit&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set &amp;lt;HM-VIRT-TC&amp;gt;c1 valvePos 55&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
kann man den VD jetzt testen.&lt;br /&gt;
&lt;br /&gt;
mit&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define heizung_regler PID20 &amp;lt;thermosensor&amp;gt;:temperature &amp;lt;HM-VIRT-TC&amp;gt;c1:valvePos&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lässt sich die Kombination aus HM-CC-VD und virtuellem HM-CC-TC im Regelmodul PID20 als Heizungsregler nutzen.&lt;br /&gt;
&lt;br /&gt;
= Fehlercodes =&lt;br /&gt;
Im Display des Antriebs wird im Normalbetrieb der Öffnungswinkel in % angezeigt, jedoch vor der Montage bzw. Im Fehlerfall folgende Codes:&lt;br /&gt;
&lt;br /&gt;
== Statuscodes ==&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;A1&#039;&#039;&#039; Batterien neu eingelegt, Antrieb fährt Stellstift zurück&lt;br /&gt;
*&#039;&#039;&#039;A2&#039;&#039;&#039; Batterien neu eingelegt, Stellstift ist komplett eingefahren, fertig zur Montage&lt;br /&gt;
*&#039;&#039;&#039;A3&#039;&#039;&#039; Taste wurde nach Montage kurz gedrückt, Stellstift fährt aus und schließt Ventil&lt;br /&gt;
Wenn Vorgang abgeschlossen zeigt der Antrieb 0%, solange bis das Ventil im Betrieb geöffnet werden soll.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlercodes ==&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;F1&#039;&#039;&#039;Ventilantrieb kann Stift nicht bewegen. Ventil zu schwergängig oder blockiert&lt;br /&gt;
*&#039;&#039;&#039;F2&#039;&#039;&#039;Ventilantrieb nicht montiert oder Stellbereich zu gross. Ursache ist fast immer, dass die Taste im Zustand &#039;&#039;&#039;A2&#039;&#039;&#039; gedrückt wurde, obwohl der Antrieb noch nicht montiert war. Batterie kurz entnehmen, warten bis Display erlischt, neu einlegen, Antrieb nach &#039;&#039;&#039;A2&#039;&#039;&#039; zuerst montieren, dann Taste drücken.&lt;br /&gt;
*&#039;&#039;&#039;F3&#039;&#039;&#039;Stellbereich zu klein. Ursache ist oft ein klemmendes Ventil, versuchen Ventil gangbar zu machen.&lt;br /&gt;
*&#039;&#039;&#039;F4+Batterisymbol&#039;&#039;&#039; Batterien sind leer, nicht mehr genug Spannung um Antrieb zu bewegen. Batteriespannung liegt dann meist um die 2 Volt.&lt;br /&gt;
*&#039;&#039;&#039;F5&#039;&#039;&#039;Anlernen gesperrt. Tritt z.b. auf, wenn versucht wird das Ventil mit beiden oben beschrieben MEthoden zu betreiben also peering mit HM-CC-TC und zugleich pairing mit FHEM.&lt;br /&gt;
*&#039;&#039;&#039;Antennensymbol blinkt&#039;&#039;&#039; Keine Funkverbindung. Gerät ist noch nicht gepeert oder gepairt oder das gepeerte oder gepairte Device kann nicht empfangen werden. (Batterie im HM-CC-TC leer oder Funkstörung)&lt;br /&gt;
*&#039;&#039;&#039;Battriesymbol&#039;&#039;&#039;Batterien sind fast leer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= bekannte Probleme =&lt;br /&gt;
&lt;br /&gt;
Bei Firmwareversionen vor 2.0 kann es vorkommen, dass sich der Stellantrieb bei einer bestimmten Stellung &amp;quot;festfährt&amp;quot; (z.B. 4%) und der Raum sich kontinuierlich erhitzt, obwohl eine niedrigere Temperatur am Wandthermostat eingestellt ist. Erst nach einem Reset des Stellantriebs oder manuellen Erhöhung der Temperatur am Wandthermostat/FHEM verrichtet der Stellantrieb wieder wie gewohnt seine Arbeit.&lt;br /&gt;
&lt;br /&gt;
Quelle: [[http://www.elv.de/output/controller.aspx?cid=834&amp;amp;detail=2&amp;amp;detail2=582 1]]&lt;br /&gt;
&lt;br /&gt;
Ein Firmwareupdate kann derzeit nur mittels Einschicken des Stellantriebs erfolgen.&lt;br /&gt;
&lt;br /&gt;
Ist der Stellantrieb mit dem HM-CC-TC gepairt (zu sehen im Menü des HM-CC-TC als VST Nummer X), erscheint aber nicht in FHEM (hier mit HMLAN), dann hilft der Befehl &#039;&#039;set &amp;lt;HMLAN-Name&amp;gt; hmPairForSec 300&#039;&#039; und das Drücken des Anlernknopfes am HM-CC-VD für mind. 5 Sekunden.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
; Quellen:&lt;br /&gt;
* {{Link2Forum|Topic=60296|LinkText=FHEM-Forum-Thema}}&lt;br /&gt;
* {{Link2Forum|Topic=22419|LinkText=FHEM-Forum-Thema}}&lt;br /&gt;
* {{Link2Forum|Topic=30738|LinkText=FHEM-Forum-Thema}}&lt;br /&gt;
* {{Link2Forum|Topic=54911|LinkText=FHEM-Forum-Thema}}&lt;br /&gt;
* {{Link2Forum|Topic=41588|LinkText=FHEM-Forum-Thema}}&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
* Anleitung bei EQ-3: [http://www.eq-3.de/Downloads/eq3/downloads_produktkatalog/homematic/bda/HM-CC-VD_UM_GE_eQ-3_081013.pdf HM-CC-VD Funk-Stellantrieb]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;br /&gt;
[[Kategorie:Heizungsventile]]&lt;/div&gt;</summary>
		<author><name>Soulman</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-CC-VD_Funk-Stellantrieb&amp;diff=36940</id>
		<title>HM-CC-VD Funk-Stellantrieb</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-CC-VD_Funk-Stellantrieb&amp;diff=36940"/>
		<updated>2022-01-04T16:17:26Z</updated>

		<summary type="html">&lt;p&gt;Soulman: Ergänzung Fehlercodes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;HM-CC-VD Funk-Stellantrieb&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung: Dieses Gerät ist abgekündigt (wird nicht mehr hergestellt). Nachfolgeprodukt ist der [[HM-CC-RT-DN]].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Allgemeines =&lt;br /&gt;
&lt;br /&gt;
Stellantrieb für den [[HM-CC-TC Funk-Wandthermostat|HM-CC-TC]]. Es können maximal 4 HM-CC-VD an ein HM-CC-TC angelernt werden.&lt;br /&gt;
&lt;br /&gt;
Aktuelle Firmware: 2.0&lt;br /&gt;
&lt;br /&gt;
Der HM-CC-VD &#039;&#039;&#039;misst nicht selbst&#039;&#039;&#039; die Temperatur. Diese wird von dem [[HM-CC-TC Funk-Wandthermostat]], mit dem der Stellantrieb [[Peering (HomeMatic)|gepeert]] wurde, gemessen.&lt;br /&gt;
&lt;br /&gt;
= Betrieb mit FHEM =&lt;br /&gt;
&lt;br /&gt;
HM-CC-VDs werden mit dem für ihren Betrieb/Raum zuständigen [[HM-CC-TC Funk-Wandthermostat]] [[Peering (HomeMatic)|gepeert]], dieser wird dann mit FHEM (z.b. einer [[Virtueller Controller VCCU |VCCU]] gepairt. Dadurch ist der HM-CC-TC für die Ansteuerung der Ventiltriebe da.&lt;br /&gt;
&lt;br /&gt;
Alternativ können auch Stellantriebe und Tür-/Fensterkontakte sowie der HM-CC-TC mit FHEM (z.b. einem VCCU oder direkt mit einem IO wie dem CUL) gepairen werden, also z.b. &amp;lt;pre&amp;gt;&lt;br /&gt;
set CUL hmPairForSec 300 &lt;br /&gt;
&amp;lt;/pre&amp;gt;und an allen Devices den Anlernknopf drücken innerhalb des Zeitfensters von 300 Sekunden). Dann Stellantriebe und Tür-/Fensterkontakte mit den Channels des HM-CC-TC peeren (siehe [http://fhem.de/commandref.html#CUL_HMpeerChan commandref :peerChan].&lt;br /&gt;
&lt;br /&gt;
Eine etwas detailliertere Diskussion der beiden Optionen findet sich im Artikel zum Nachfolgemodell [[HM-TC-IT-WM-W-EU]]&lt;br /&gt;
&lt;br /&gt;
Ausserdem kann der Antrieb mit einem virtuellen HM-CC-TC betreiben werden, siehe weiter unten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Log-Daten ==&lt;br /&gt;
=== Device-Log ===&lt;br /&gt;
&lt;br /&gt;
Zur Behebung des &amp;quot;1 bzw. 4 % Fehlers&amp;quot; wurde die Raumtemperatur über die Ansteuerung des HM-CC-TC temporär auf 28 °C erhöht. Nachdem das Thermostat (VD) laut Logs das Ventil auf hier 68 % geöffnet hat, wurde die Temperatur wieder auf die gewünschte (desired) Temperatur (am TC) gesetzt. Diese Befehle mussten allerdings einige Male wiederholt werden und es bedurfte einiger Minuten Wartezeit zwischen den Umstellungen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2013-03-18_22:34:57 OG.AZ.Thermostat set_0 %&lt;br /&gt;
2013-03-18_22:34:57 OG.AZ.Thermostat ValveDesired: 0 %&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat ValvePosition: 1 %&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat 1 %&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat battery: ok&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat motorErr: ok&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat motor: stop&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat operState: errorTargetNotMet&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat operStateErrCnt: 1&lt;br /&gt;
2013-03-18_22:37:42 OG.AZ.Thermostat set_68 %&lt;br /&gt;
2013-03-18_22:37:42 OG.AZ.Thermostat ValveDesired: 68 %&lt;br /&gt;
2013-03-18_22:37:43 OG.AZ.Thermostat ValvePosition: 1 %&lt;br /&gt;
2013-03-18_22:37:43 OG.AZ.Thermostat 1 %&lt;br /&gt;
2013-03-18_22:40:20 OG.AZ.Thermostat set_68 %&lt;br /&gt;
2013-03-18_22:40:20 OG.AZ.Thermostat ValveDesired: 68 %&lt;br /&gt;
2013-03-18_22:40:22 OG.AZ.Thermostat ValvePosition: 68 %&lt;br /&gt;
2013-03-18_22:40:22 OG.AZ.Thermostat 68 %&lt;br /&gt;
2013-03-18_22:40:22 OG.AZ.Thermostat battery: ok&lt;br /&gt;
2013-03-18_22:40:22 OG.AZ.Thermostat motorErr: ok&lt;br /&gt;
2013-03-18_22:40:22 OG.AZ.Thermostat motor: stop&lt;br /&gt;
2013-03-18_22:40:22 OG.AZ.Thermostat operState: onTarget&lt;br /&gt;
2013-03-18_22:42:31 OG.AZ.Thermostat set_0 %&lt;br /&gt;
2013-03-18_22:42:31 OG.AZ.Thermostat ValveDesired: 0 %&lt;br /&gt;
2013-03-18_22:42:33 OG.AZ.Thermostat ValvePosition: 68 %&lt;br /&gt;
2013-03-18_22:42:33 OG.AZ.Thermostat 68 %&lt;br /&gt;
2013-03-18_22:42:33 OG.AZ.Thermostat battery: ok&lt;br /&gt;
2013-03-18_22:42:33 OG.AZ.Thermostat motorErr: ok&lt;br /&gt;
2013-03-18_22:42:33 OG.AZ.Thermostat motor: closing&lt;br /&gt;
2013-03-18_22:42:33 OG.AZ.Thermostat operState: adjusting&lt;br /&gt;
2013-03-18_22:44:34 OG.AZ.Thermostat set_0 %&lt;br /&gt;
2013-03-18_22:44:34 OG.AZ.Thermostat ValveDesired: 0 %&lt;br /&gt;
2013-03-18_22:44:36 OG.AZ.Thermostat ValvePosition: 0 %&lt;br /&gt;
2013-03-18_22:44:36 OG.AZ.Thermostat 0 %&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Event monitor ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2013-03-18 22:42:33 CUL_HM OG.AZ.Thermostat motor: closing&lt;br /&gt;
2013-03-18 22:42:33 CUL_HM OG.AZ.Thermostat operState: adjusting&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Stromversorgung / Batterien ==&lt;br /&gt;
&lt;br /&gt;
=== Batteriealarme des HM-CC-VD in Verbindung mit HM-CC-TC ===&lt;br /&gt;
* Bei U-Bat. &amp;lt; 2,4 V erscheint im Display des VD und des TC das Batteriesymbol mit battery:low in den Readings und Events.&lt;br /&gt;
* Bei U-Bat. &amp;lt; 2,3 V erscheint im Display des VD zusätzlich F4 mit battery:critical in den Readings und Events.&lt;br /&gt;
Faktisch ist ein Betrieb bis ca. 2,2 Volt möglich (also je Zelle 1,1 Volt) darunter nimmt die Zuverlässigkeit der Funkverbindung stark ab.&lt;br /&gt;
&lt;br /&gt;
=== Akkubetrieb ===&lt;br /&gt;
Wegen der oben genannten Warngrenzen eigenen sich viele Akkus nicht sehr gut, da auch frisch geladenen NiMh-Akkus eine Zellenspannung von nur 1,2 Volt haben. Desshalb wird schnell die battery:low Warngrenze erreicht; mitunter unmittelbar nach dem Einsetzen mit der Kalibierungsfahrt. Mit  &#039;&#039;NiMh-Akkus mit geringer Selbstentladung&#039;&#039; (z.b. Panasonic Eneloop) ist ein Betrieb jedoch sinnvoll möglich, da der Spannungsabfall bei den sehr geringen Entladeströmen im Stellantrieb relativ lange oberhalb 1,3 Volt verläuft.&lt;br /&gt;
&lt;br /&gt;
= Betrieb mit FHEM, ohne (physischen) HM-CC-TC =&lt;br /&gt;
&lt;br /&gt;
Alternativ kann der HM-CC-VD auch über einen virtuellen HM-CC-TC betrieben werden.&lt;br /&gt;
Damit diese Lösung stabil funktioniert, sollte die Kommunikation (nach Nutzererfahrung aus dem Forum) als IO-Device ein HMLAND oder ein HM-MOD-UART (Raspi-Modul) nutzen.&lt;br /&gt;
Ein CUL im RF-Mode &#039;Homematic&#039; scheint das nötige präzise Timing (s.o.) nicht immer zu halten.&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ==&lt;br /&gt;
=== Vorbereitung ===&lt;br /&gt;
- der HM-CC-VD sollte zurückgesetzt sein - ca. 20 s den Button drücken und die Einfahrprozedur am Heizkörperventil abschließen.&lt;br /&gt;
- das Pairing durchführen: am HMLAND oder HM-MOD-UART (oder besser einer VCCU)  &#039;set &amp;lt;HMIO&amp;gt; hmPairForSec nnn&#039; und am HM-CC-VD den Button 5-10 s drücken, es sollte im Display des VD kurz von 20 s rückwärts gezählt werden und dann das Antennensymbol dauerhaft stehen.&lt;br /&gt;
Der HM-CC-VD sollte jetzt in der Liste der FHEM-Devices als HM_xxxxxx sichtbar sein.&lt;br /&gt;
Wichtig: Am neu eingerichteten Device HM-CC-VD  muss noch das Attribut msgRepeat = 0 gesetzt werden, sonst führt ein Zuviel an Kommunikation zwischen HM-CC-VD und IO-Device zum Verlust der Verbindung.&amp;lt;ref&amp;gt;{{Link2Forum|Topic=41588|Message=339484|LinkText=FHEM-Forum-Beitrag}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set HM_xxxxxx deviceRename &amp;lt;HM_CC_VD&amp;gt;&lt;br /&gt;
attr &amp;lt;HM_CC_VD&amp;gt; msgRepeat 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Einrichten virtueller HM-CC-TC ===&lt;br /&gt;
Der zur Kommunikation mit dem Stellantrieb HM-CC-VD nötige Virtuelle Controller wird wie folgt eingerichtet:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define &amp;lt;HM-VIRT-TC&amp;gt; CUL_HM 112233*&lt;br /&gt;
attr &amp;lt;HM-VIRT-TC&amp;gt; expert 2_raw&lt;br /&gt;
attr &amp;lt;HM-VIRT-TC&amp;gt; model virtual_1&lt;br /&gt;
attr &amp;lt;HM-VIRT-TC&amp;gt; msgRepeat 0&lt;br /&gt;
attr &amp;lt;HM-VIRT-TC&amp;gt; subType virtual&lt;br /&gt;
&lt;br /&gt;
set &amp;lt;HM-VIRT-TC&amp;gt; virtual 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* oder eine andere noch nicht vergebene ID&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Weil es sich nicht um einen virtuellen Button, sondern um den Kanal eines virtuellen HM-CC-TC handelt, kann man den Kanal umbenennen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rename &amp;lt;HM-VIRT-TC&amp;gt;_Btn1 &amp;lt;HM-VIRT-TC&amp;gt;_c1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel wird ein virtueller TC einem VD zugeortnet. Wenn man einen TC mit mehreren Kanälen nutzt (z.B. set &amp;lt;HM-VIRT-TC&amp;gt; virtual 2),&lt;br /&gt;
kann man den einzelnen VD nachher nicht kontrollieren, es wird nur der Status des zuletzt angesteuerten Kanals am &amp;lt;HM-VIRT-TC&amp;gt; ausgewertet.&lt;br /&gt;
&lt;br /&gt;
Bei Einsatz einer VCCU kontrollieren, ob das richtige IO-Device genutzt wird (s. VCCU) - falls nicht, per IOgrp-Attribut setzen.&lt;br /&gt;
Ohne VCCU sollte IODev auf das richtige Device zeigen.&lt;br /&gt;
&lt;br /&gt;
Hier z.B. ein HM-MOD-UART &amp;quot;UART-HM&amp;quot; an der VCCU &amp;quot;VIRTCCU1&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr &amp;lt;HM-VIRT-TC&amp;gt; IOgrp VIRTCCU1:UART_HM&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Peering von HM-CC-VD und virtuellem HM-CC-TC ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set &amp;lt;HM-VIRT-TC&amp;gt;c1 peerChan 0 &amp;lt;HM_CC_VD&amp;gt; single set&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach den Button am HM-CC-VD drücken, bis die 20-Sekunden-Anzeige anfängt zu laufen.&lt;br /&gt;
&lt;br /&gt;
mit&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set &amp;lt;HM-VIRT-TC&amp;gt;c1 valvePos 55&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
kann man den VD jetzt testen.&lt;br /&gt;
&lt;br /&gt;
mit&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define heizung_regler PID20 &amp;lt;thermosensor&amp;gt;:temperature &amp;lt;HM-VIRT-TC&amp;gt;c1:valvePos&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lässt sich die Kombination aus HM-CC-VD und virtuellem HM-CC-TC im Regelmodul PID20 als Heizungsregler nutzen.&lt;br /&gt;
&lt;br /&gt;
= Fehlercodes =&lt;br /&gt;
Im Display des Antriebs wird im Normalbetrieb der Öffnungswinkel in % angezeigt, jedoch vor der Montage bzw. Im Fehlerfall folgende Codes:&lt;br /&gt;
&lt;br /&gt;
== Statuscodes ==&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;A1&#039;&#039;&#039; Batterien neu eingelegt, Antrieb fährt Stellstift zurück&lt;br /&gt;
*&#039;&#039;&#039;A2&#039;&#039;&#039; Batterien neu eingelegt, Stellstift ist komplett eingefahren, fertig zur Montage&lt;br /&gt;
*&#039;&#039;&#039;A3&#039;&#039;&#039; Taste wurde nach Montage kurz gedrückt, Stellstift fährt aus und schließt Ventil&lt;br /&gt;
Wenn Vorgang abgeschlossen zeigt der Antrieb 0%, solange bis das Ventil im Betrieb geöffnet werden soll.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fehlercodes ==&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;F1&#039;&#039;&#039;Ventilantrieb kann Stift nicht bewegen. Ventil zu schwergängig oder blockiert&lt;br /&gt;
*&#039;&#039;&#039;F2&#039;&#039;&#039;Ventilantrieb nicht montiert oder Stellbereich zu gross. Ursache ist fast immer, dass die Taste im Zustand &#039;&#039;&#039;A2&#039;&#039;&#039; gedrückt wurde, obwohl der Antrieb noch nicht montiert war. Batterie kurz entnehmen, warten bis Display erlischt, neu einlegen, Antrieb nach &#039;&#039;&#039;A2&#039;&#039;&#039; zuerst montieren, dann Taste drücken.&lt;br /&gt;
*&#039;&#039;&#039;F3&#039;&#039;&#039;Stellbereich zu klein. Ursache ist oft ein klemmendes Ventil, versuchen Ventil gangbar zu machen.&lt;br /&gt;
*&#039;&#039;&#039;F4+Batterisymbol&#039;&#039;&#039; Batterien sind leer, nicht mehr genug Spannung um Antrieb zu bewegen. Batteriespannung liegt dann meist um die 2 Volt.&lt;br /&gt;
*&#039;&#039;&#039;F5&#039;&#039;&#039;Anlernen gesperrt. Tritt z.b. auf, wenn versucht wird das Ventil mit beiden oben beschrieben MEthoden zu betreiben also peering mit HM-CC-TC und zugleich pairing mit FHEM.&lt;br /&gt;
*&#039;&#039;&#039;Antennensymbol blinkt&#039;&#039;&#039; Keine Funkverbindung. Gerät ist noch nicht gepeert oder gepairt oder das gepeerte oder gepairte Device kann nicht empfangen werden. (Batterie im HM-CC-TC leer oder Funkstörung)&lt;br /&gt;
*&#039;&#039;&#039;Battriesymbol&#039;&#039;&#039;Batterien sind fast leer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= bekannte Probleme =&lt;br /&gt;
&lt;br /&gt;
Bei Firmwareversionen vor 2.0 kann es vorkommen, dass sich der Stellantrieb bei einer bestimmten Stellung &amp;quot;festfährt&amp;quot; (z.B. 4%) und der Raum sich kontinuierlich erhitzt, obwohl eine niedrigere Temperatur am Wandthermostat eingestellt ist. Erst nach einem Reset des Stellantriebs oder manuellen Erhöhung der Temperatur am Wandthermostat/FHEM verrichtet der Stellantrieb wieder wie gewohnt seine Arbeit.&lt;br /&gt;
&lt;br /&gt;
Quelle: [[http://www.elv.de/output/controller.aspx?cid=834&amp;amp;detail=2&amp;amp;detail2=582 1]]&lt;br /&gt;
&lt;br /&gt;
Ein Firmwareupdate kann derzeit nur mittels Einschicken des Stellantriebs erfolgen.&lt;br /&gt;
&lt;br /&gt;
Ist der Stellantrieb mit dem HM-CC-TC gepairt (zu sehen im Menü des HM-CC-TC als VST Nummer X), erscheint aber nicht in FHEM (hier mit HMLAN), dann hilft der Befehl &#039;&#039;set &amp;lt;HMLAN-Name&amp;gt; hmPairForSec 300&#039;&#039; und das Drücken des Anlernknopfes am HM-CC-VD für mind. 5 Sekunden.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
; Quellen:&lt;br /&gt;
* {{Link2Forum|Topic=60296|LinkText=FHEM-Forum-Thema}}&lt;br /&gt;
* {{Link2Forum|Topic=22419|LinkText=FHEM-Forum-Thema}}&lt;br /&gt;
* {{Link2Forum|Topic=30738|LinkText=FHEM-Forum-Thema}}&lt;br /&gt;
* {{Link2Forum|Topic=54911|LinkText=FHEM-Forum-Thema}}&lt;br /&gt;
* {{Link2Forum|Topic=41588|LinkText=FHEM-Forum-Thema}}&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
* Anleitung bei EQ-3: [http://www.eq-3.de/Downloads/eq3/downloads_produktkatalog/homematic/bda/HM-CC-VD_UM_GE_eQ-3_081013.pdf HM-CC-VD Funk-Stellantrieb]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;br /&gt;
[[Kategorie:Heizungsventile]]&lt;/div&gt;</summary>
		<author><name>Soulman</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HM-CC-VD_Funk-Stellantrieb&amp;diff=36939</id>
		<title>HM-CC-VD Funk-Stellantrieb</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HM-CC-VD_Funk-Stellantrieb&amp;diff=36939"/>
		<updated>2022-01-04T15:38:42Z</updated>

		<summary type="html">&lt;p&gt;Soulman: /* Betrieb mit FHEM */ Ergänzung&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;HM-CC-VD Funk-Stellantrieb&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung: Dieses Gerät ist abgekündigt (wird nicht mehr hergestellt). Nachfolgeprodukt ist der [[HM-CC-RT-DN]].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Allgemeines =&lt;br /&gt;
&lt;br /&gt;
Stellantrieb für den [[HM-CC-TC Funk-Wandthermostat|HM-CC-TC]]. Es können maximal 4 HM-CC-VD an ein HM-CC-TC angelernt werden.&lt;br /&gt;
&lt;br /&gt;
Aktuelle Firmware: 2.0&lt;br /&gt;
&lt;br /&gt;
Der HM-CC-VD &#039;&#039;&#039;misst nicht selbst&#039;&#039;&#039; die Temperatur. Diese wird von dem [[HM-CC-TC Funk-Wandthermostat]], mit dem der Stellantrieb [[Peering (HomeMatic)|gepeert]] wurde, gemessen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Betrieb mit FHEM =&lt;br /&gt;
&lt;br /&gt;
HM-CC-VDs werden mit dem für ihren Betrieb/Raum zuständigen HM-CC-TC [[Peering (HomeMatic)|gepeert]], dieser wird dann mit FHEM (z.b. einer [[VCCu]] gepairt. Dadurch ist der TC für die Ansteuerung der Ventiltriebe da.&lt;br /&gt;
Alternativ können auch Stellantriebe und Tür-/Fensterkontakte sowie den HM-CC-TC mit FHEM (z.b. einer VCCU) pairen (also set CUL hmPairForSec 300 und an allen Devices den Anlernknopf drücken innerhalb des Zeitfensters von 300 Sekunden).&lt;br /&gt;
Die Stellantriebe und Tür-/Fensterkontakte mit den Channels (siehe unten) peeren (siehe [http://fhem.de/commandref.html#CUL_HMpeerChan commandref :peerChan]).&lt;br /&gt;
Eine etwas detailliertere Diskussion der beiden Optionen findet sich im Artikel zum [[HM-TC-IT-WM-W-EU]]&lt;br /&gt;
&lt;br /&gt;
== Log-Daten ==&lt;br /&gt;
=== Device-Log ===&lt;br /&gt;
&lt;br /&gt;
Zur Behebung des &amp;quot;1 bzw. 4 % Fehlers&amp;quot; wurde die Raumtemperatur über die Ansteuerung des HM-CC-TC temporär auf 28 °C erhöht. Nachdem das Thermostat (VD) laut Logs das Ventil auf hier 68 % geöffnet hat, wurde die Temperatur wieder auf die gewünschte (desired) Temperatur (am TC) gesetzt. Diese Befehle mussten allerdings einige Male wiederholt werden und es bedurfte einiger Minuten Wartezeit zwischen den Umstellungen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2013-03-18_22:34:57 OG.AZ.Thermostat set_0 %&lt;br /&gt;
2013-03-18_22:34:57 OG.AZ.Thermostat ValveDesired: 0 %&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat ValvePosition: 1 %&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat 1 %&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat battery: ok&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat motorErr: ok&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat motor: stop&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat operState: errorTargetNotMet&lt;br /&gt;
2013-03-18_22:34:58 OG.AZ.Thermostat operStateErrCnt: 1&lt;br /&gt;
2013-03-18_22:37:42 OG.AZ.Thermostat set_68 %&lt;br /&gt;
2013-03-18_22:37:42 OG.AZ.Thermostat ValveDesired: 68 %&lt;br /&gt;
2013-03-18_22:37:43 OG.AZ.Thermostat ValvePosition: 1 %&lt;br /&gt;
2013-03-18_22:37:43 OG.AZ.Thermostat 1 %&lt;br /&gt;
2013-03-18_22:40:20 OG.AZ.Thermostat set_68 %&lt;br /&gt;
2013-03-18_22:40:20 OG.AZ.Thermostat ValveDesired: 68 %&lt;br /&gt;
2013-03-18_22:40:22 OG.AZ.Thermostat ValvePosition: 68 %&lt;br /&gt;
2013-03-18_22:40:22 OG.AZ.Thermostat 68 %&lt;br /&gt;
2013-03-18_22:40:22 OG.AZ.Thermostat battery: ok&lt;br /&gt;
2013-03-18_22:40:22 OG.AZ.Thermostat motorErr: ok&lt;br /&gt;
2013-03-18_22:40:22 OG.AZ.Thermostat motor: stop&lt;br /&gt;
2013-03-18_22:40:22 OG.AZ.Thermostat operState: onTarget&lt;br /&gt;
2013-03-18_22:42:31 OG.AZ.Thermostat set_0 %&lt;br /&gt;
2013-03-18_22:42:31 OG.AZ.Thermostat ValveDesired: 0 %&lt;br /&gt;
2013-03-18_22:42:33 OG.AZ.Thermostat ValvePosition: 68 %&lt;br /&gt;
2013-03-18_22:42:33 OG.AZ.Thermostat 68 %&lt;br /&gt;
2013-03-18_22:42:33 OG.AZ.Thermostat battery: ok&lt;br /&gt;
2013-03-18_22:42:33 OG.AZ.Thermostat motorErr: ok&lt;br /&gt;
2013-03-18_22:42:33 OG.AZ.Thermostat motor: closing&lt;br /&gt;
2013-03-18_22:42:33 OG.AZ.Thermostat operState: adjusting&lt;br /&gt;
2013-03-18_22:44:34 OG.AZ.Thermostat set_0 %&lt;br /&gt;
2013-03-18_22:44:34 OG.AZ.Thermostat ValveDesired: 0 %&lt;br /&gt;
2013-03-18_22:44:36 OG.AZ.Thermostat ValvePosition: 0 %&lt;br /&gt;
2013-03-18_22:44:36 OG.AZ.Thermostat 0 %&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Event monitor ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2013-03-18 22:42:33 CUL_HM OG.AZ.Thermostat motor: closing&lt;br /&gt;
2013-03-18 22:42:33 CUL_HM OG.AZ.Thermostat operState: adjusting&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Stromversorgung / Batterien ==&lt;br /&gt;
&lt;br /&gt;
=== Batteriealarme des HM-CC-VD in Verbindung mit HM-CC-TC ===&lt;br /&gt;
* Bei U-Bat. &amp;lt; 2,4 V erscheint im Display des VD und des TC das Batteriesymbol mit battery:low in den Readings und Events.&lt;br /&gt;
* Bei U-Bat. &amp;lt; 2,3 V erscheint im Display des VD zusätzlich F4 mit battery:critical in den Readings und Events.&lt;br /&gt;
Faktisch ist ein Betrieb bis ca. 2,2 Volt möglich (also je Zelle 1,1 Volt) darunter nimmt die Zuverlässigkeit der Funkverbindung stark ab.&lt;br /&gt;
&lt;br /&gt;
=== Akkubetrieb ===&lt;br /&gt;
Wegen der oben genannten Warngrenzen eigenen sich viele Akkus nicht sehr gut, da auch frisch geladenen NiMh-Akkus eine Zellenspannung von nur 1,2 Volt haben. Desshalb wird schnell die battery:low Warngrenze erreicht; mitunter unmittelbar nach dem Einsetzen mit der Kalibierungsfahrt. Mit  &#039;&#039;NiMh-Akkus mit geringer Selbstentladung&#039;&#039; (z.b. Panasonic Eneloop) ist ein Betrieb jedoch sinnvoll möglich, da der Spannungsabfall bei den sehr geringen Entladeströmen im Stellantrieb relativ lange oberhalb 1,3 Volt verläuft.&lt;br /&gt;
&lt;br /&gt;
= Betrieb mit FHEM, ohne (physischen) HM-CC-TC =&lt;br /&gt;
&lt;br /&gt;
Alternativ kann der HM-CC-VD auch über einen virtuellen HM-CC-TC betrieben werden.&lt;br /&gt;
Damit diese Lösung stabil funktioniert, sollte die Kommunikation (nach Nutzererfahrung aus dem Forum) als IO-Device ein HMLAND oder ein HM-MOD-UART (Raspi-Modul) nutzen.&lt;br /&gt;
Ein CUL im RF-Mode &#039;Homematic&#039; scheint das nötige präzise Timing (s.o.) nicht immer zu halten.&lt;br /&gt;
&lt;br /&gt;
== Einrichtung ==&lt;br /&gt;
=== Vorbereitung ===&lt;br /&gt;
- der HM-CC-VD sollte zurückgesetzt sein - ca. 20 s den Button drücken und die Einfahrprozedur am Heizkörperventil abschließen.&lt;br /&gt;
- das Pairing durchführen: am HMLAND oder HM-MOD-UART (oder besser einer VCCU)  &#039;set &amp;lt;HMIO&amp;gt; hmPairForSec nnn&#039; und am HM-CC-VD den Button 5-10 s drücken, es sollte im Display des VD kurz von 20 s rückwärts gezählt werden und dann das Antennensymbol dauerhaft stehen.&lt;br /&gt;
Der HM-CC-VD sollte jetzt in der Liste der FHEM-Devices als HM_xxxxxx sichtbar sein.&lt;br /&gt;
Wichtig: Am neu eingerichteten Device HM-CC-VD  muss noch das Attribut msgRepeat = 0 gesetzt werden, sonst führt ein Zuviel an Kommunikation zwischen HM-CC-VD und IO-Device zum Verlust der Verbindung.&amp;lt;ref&amp;gt;{{Link2Forum|Topic=41588|Message=339484|LinkText=FHEM-Forum-Beitrag}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set HM_xxxxxx deviceRename &amp;lt;HM_CC_VD&amp;gt;&lt;br /&gt;
attr &amp;lt;HM_CC_VD&amp;gt; msgRepeat 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Einrichten virtueller HM-CC-TC ===&lt;br /&gt;
Der zur Kommunikation mit dem Stellantrieb HM-CC-VD nötige Virtuelle Controller wird wie folgt eingerichtet:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define &amp;lt;HM-VIRT-TC&amp;gt; CUL_HM 112233*&lt;br /&gt;
attr &amp;lt;HM-VIRT-TC&amp;gt; expert 2_raw&lt;br /&gt;
attr &amp;lt;HM-VIRT-TC&amp;gt; model virtual_1&lt;br /&gt;
attr &amp;lt;HM-VIRT-TC&amp;gt; msgRepeat 0&lt;br /&gt;
attr &amp;lt;HM-VIRT-TC&amp;gt; subType virtual&lt;br /&gt;
&lt;br /&gt;
set &amp;lt;HM-VIRT-TC&amp;gt; virtual 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* oder eine andere noch nicht vergebene ID&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Weil es sich nicht um einen virtuellen Button, sondern um den Kanal eines virtuellen HM-CC-TC handelt, kann man den Kanal umbenennen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rename &amp;lt;HM-VIRT-TC&amp;gt;_Btn1 &amp;lt;HM-VIRT-TC&amp;gt;_c1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel wird ein virtueller TC einem VD zugeortnet. Wenn man einen TC mit mehreren Kanälen nutzt (z.B. set &amp;lt;HM-VIRT-TC&amp;gt; virtual 2),&lt;br /&gt;
kann man den einzelnen VD nachher nicht kontrollieren, es wird nur der Status des zuletzt angesteuerten Kanals am &amp;lt;HM-VIRT-TC&amp;gt; ausgewertet.&lt;br /&gt;
&lt;br /&gt;
Bei Einsatz einer VCCU kontrollieren, ob das richtige IO-Device genutzt wird (s. VCCU) - falls nicht, per IOgrp-Attribut setzen.&lt;br /&gt;
Ohne VCCU sollte IODev auf das richtige Device zeigen.&lt;br /&gt;
&lt;br /&gt;
Hier z.B. ein HM-MOD-UART &amp;quot;UART-HM&amp;quot; an der VCCU &amp;quot;VIRTCCU1&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
attr &amp;lt;HM-VIRT-TC&amp;gt; IOgrp VIRTCCU1:UART_HM&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Peering von HM-CC-VD und virtuellem HM-CC-TC ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set &amp;lt;HM-VIRT-TC&amp;gt;c1 peerChan 0 &amp;lt;HM_CC_VD&amp;gt; single set&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach den Button am HM-CC-VD drücken, bis die 20-Sekunden-Anzeige anfängt zu laufen.&lt;br /&gt;
&lt;br /&gt;
mit&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set &amp;lt;HM-VIRT-TC&amp;gt;c1 valvePos 55&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
kann man den VD jetzt testen.&lt;br /&gt;
&lt;br /&gt;
mit&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define heizung_regler PID20 &amp;lt;thermosensor&amp;gt;:temperature &amp;lt;HM-VIRT-TC&amp;gt;c1:valvePos&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lässt sich die Kombination aus HM-CC-VD und virtuellem HM-CC-TC im Regelmodul PID20 als Heizungsregler nutzen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= bekannte Probleme =&lt;br /&gt;
&lt;br /&gt;
Bei Firmwareversionen vor 2.0 kann es vorkommen, dass sich der Stellantrieb bei einer bestimmten Stellung &amp;quot;festfährt&amp;quot; (z.B. 4%) und der Raum sich kontinuierlich erhitzt, obwohl eine niedrigere Temperatur am Wandthermostat eingestellt ist. Erst nach einem Reset des Stellantriebs oder manuellen Erhöhung der Temperatur am Wandthermostat/FHEM verrichtet der Stellantrieb wieder wie gewohnt seine Arbeit.&lt;br /&gt;
&lt;br /&gt;
Quelle: [[http://www.elv.de/output/controller.aspx?cid=834&amp;amp;detail=2&amp;amp;detail2=582 1]]&lt;br /&gt;
&lt;br /&gt;
Ein Firmwareupdate kann derzeit nur mittels Einschicken des Stellantriebs erfolgen.&lt;br /&gt;
&lt;br /&gt;
Ist der Stellantrieb mit dem HM-CC-TC gepairt (zu sehen im Menü des HM-CC-TC als VST Nummer X), erscheint aber nicht in FHEM (hier mit HMLAN), dann hilft der Befehl &#039;&#039;set &amp;lt;HMLAN-Name&amp;gt; hmPairForSec 300&#039;&#039; und das Drücken des Anlernknopfes am HM-CC-VD für mind. 5 Sekunden.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
; Quellen:&lt;br /&gt;
* {{Link2Forum|Topic=60296|LinkText=FHEM-Forum-Thema}}&lt;br /&gt;
* {{Link2Forum|Topic=22419|LinkText=FHEM-Forum-Thema}}&lt;br /&gt;
* {{Link2Forum|Topic=30738|LinkText=FHEM-Forum-Thema}}&lt;br /&gt;
* {{Link2Forum|Topic=54911|LinkText=FHEM-Forum-Thema}}&lt;br /&gt;
* {{Link2Forum|Topic=41588|LinkText=FHEM-Forum-Thema}}&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
* Anleitung bei EQ-3: [http://www.eq-3.de/Downloads/eq3/downloads_produktkatalog/homematic/bda/HM-CC-VD_UM_GE_eQ-3_081013.pdf HM-CC-VD Funk-Stellantrieb]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;br /&gt;
[[Kategorie:Heizungsventile]]&lt;/div&gt;</summary>
		<author><name>Soulman</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=RSL_2-Draht_Einbauschalter&amp;diff=36526</id>
		<title>RSL 2-Draht Einbauschalter</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=RSL_2-Draht_Einbauschalter&amp;diff=36526"/>
		<updated>2021-12-06T14:29:37Z</updated>

		<summary type="html">&lt;p&gt;Soulman: /* Bekannte Probleme */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Conrad Funk-Einbauschalter 2-Draht RSL (Intertechno kompatibel), zum Einbau in Montagedosen / Unterputzdosen auch ohne Neutralleiter und unter Verwendung des normalen Schalters. (Beschreibung gilt grösstenteils auch für das sehr ähnliche Intertechno ITL-230 Funk Schaltermodul)&lt;br /&gt;
== Eigenschaften ==&lt;br /&gt;
Der wesentliche Vorteil des Conrad Funk-Einbauschalter 2-Draht ist, dass er lediglich den Aussenleiter (&amp;quot;Phase&amp;quot;) benötigt, um betrieben zu werden. In vielen Installationen befindet sich in der Unterputzwanddose für den Lichtschalter kein Neutrallleiter (&amp;quot;Nullleiter&amp;quot;), sodass die üblichen FS20 oder HomeMatic Unterputzschalter nicht verwendet werden können. In der klassischen Elektroinstallation wird in der Wandose nur der Aussenleiter geschaltet und der Rückleiter auf anderem Wege zur Lichtfassung geführt. Der Conrad Funk-Einbauschalter 2-Draht benötigt tatsächlich nur den ankommenden und abgehenden  (geschalteten) Aussenleiter. Er bezieht seine Stromversorgung vermutlich aus den Potentialunterschieden der beiden Aussenleiterstränge auch im ausgeschalteten Zustand, hierbei wird wahrscheinlich das Neutralleiterpotential durch den zu schaltenden Verbraucher genutzt.&lt;br /&gt;
&lt;br /&gt;
Der RSL Schalter bezieht seinen Betriebsstrom also vom Aussenleiter in der Dose vor dem Schalter und dem geringen Strom, der &amp;quot;rückwärts&amp;quot; durch eine Ohmsche Last (z.b. klassische Glühbirne oder Halogenlampe) geführt werden kann, den im ausgeschaltet zustand ist die Glühbirne technisch nur ein Widerstand in der Neutralleitung.&lt;br /&gt;
&lt;br /&gt;
Vermutlich aus diesem Grunde kann der Schalter nicht verwendet werden, wenn der zu schaltende Verbraucher eine Leuchtstoffröhre, oder - je nach Typ und Vorschaltgerät - Energiespar- oder LED-Lampe ist, da diese im Stromlosenzustand zu hochohmig sind. Als Resultat bekommt der RSL nicht genug Betriebsspannung. Da der RSL Schalter im stromlosen Zustand durchlässig ist (also EINschaltet), können diese Leuchtmittel aus nicht ausgeschaltet werden: Beim Abschalten verliert der RSL Schalter seine Versorgungsspannung, als Resultat wird wieder eingeschaltet, der RSL bekommt wieder Versorgungsspannung und versucht jetzt wieder auszuschalten etc. Also Resultat gehen LEDs am RSL Schalter mit einer Frequenz von ca 10 hz an und aus, wenn der Befehl zum abschalten kommt.&lt;br /&gt;
&lt;br /&gt;
Der Conrad Funk-Einbauschalter 2-Draht benötigt keinen Taster zur Vor-Ort-Betätigung, sondern die zwei herausgeführten Schaltdrähte können mittels des vorher verbauten Schalters aus einem normalen Schalterprogramm betrieben werden. Der Schalter wird hierbei wie ein Toggle verwendet. D.h., egal welche Stellung der Schalter hat, der Conrad Funk-Einbauschalter 2-Draht kann vollständig per Funk geschaltet werden, der lokale mechanische Schalter ändert bei jeder Betätigung den Schaltzustand.&lt;br /&gt;
&lt;br /&gt;
Vorteile des Conrad Funk-Einbauschalter 2-Draht gegenüber FS20 und HM Unterputzschaltern wie [[FS20 SU Unterputz-Funk-Schalter]]:&lt;br /&gt;
&lt;br /&gt;
* benötigt nur Aussenleiter zur Stromversorgung&lt;br /&gt;
* dünner als FS20 Unterputzschalter, daher leichter auch hinter dem normalen Lichtschalter einbaubar&lt;br /&gt;
* benötigt keinen Taster, sondern kann mit (vorhandenem) Schalter betrieben werden&lt;br /&gt;
* RSL Funk, also kompatibel mit Intertechno 433 Mhz&lt;br /&gt;
&lt;br /&gt;
Nachteile:&lt;br /&gt;
* benötigt Grundlast&lt;br /&gt;
* Schaltleistung gering (sieh weiter unten)&lt;br /&gt;
&lt;br /&gt;
== Hinweise zum Betrieb mit FHEM ==&lt;br /&gt;
Der Conrad Funk-Einbauschalter 2-Draht hat keine Kodierschalter, sondern muss angelernt werden. Da dazu der gewünschte Intertechnokanal drei Sekunden lang senden muss, ist ein Anlernen mit FHEM nicht möglich, da FHEM ununterbrochenes Senden nicht beherrscht. Der Schalter kann aber leicht mit einer gängigen Intertechno Fernbedienung wie z.b. einer YCT-100 angelernt werden. (Es muss eine IT Fernbedienung sein, bei der man die Adresse selber einstellen kann, das ist bei der YCT-100 der Fall. Nicht geeignet sind die Fernbedienungen, deren Code fest ist, wie z.b. die aus den IT 1500 Sets).&lt;br /&gt;
Dann den [[Intertechno_Code_Berechnung#originales_Intertechno_System|Code ermitteln]] und in Fhem eintragen.&lt;br /&gt;
&lt;br /&gt;
Einmal angelernt ist eine Schaltung per FHEM kein Problem.&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
Die Schaltleistung des Conrad Funk-Einbauschalter ist mit 300 Watt ohmscher und 100 Watt induktiver Last deutlich geringer als die anderer Produkte, für Licht aber völlig ausreichend. Wegen der nur 100 Watt induktiver Last können aber keine Halogeninstallationen mit &amp;quot;echten&amp;quot; Trafos geschaltet werden.&lt;br /&gt;
&lt;br /&gt;
Nicht geeignet, wenn im zu schaltetenden Stromkreis nur Leuchtstoffröhren zu schalten sind. Offiziell geht er auch nicht mit LED oder Leuchtstoff-Energiesparlampen, praktisch können oft aber auch solche Lampen geschaltet werden, wenngleich mit gelegentlich ca 0,5 Sekunden Verzögerung und u.U leichtem Flackern. LED Strips mit den üblichen Netzteilen/Steckernetzteilen gehen nicht.&lt;br /&gt;
&lt;br /&gt;
Vermutlich kann eine Funktion in diesen Fällen aber durch ein parallel zum Verbraucher geschaltetes &amp;quot;Grundlastmodul&amp;quot; wie dem ELTAKO Grundlastelement GLE/PTC(letztlich nur ein geeignet dimensionierter PTC-Widerstand) erreicht werden.&lt;br /&gt;
&lt;br /&gt;
Falls im zu schaltenden Stromkreis mehrere Lampen parallel verdrahtet sind (übliche Schaltung), reicht es, wenn eine davon zu den unterstützten Typen gehört, die Restlichen können dann auch Leuchtstoffröhren etc. sein. So ist es z.b. möglich eine Reihe von LED Spots die sich nicht schalten lassen, doch schaltbar zu machen, indem man &#039;&#039;&#039;einen&#039;&#039;&#039; LED-Spot gegen einen Halogen-Spot austauscht.&lt;br /&gt;
&lt;br /&gt;
Bei schlechter Funklage hilft ggf. das Drehen des Schalters in der Wanddose um 90 Grad.&lt;br /&gt;
&lt;br /&gt;
Bei Tasterschaltungen wird der tatsächliche State nie in FHEM erfasst, da&lt;br /&gt;
a) der Schalter immer wieder auf OFF gesetzt wird&lt;br /&gt;
b) in der Regel mehrere Taster im Flur vorhanden sind, deren Betätigung FHEM nicht mitbekommt. Ebenso wir eine lokale Bedienung am lokalen Schalter nicht erfasst.&lt;br /&gt;
&lt;br /&gt;
== Sonstiges==&lt;br /&gt;
Von InterTechno gibt es mit dem ITL-230 Funk Schaltermodul ein sehr ähnliches Produkt, das den selben Einschränkungen unterliegt.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:Schalter (Empfänger)]]&lt;/div&gt;</summary>
		<author><name>Soulman</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=RSL_2-Draht_Einbauschalter&amp;diff=36525</id>
		<title>RSL 2-Draht Einbauschalter</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=RSL_2-Draht_Einbauschalter&amp;diff=36525"/>
		<updated>2021-12-06T14:26:30Z</updated>

		<summary type="html">&lt;p&gt;Soulman: /* Eigenschaften */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Conrad Funk-Einbauschalter 2-Draht RSL (Intertechno kompatibel), zum Einbau in Montagedosen / Unterputzdosen auch ohne Neutralleiter und unter Verwendung des normalen Schalters. (Beschreibung gilt grösstenteils auch für das sehr ähnliche Intertechno ITL-230 Funk Schaltermodul)&lt;br /&gt;
== Eigenschaften ==&lt;br /&gt;
Der wesentliche Vorteil des Conrad Funk-Einbauschalter 2-Draht ist, dass er lediglich den Aussenleiter (&amp;quot;Phase&amp;quot;) benötigt, um betrieben zu werden. In vielen Installationen befindet sich in der Unterputzwanddose für den Lichtschalter kein Neutrallleiter (&amp;quot;Nullleiter&amp;quot;), sodass die üblichen FS20 oder HomeMatic Unterputzschalter nicht verwendet werden können. In der klassischen Elektroinstallation wird in der Wandose nur der Aussenleiter geschaltet und der Rückleiter auf anderem Wege zur Lichtfassung geführt. Der Conrad Funk-Einbauschalter 2-Draht benötigt tatsächlich nur den ankommenden und abgehenden  (geschalteten) Aussenleiter. Er bezieht seine Stromversorgung vermutlich aus den Potentialunterschieden der beiden Aussenleiterstränge auch im ausgeschalteten Zustand, hierbei wird wahrscheinlich das Neutralleiterpotential durch den zu schaltenden Verbraucher genutzt.&lt;br /&gt;
&lt;br /&gt;
Der RSL Schalter bezieht seinen Betriebsstrom also vom Aussenleiter in der Dose vor dem Schalter und dem geringen Strom, der &amp;quot;rückwärts&amp;quot; durch eine Ohmsche Last (z.b. klassische Glühbirne oder Halogenlampe) geführt werden kann, den im ausgeschaltet zustand ist die Glühbirne technisch nur ein Widerstand in der Neutralleitung.&lt;br /&gt;
&lt;br /&gt;
Vermutlich aus diesem Grunde kann der Schalter nicht verwendet werden, wenn der zu schaltende Verbraucher eine Leuchtstoffröhre, oder - je nach Typ und Vorschaltgerät - Energiespar- oder LED-Lampe ist, da diese im Stromlosenzustand zu hochohmig sind. Als Resultat bekommt der RSL nicht genug Betriebsspannung. Da der RSL Schalter im stromlosen Zustand durchlässig ist (also EINschaltet), können diese Leuchtmittel aus nicht ausgeschaltet werden: Beim Abschalten verliert der RSL Schalter seine Versorgungsspannung, als Resultat wird wieder eingeschaltet, der RSL bekommt wieder Versorgungsspannung und versucht jetzt wieder auszuschalten etc. Also Resultat gehen LEDs am RSL Schalter mit einer Frequenz von ca 10 hz an und aus, wenn der Befehl zum abschalten kommt.&lt;br /&gt;
&lt;br /&gt;
Der Conrad Funk-Einbauschalter 2-Draht benötigt keinen Taster zur Vor-Ort-Betätigung, sondern die zwei herausgeführten Schaltdrähte können mittels des vorher verbauten Schalters aus einem normalen Schalterprogramm betrieben werden. Der Schalter wird hierbei wie ein Toggle verwendet. D.h., egal welche Stellung der Schalter hat, der Conrad Funk-Einbauschalter 2-Draht kann vollständig per Funk geschaltet werden, der lokale mechanische Schalter ändert bei jeder Betätigung den Schaltzustand.&lt;br /&gt;
&lt;br /&gt;
Vorteile des Conrad Funk-Einbauschalter 2-Draht gegenüber FS20 und HM Unterputzschaltern wie [[FS20 SU Unterputz-Funk-Schalter]]:&lt;br /&gt;
&lt;br /&gt;
* benötigt nur Aussenleiter zur Stromversorgung&lt;br /&gt;
* dünner als FS20 Unterputzschalter, daher leichter auch hinter dem normalen Lichtschalter einbaubar&lt;br /&gt;
* benötigt keinen Taster, sondern kann mit (vorhandenem) Schalter betrieben werden&lt;br /&gt;
* RSL Funk, also kompatibel mit Intertechno 433 Mhz&lt;br /&gt;
&lt;br /&gt;
Nachteile:&lt;br /&gt;
* benötigt Grundlast&lt;br /&gt;
* Schaltleistung gering (sieh weiter unten)&lt;br /&gt;
&lt;br /&gt;
== Hinweise zum Betrieb mit FHEM ==&lt;br /&gt;
Der Conrad Funk-Einbauschalter 2-Draht hat keine Kodierschalter, sondern muss angelernt werden. Da dazu der gewünschte Intertechnokanal drei Sekunden lang senden muss, ist ein Anlernen mit FHEM nicht möglich, da FHEM ununterbrochenes Senden nicht beherrscht. Der Schalter kann aber leicht mit einer gängigen Intertechno Fernbedienung wie z.b. einer YCT-100 angelernt werden. (Es muss eine IT Fernbedienung sein, bei der man die Adresse selber einstellen kann, das ist bei der YCT-100 der Fall. Nicht geeignet sind die Fernbedienungen, deren Code fest ist, wie z.b. die aus den IT 1500 Sets).&lt;br /&gt;
Dann den [[Intertechno_Code_Berechnung#originales_Intertechno_System|Code ermitteln]] und in Fhem eintragen.&lt;br /&gt;
&lt;br /&gt;
Einmal angelernt ist eine Schaltung per FHEM kein Problem.&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
Die Schaltleistung des Conrad Funk-Einbauschalter ist mit 300 Watt ohmscher und 100 Watt induktiver Last deutlich geringer als die anderer Produkte, für Licht aber völlig ausreichend. Wegen der nur 100 Watt induktiver Last können aber keine Halogeninstallationen mit &amp;quot;echten&amp;quot; Trafos geschaltet werden.&lt;br /&gt;
&lt;br /&gt;
Nicht geeignet, wenn im zu schaltetenden Stromkreis nur Leuchtstoffröhren zu schalten sind. Offiziell geht er auch nicht mit LED oder Leuchtstoff-Energiesparlampen, praktisch können oft aber auch solche Lampen geschaltet werden, wenngleich mit gelegentlich ca 0,5 Sekunden Verzögerung und u.U leichtem Flackern. Vermutlich kann eine Funktion aber durch ein parallel zum Verbraucher geschaltetes &amp;quot;Grundlastmodul&amp;quot; (letztlich nur ein geeignet dimensionierter Widerstand) erreicht werden.&lt;br /&gt;
&lt;br /&gt;
LED Strips mit den üblichen Netzteilen/Steckernetzteilen gehen nicht.&lt;br /&gt;
&lt;br /&gt;
Falls im zu schaltenden Stromkreis mehrere Lampen parallel verdrahtet sind (übliche Schaltung), reicht es, wenn eine davon zu den unterstützten Typen gehört, die Restlichen können dann auch Leuchtstoffröhren etc. sein. So ist es z.b. möglich eine Reihe von LED Spots die sich nicht schalten lassen, doch schaltbar zu machen, indem man &#039;&#039;&#039;einen&#039;&#039;&#039; LED-Spot gegen einen Halogen-Spot austauscht.&lt;br /&gt;
&lt;br /&gt;
Bei schlechter Funklage hilft ggf. das Drehen des Schalters in der Wanddose um 90 Grad.&lt;br /&gt;
&lt;br /&gt;
Bei Tasterschaltungen wird der tatsächliche State nie in FHEM erfasst, da&lt;br /&gt;
a) der Schalter immer wieder auf OFF gesetzt wird&lt;br /&gt;
b) in der Regel mehrere Taster im Flur vorhanden sind, deren Betätigung FHEM nicht mitbekommt. Ebenso wir eine lokale Bedienung am lokalen Schalter nicht erfasst.&lt;br /&gt;
&lt;br /&gt;
== Sonstiges==&lt;br /&gt;
Von InterTechno gibt es mit dem ITL-230 Funk Schaltermodul ein sehr ähnliches Produkt, das den selben Einschränkungen unterliegt.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:Schalter (Empfänger)]]&lt;/div&gt;</summary>
		<author><name>Soulman</name></author>
	</entry>
</feed>