<?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=Yfhem</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=Yfhem"/>
	<link rel="alternate" type="text/html" href="http://wiki.fhem.de/wiki/Spezial:Beitr%C3%A4ge/Yfhem"/>
	<updated>2026-04-16T22:07:41Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=HomeMatic_Devices_pairen&amp;diff=7370</id>
		<title>HomeMatic Devices pairen</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=HomeMatic_Devices_pairen&amp;diff=7370"/>
		<updated>2014-08-15T14:29:47Z</updated>

		<summary type="html">&lt;p&gt;Yfhem: Removed space before full stop.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;HomeMatic Geräte müssen mit dem für das HomeMatic-Protokoll eingesetzten IO-Device (zB CUL, CUN, HMLAN) &#039;&#039;gepaart&#039;&#039; = &#039;&#039;gepairt&#039;&#039; werden, damit sie von Fhem gesteuert oder ausgelesen werden können.&lt;br /&gt;
&lt;br /&gt;
Die Adresse eines HomeMatic Gerätes ist nicht frei einstellbar, sondern für jedes Gerät fest vorgegeben. Da die HM-Geräte über eine sehr komplexe Kanalstruktur verfügen, empfiehlt sich daher, die Geräte in Fhem per &#039;&#039;autocreate&#039;&#039; Funktion anlegen zu lassen, Eine nachträgliche Umbenennung oder manuelle Bearbeitung der erzeugten Konfigurationsdaten ist problemlos möglich.&lt;br /&gt;
&lt;br /&gt;
Erster Schritt: [[HomeMatic_Installieren|CUL/CUN/HMLAN installieren]]. Danach hier weiter:&lt;br /&gt;
&lt;br /&gt;
= Grundlagen=&lt;br /&gt;
Durch das Pairing wird ein HM-Gerät genau einem IO-Device (zB CUL) zugeordnet. Wenn ein Gerät mit dem IO-Device gepairt ist, kann es darüber gesteuert werden.  &lt;br /&gt;
  &lt;br /&gt;
Beim Pairing wird die HMID des IO-Device in das Gerät geschrieben. Das Pairing findet also im Wesentlichen im Gerät statt, nicht in FHEM selbst.&lt;br /&gt;
&lt;br /&gt;
Zu bemerken ist, dass ein IO-Device (zB CUL) standardmäßig die ID F11034 von FHEM erhält. Da viele HM-Geräte das IO-Device nur anhand der HMIDs erkennen, können alle in Reichweite der HM-Geräte befindlichen IO-Devices mit der in das HM-Gerät geschriebenen HMID das HM-Gerät steuern. Hinzu kommt, dass die &#039;&#039;autocreate&#039;&#039; Funktion die in Reichweite befindlichen HM-Geräte findet und automatisch einbindet. Nachbarn, die IO-Devices mit der gleichen HMID betreiben, können also HM-Geräte untereinander sehen und steuern!&lt;br /&gt;
&lt;br /&gt;
Es ist daher dringen zu empfehlen, die HMID vor dem Pairing der HM-Geräte mit: &lt;br /&gt;
&lt;br /&gt;
  attr &amp;lt;CUL&amp;gt; hmId &amp;lt;6-stellige Hexadresse&amp;gt;&lt;br /&gt;
&lt;br /&gt;
zu individualisieren.  &lt;br /&gt;
&lt;br /&gt;
Gepairt wird nur das Device. Die Channels sind dem Device untergeordnet und somit implizit auch gepairt. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Ist ein Device gepairt werden Konfigurationsänderungen über die Zentrale (FHEM) vorgenommen. Man kann u.a. keine Kanäle mehr &#039;&#039;direkt&#039;&#039; peeren (verknüpfen). Stattdessen verwendet man Kommandos in FHEM. Siehe &amp;lt;u&amp;gt;[[Homematic_Peering_Beispiele|peeren]]&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= IO-Device in den Pairing-Modus versetzen =&lt;br /&gt;
* CUL/CUN/HMLAN Konfigurator in den &amp;quot;Akzeptiere-Pairing-Requests-Modus&amp;quot; bringen:&lt;br /&gt;
&lt;br /&gt;
  set &amp;lt;CUL&amp;gt; hmPairForSec 600&lt;br /&gt;
&lt;br /&gt;
600 bedeutet hier, dass das IO-Device 600 Sekunden, also 10 Minuten lang im Pairing-Modus ist. &lt;br /&gt;
&lt;br /&gt;
Bei aktivem Pairing-Modus gibt das IO-Device folgende &#039;&#039;Internals&#039;&#039; Variable zurück: &lt;br /&gt;
&lt;br /&gt;
  hmPair 1&lt;br /&gt;
&lt;br /&gt;
Alternativ kann &lt;br /&gt;
&lt;br /&gt;
  set &amp;lt;CUL&amp;gt; hmPairSerial &amp;lt;serial&amp;gt;&lt;br /&gt;
&lt;br /&gt;
genutzt werden.&lt;br /&gt;
&lt;br /&gt;
= Devices pairen =&lt;br /&gt;
&lt;br /&gt;
Dazu ist ein Knopf zu drücken, üblicherweise so lange bis die LEDs blinken, meist nach ca. 5 Sekunden (bitte Handbuch beachten, Stichwort &amp;quot;anlernen&amp;quot;). Das Gerät wird in den Anlern- oder auch Konfigurationsmode versetzt. Es sendet hierzu eine entsprechende Nachricht an alle. &lt;br /&gt;
In FHEM werden nun:&lt;br /&gt;
* alle fehlenden Devices und Channels angelegt&lt;br /&gt;
* das Register pairCentral im Device gesetzt. &lt;br /&gt;
&lt;br /&gt;
Ein save danach kann nicht schaden.&lt;br /&gt;
&lt;br /&gt;
= Pairing verifizieren =&lt;br /&gt;
Nur weil ein Gerät angelegt wurde, heißt das &#039;&#039;&#039;nicht&#039;&#039;&#039;, dass es auch gepaired ist. In den Readings eines Devices muss stehen (list &amp;lt;name&amp;gt; oder im Webinterface):&lt;br /&gt;
&lt;br /&gt;
  R_pairCentral  0xABCDEF&lt;br /&gt;
&lt;br /&gt;
ABCDEF steht dabei für die HMID des IO-Device (zB CUL). Wurde für das IO-Device kein attribute mit einer individuellen HMID gesetzt, sollte hier die Standard-ID F11034 stehen. Die führende 0x steht für den Hinweis auf eine HEX-Adresse. &lt;br /&gt;
&lt;br /&gt;
Ist das Pairing noch nicht abgeschlossen, kann man nach kurzer Pause den Befehl: &lt;br /&gt;
&lt;br /&gt;
  set &amp;lt;HM-Gerät&amp;gt; getConfig &lt;br /&gt;
&lt;br /&gt;
absetzen, um zu prüfen, ob sich der Status zwischenzeitlich geändert hat. Wenn das Reading R_pairCentral nicht auftaucht oder der Wert mit set_ beginnt, hat das Pairing &#039;&#039;&#039;nicht&#039;&#039;&#039; geklappt. Man kann entweder:&lt;br /&gt;
* noch einmal probieren, ein getConfig auszulösen - vielleicht hat das Lesen nicht funktioniert&lt;br /&gt;
* noch einmal pairen - das schadet nichts&lt;br /&gt;
&lt;br /&gt;
Alternativ kann man auch mit HMinfo einen Config check durchführen:&lt;br /&gt;
&lt;br /&gt;
  define hm HMInfo&lt;br /&gt;
  set hm configCheck&lt;br /&gt;
&lt;br /&gt;
= Vorgehen bei Problemen =&lt;br /&gt;
&lt;br /&gt;
Wenn das Pairing nicht erfolgreich ist, das Gerät sich also nicht steuern lässt, ist es möglich, dass es schon bzw. noch mit einem anderen IO-Device gepairt ist. Dann das Gerät in den Auslieferungszustand 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 pairen. &lt;br /&gt;
&lt;br /&gt;
Alternativ kann das Pairing per Befehl gelöst werden. Siehe dazu unten. &lt;br /&gt;
&lt;br /&gt;
Wenn das zu pairende Geräte ein Empfänger ist, kann mit FHEM per Telnet oder in der Kommandozeile des Webinterfaces folgendes Kommando abgesetzt werden:&lt;br /&gt;
&lt;br /&gt;
  set &amp;lt;CUL&amp;gt; hmPairSerial &amp;lt;10-stellige Seriennummer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die 10-stellige Seriennummer ist beim Empfängern idR. auf der Rückseite des Geräte aufgedruckt. Die Seriennummer fängt normalerweise mit Buchstaben an und endet mit Zahlen.&lt;br /&gt;
&lt;br /&gt;
Es gilt auch sicherzustellen, dass das zu pairende Gerät nicht bereits zuvor mit der Homematic Config Software gepairt wurde. Ist dies der Fall, so sollte das Pairing in der Homematic Config Software gelöscht und das Pairing in FHEM erneut durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
= Gezieltes Pairing =&lt;br /&gt;
Bei bereits bekanntem HM-Gerät kann man mit:&lt;br /&gt;
&lt;br /&gt;
  set &amp;lt;Name HM-Gerät&amp;gt; pair&lt;br /&gt;
&lt;br /&gt;
das pairing überschreiben. Es funktioniert aber nur, wenn schon ein IO-Device eingetragen ist.&lt;br /&gt;
&lt;br /&gt;
= Pairing lösen =&lt;br /&gt;
Das Pairing kann mit:&lt;br /&gt;
&lt;br /&gt;
  set &amp;lt;Name HM-Gerät&amp;gt; unpair&lt;br /&gt;
&lt;br /&gt;
gelöst werden. Wichtig ist dabei, dass das IO-Device, das entpairt werden soll, mit der ursprünglich in das HM-Gerät geschriebenen HMID konfiguriert ist.  &lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Yfhem</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=CUL_HomeMatic_und_FS20&amp;diff=5073</id>
		<title>CUL HomeMatic und FS20</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=CUL_HomeMatic_und_FS20&amp;diff=5073"/>
		<updated>2014-02-23T15:48:26Z</updated>

		<summary type="html">&lt;p&gt;Yfhem: /* Antwort */ Fixed spacing.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Frage ==&lt;br /&gt;
ist es möglich über FHEM mit einer CUL HomeMatic und FS20 parallel zu betreiben?&lt;br /&gt;
&lt;br /&gt;
== Antwort ==&lt;br /&gt;
Nein. FS20, FHT etc. ist amplitudenmoduliert (AM) und sendet/empfängt mit einer Datenrate von 1 khz, &lt;br /&gt;
wärend HomeMatic frequenzmoduliert mit 20 khz Datenrate sendet/empfängt.&lt;br /&gt;
&lt;br /&gt;
Ein CUL mit culfw kann man &#039;&#039;&#039;entweder&#039;&#039;&#039; im [[SlowRF]] Mode betreiben, und damit einige&lt;br /&gt;
Geraete mit 1kHz Datenrate, AM Modulation empfangen (FS20, S300, FHT, usw) &#039;&#039;&#039;oder&#039;&#039;&#039; im HomeMatic Mode mit 20kHz Datenrate, FM Modulation, aber nicht beides gleichzeitig.&lt;br /&gt;
&lt;br /&gt;
Überdies ist in älteren Versionen des CUL (namentlich V2 oder älter) zu wenig Speicherplatz, sodass&lt;br /&gt;
die kombinierte culfw für beide Versionen nicht in den Speicher passt. Hier muss man sich dann für eine&lt;br /&gt;
speziell auf SlowRF oder HM angepasste Version der culfw entscheiden.&lt;br /&gt;
&lt;br /&gt;
Es ist aber möglich, FHEM mit 2 CULs, eines im SlowFR (FS20/FHT) Modus und eines mit CUL_HM zu betreiben.&lt;br /&gt;
Ebenso kann ein CUL im SlowFR (FS20/FHT) Modus mit einem [[HMLAN Konfigurator]] in Kombination betreiben werden.&lt;br /&gt;
&lt;br /&gt;
Siehe auch&lt;br /&gt;
[http://fhem.de/commandref.html#rfmode]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:FAQ]]&lt;/div&gt;</summary>
		<author><name>Yfhem</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Volkszaehler&amp;diff=4265</id>
		<title>Volkszaehler</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Volkszaehler&amp;diff=4265"/>
		<updated>2014-01-05T17:16:55Z</updated>

		<summary type="html">&lt;p&gt;Yfhem: /* Daten mit Volkszaehler loggen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Datei:volkszaehler.png|right]]&lt;br /&gt;
&lt;br /&gt;
Volkszaehler.org ist ein freies SmartMeter Projekt für den Selbstbau ([http://www.volkszaehler.org siehe volkszaehler.org]) Der Nutzer behält dabei die vollständige Kontrolle über die anfallenden Daten seiner Strom-, Wasser- und Gaszähler.&lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
* 100% Open-Source&lt;br /&gt;
* kostenlos&lt;br /&gt;
* offene Protokolle&lt;br /&gt;
* erweiterbar&lt;br /&gt;
* minmale Anforderungen (LAMP-Stack)&lt;br /&gt;
* flexibele Verwaltungsmöglichkeiten&lt;br /&gt;
* Verbrauchs &amp;amp; Kostenprognose&lt;br /&gt;
* verschiedenste Messgrößen&lt;br /&gt;
** Strom&lt;br /&gt;
** Wasser&lt;br /&gt;
** Gas&lt;br /&gt;
** Betriebsstunden&lt;br /&gt;
** Temperatur&lt;br /&gt;
* Läuft u. a. auf Raspberry Pi ([http://wiki.volkszaehler.org/howto/raspberry_pi_image Installationsbeschreibung)]&lt;br /&gt;
&lt;br /&gt;
== Volkszaehler in fhem einbinden ==&lt;br /&gt;
&lt;br /&gt;
Das fhem-Modul für Volkszaehler.org bindet diese Daten in fhem ein. Das Modul 23_volkszaehler.pm greift per http auf den Volkszaehler zu und interpretiert die JSON-Antwort in fhem-device-Readings. Daraus können Logs und Plots gebildet werden oder devices mit Kennzahlen aus den Volkszaehler-Daten. &lt;br /&gt;
&lt;br /&gt;
Es ist z. B. für Solarstrom-Anlagenbesitzer denkbar, bei hoher verfügbarer Sonnenenergie mit fhem Verbraucher einzuschalten, um die Eigenverbrauchsrate zu erhöhen, was die Energiekosten reduziert.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Für die Installation müssen einige Files heruntergeladen und in die richtigen Verzeichnisse kopiert werden.&lt;br /&gt;
&lt;br /&gt;
=== fhem-Modul ===&lt;br /&gt;
Die folgende Beschreibung geht von der Installation auf einer [[FritzBox]] aus.&lt;br /&gt;
&lt;br /&gt;
Meine aktuellen Versionen liegen hier: &amp;lt;code&amp;gt;https://github.com/bgewehr/fhem&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Datei &amp;lt;code&amp;gt;23_VOLKSZAEHLER.pm&amp;lt;/code&amp;gt; kommt ins Verzeichnis &amp;lt;code&amp;gt;\\fritz.box\FRITZ.NAS\fhem\fhem\&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Datei &amp;lt;code&amp;gt;volkszaehler.gplot&amp;lt;/code&amp;gt; kommt ins Verzeichnis &amp;lt;code&amp;gt;\\fritz.box\FRITZ.NAS\fhem\fhem\www\gplot&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nur zur Sicherheit: Um die Dateien auf einem Windows-Rechner lokal zu erstellen, bitte den Text aus der &amp;quot;raw&amp;quot; Ansicht aus Github kopieren und bitte nicht in Notepad, sondern in z. B. [http://www.heise.de/download/notepad.html Notepad++] einfügen und dann unter dem richtigen Dateinamen speichern. Mit Notepad von Microsoft werden falsche Zeilenenden erzeugt, die dann unter Linux nicht funktionieren.&lt;br /&gt;
&lt;br /&gt;
=== JSON für Perl ===&lt;br /&gt;
Das Modul nutzt einen JSON-Interpreter, um die Antwort vom Volkszaehler in eine PERL-Variable zu wandeln. Dazu sind einige zusätzliche PERL Module notwendig.&lt;br /&gt;
&lt;br /&gt;
JSON für PERL kann von hier geladen werden:&lt;br /&gt;
&lt;br /&gt;
   http://cpansearch.perl.org/src/MAKAMAKA/JSON-1.15/lib/JSON/&lt;br /&gt;
   oder&lt;br /&gt;
   https://github.com/makamaka/JSON/tree/master/lib&lt;br /&gt;
&lt;br /&gt;
Das File JSON.pm muss auf einer Fritzbox 7390 mit fhem im internen Speicher in das Verzeichnis &lt;br /&gt;
&lt;br /&gt;
    \\fritz.box\FRITZ.NAS\fhem\lib\perl5\site_perl\5.12.2\mips-linux\&lt;br /&gt;
&lt;br /&gt;
Für die Files Converter.pm und Parser.pm wird ein neues Verzeichnis angelegt:&lt;br /&gt;
&lt;br /&gt;
    \\fritz.box\FRITZ.NAS\fhem\lib\perl5\site_perl\5.12.2\mips-linux\JSON\&lt;br /&gt;
&lt;br /&gt;
und die files dann dort abgelegt.&lt;br /&gt;
&lt;br /&gt;
Auf anderen Plattformen müssen die Pfade ggf. entsprechend angepasst werden. Im Script startfhem werden die lib-Pfade mit&lt;br /&gt;
&lt;br /&gt;
   export xyz=pfad:pfad  &lt;br /&gt;
&lt;br /&gt;
angegeben, in die man die files ablegen kann, damit sie beim Aufruf gefunden werden.&lt;br /&gt;
&lt;br /&gt;
== Definition der devices ==&lt;br /&gt;
Die Device Definitionen werden in einer Konfigurationsdatei (üblicherweise fhem.cfg) angelegt&lt;br /&gt;
&lt;br /&gt;
  define &amp;lt;name&amp;gt; VOLKSZAEHLER &amp;lt;ip-address&amp;gt; &amp;lt;port-nr&amp;gt; &amp;lt;channel&amp;gt; &amp;lt;state:last/min/max/average/consumption&amp;gt; &amp;lt;poll-delay&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;name&amp;gt;: Name des neuen fhem-devices&lt;br /&gt;
* &amp;lt;ip-address&amp;gt;: IP des Volkszaehlers&lt;br /&gt;
* &amp;lt;port-Nr&amp;gt;: Port, auf dem der Volkszaehler-http-Server erreichtbar ist&lt;br /&gt;
* &amp;lt;channel&amp;gt;: UUID des Volkszaehler-Frontend-Channels, der gelesen werden soll&lt;br /&gt;
* &amp;lt;state&amp;gt;: Das Reading, welches als state genommen werden soll, kann im define gewählt werden. Dabei besteht die Auswahl aus&lt;br /&gt;
** last (letzter geladener Wert, manchmal leer bei zu kleinem poll-delay)&lt;br /&gt;
** min (kleinster Wert innerhalb des poll-delay, manchmal leer bei zu kleinem poll-delay)&lt;br /&gt;
** max (größter Wert innerhalb des poll-delay, manchmal leer bei zu kleinem poll-delay)&lt;br /&gt;
** average (Durchschnitt der Werte im poll-delay, manchmal leer bei zu kleinem poll-delay)&lt;br /&gt;
** consumption (Verbrauch innerhalb des poll-delays, manchmal leer bei zu kleinem poll-delay)&lt;br /&gt;
* &amp;lt;poll-delay&amp;gt;: Zeitraum, der ausgelesen werden soll in Sekunden&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
Ein vollständiges Beispiel für die erforderlichen Definitionen und das daraus resultierende Ergebnis:&lt;br /&gt;
&lt;br /&gt;
=== Momentanverbrauch ===&lt;br /&gt;
Kanal im Volkszaehler, der den Momentanverbrauch per I/R-Lesekopf ermittelt (alle 60 Sekunden, daraus der Mittelwert)&lt;br /&gt;
&lt;br /&gt;
  define Verbrauch_aktuell VOLKSZAEHLER 192.168.178.45 80 635481a0-6fcd-11e2-8587-eda25228f8bf average 60&lt;br /&gt;
  attr Verbrauch_aktuell group Strom&lt;br /&gt;
  attr Verbrauch_aktuell room Volkszaehler&lt;br /&gt;
&lt;br /&gt;
=== Logdatei ===&lt;br /&gt;
Definition der Logdatei, aus der die Grafik erzeugt werden kann:&lt;br /&gt;
&lt;br /&gt;
  define FileLog_Verbrauch_aktuell FileLog ./log/Verbrauch_aktuell-%Y-%m.log Verbrauch_aktuell&lt;br /&gt;
  attr FileLog_Verbrauch_aktuell group Volkszaehler&lt;br /&gt;
  attr FileLog_Verbrauch_aktuell logtype text&lt;br /&gt;
  attr FileLog_Verbrauch_aktuell room Z_Log&lt;br /&gt;
&lt;br /&gt;
=== Der Graph dazu ===&lt;br /&gt;
  define FilePlot_Verbrauch_aktuell weblink fileplot FileLog_Verbrauch_aktuell:Volkszaehler:CURRENT&lt;br /&gt;
  attr FilePlot_Verbrauch_aktuell label &amp;quot;Stromverbrauch: $data{currval1}&amp;quot;&lt;br /&gt;
  attr FilePlot_Verbrauch_aktuell room Volkszaehler&lt;br /&gt;
&lt;br /&gt;
=== Zählerstand ===&lt;br /&gt;
Kanal im Volkszaehler, der den Zählerstand per I/R-Lesekopf ermittelt, jede Stunde davon der letzte Wert.&lt;br /&gt;
&lt;br /&gt;
  define Zaehlerstand VOLKSZAEHLER 192.168.178.45 80 ebb9c9b0-7058-11e2-b5ed-d12ec87a3a7f last 1800&lt;br /&gt;
  attr Zaehlerstand group Strom&lt;br /&gt;
  attr Zaehlerstand room Volkszaehler&lt;br /&gt;
&lt;br /&gt;
=== Verbrauch ===&lt;br /&gt;
Kanal im Volkszaehler, der den Zählerstand per I/R-Lesekopf ermittelt, alle 24 Stunden davon der Verbrauch.&lt;br /&gt;
&lt;br /&gt;
  define Verbrauch_24h VOLKSZAEHLER 192.168.178.45 80 635481a0-6fcd-11e2-8587-eda25228f8bf consumption 86400&lt;br /&gt;
  attr Verbrauch_24h group Strom&lt;br /&gt;
  attr Verbrauch_24h room Volkszaehler&lt;br /&gt;
&lt;br /&gt;
=== Ergebnis ===&lt;br /&gt;
[[Datei:23_volkszaehler.JPG|mini|zentriert|hochkant=3.0|Strom- und Gasverbrauch aus Volkszählerdaten generiert - Beispieldarstellung]]&lt;br /&gt;
&lt;br /&gt;
== Daten mit Volkszaehler loggen ==&lt;br /&gt;
Hier eine Möglichkeit mit einem notify Temperaturen (oder andere Messwerte) an die Middelware vom Volkszaehler zu schicken um die Daten über ein Volkszaehler Frontend auswerten zu können:&lt;br /&gt;
   .*:temperature.* {&lt;br /&gt;
    # return &amp;quot;Heizung $NAME&amp;quot; if $NAME =~ /\A.{3}Heizung/; # [[MAX]] Geräte ausschließen. Wordaround für aufgebrauchte credits.&lt;br /&gt;
    my $base_url = AttrVal(&#039;vz&#039;, &#039;vz_URL&#039;, undef);&lt;br /&gt;
    my $temp = ReadingsVal($NAME, &#039;temperature&#039;, undef);&lt;br /&gt;
    my $uuid = AttrVal($NAME, &#039;vz_UUID&#039;, undef);&lt;br /&gt;
    unless (defined($uuid)) {&lt;br /&gt;
      my $create_url = $base_url . &#039;/channel.json?type=temperature&amp;amp;title=&#039; . $NAME . &#039;&amp;amp;public=on&amp;amp;style=lines&amp;amp;operation=add&#039;;&lt;br /&gt;
      Log 5, $create_url;&lt;br /&gt;
      my $response = decode_json(get($create_url));&lt;br /&gt;
      $uuid = $response-&amp;gt;{entity}-&amp;gt;{uuid};&lt;br /&gt;
      $attr{$NAME}{&#039;vz_UUID&#039;} = $uuid;&lt;br /&gt;
      Log 4, &amp;quot;created $uuid for $NAME&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    my $update_url = $base_url . &#039;/data/&#039; . $uuid . &#039;.json?operation=add&amp;amp;value=&#039; . $temp;&lt;br /&gt;
    Log 5, $update_url;&lt;br /&gt;
    Log 4, get($update_url);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Volkszaehler URL wird in einem Attribut (vz_URL) eines dummies gespeichert, welches vorher angelegt werden muss.&lt;br /&gt;
&lt;br /&gt;
  define vz dummy&lt;br /&gt;
  attr vz vz_URL http://localhost/volkszaehler.org/htdocs/middleware.php&lt;br /&gt;
&lt;br /&gt;
Jedes Termometer, dass auch im Volkszaehler erscheinen soll, muss nun nur noch im Volkszaehler angelegt werden und die UUID als Attribut (vz_UUID) des Termometers gespeichert werden. Dieser Schritt kann auch ausgelassen werden. In diesem Fall wird ein neues Termometer automatisch angelegt.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* Volkszähler [http://www.volkszaehler.org Homepage]&lt;br /&gt;
* [https://github.com/bgewehr/fhem FHEM Module] für Volkszähler von &amp;quot;bgewehr&amp;quot;&lt;br /&gt;
* Quellen von JSON für Perl: [http://cpansearch.perl.org/src/MAKAMAKA/JSON-1.15/lib/JSON/ CPAN] / [https://github.com/makamaka/JSON/tree/master/lib github]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Yfhem</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Volkszaehler&amp;diff=4264</id>
		<title>Volkszaehler</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Volkszaehler&amp;diff=4264"/>
		<updated>2014-01-05T17:14:43Z</updated>

		<summary type="html">&lt;p&gt;Yfhem: Daten mit Volkszaehler loggen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Datei:volkszaehler.png|right]]&lt;br /&gt;
&lt;br /&gt;
Volkszaehler.org ist ein freies SmartMeter Projekt für den Selbstbau ([http://www.volkszaehler.org siehe volkszaehler.org]) Der Nutzer behält dabei die vollständige Kontrolle über die anfallenden Daten seiner Strom-, Wasser- und Gaszähler.&lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
* 100% Open-Source&lt;br /&gt;
* kostenlos&lt;br /&gt;
* offene Protokolle&lt;br /&gt;
* erweiterbar&lt;br /&gt;
* minmale Anforderungen (LAMP-Stack)&lt;br /&gt;
* flexibele Verwaltungsmöglichkeiten&lt;br /&gt;
* Verbrauchs &amp;amp; Kostenprognose&lt;br /&gt;
* verschiedenste Messgrößen&lt;br /&gt;
** Strom&lt;br /&gt;
** Wasser&lt;br /&gt;
** Gas&lt;br /&gt;
** Betriebsstunden&lt;br /&gt;
** Temperatur&lt;br /&gt;
* Läuft u. a. auf Raspberry Pi ([http://wiki.volkszaehler.org/howto/raspberry_pi_image Installationsbeschreibung)]&lt;br /&gt;
&lt;br /&gt;
== Volkszaehler in fhem einbinden ==&lt;br /&gt;
&lt;br /&gt;
Das fhem-Modul für Volkszaehler.org bindet diese Daten in fhem ein. Das Modul 23_volkszaehler.pm greift per http auf den Volkszaehler zu und interpretiert die JSON-Antwort in fhem-device-Readings. Daraus können Logs und Plots gebildet werden oder devices mit Kennzahlen aus den Volkszaehler-Daten. &lt;br /&gt;
&lt;br /&gt;
Es ist z. B. für Solarstrom-Anlagenbesitzer denkbar, bei hoher verfügbarer Sonnenenergie mit fhem Verbraucher einzuschalten, um die Eigenverbrauchsrate zu erhöhen, was die Energiekosten reduziert.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Für die Installation müssen einige Files heruntergeladen und in die richtigen Verzeichnisse kopiert werden.&lt;br /&gt;
&lt;br /&gt;
=== fhem-Modul ===&lt;br /&gt;
Die folgende Beschreibung geht von der Installation auf einer [[FritzBox]] aus.&lt;br /&gt;
&lt;br /&gt;
Meine aktuellen Versionen liegen hier: &amp;lt;code&amp;gt;https://github.com/bgewehr/fhem&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Datei &amp;lt;code&amp;gt;23_VOLKSZAEHLER.pm&amp;lt;/code&amp;gt; kommt ins Verzeichnis &amp;lt;code&amp;gt;\\fritz.box\FRITZ.NAS\fhem\fhem\&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Datei &amp;lt;code&amp;gt;volkszaehler.gplot&amp;lt;/code&amp;gt; kommt ins Verzeichnis &amp;lt;code&amp;gt;\\fritz.box\FRITZ.NAS\fhem\fhem\www\gplot&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nur zur Sicherheit: Um die Dateien auf einem Windows-Rechner lokal zu erstellen, bitte den Text aus der &amp;quot;raw&amp;quot; Ansicht aus Github kopieren und bitte nicht in Notepad, sondern in z. B. [http://www.heise.de/download/notepad.html Notepad++] einfügen und dann unter dem richtigen Dateinamen speichern. Mit Notepad von Microsoft werden falsche Zeilenenden erzeugt, die dann unter Linux nicht funktionieren.&lt;br /&gt;
&lt;br /&gt;
=== JSON für Perl ===&lt;br /&gt;
Das Modul nutzt einen JSON-Interpreter, um die Antwort vom Volkszaehler in eine PERL-Variable zu wandeln. Dazu sind einige zusätzliche PERL Module notwendig.&lt;br /&gt;
&lt;br /&gt;
JSON für PERL kann von hier geladen werden:&lt;br /&gt;
&lt;br /&gt;
   http://cpansearch.perl.org/src/MAKAMAKA/JSON-1.15/lib/JSON/&lt;br /&gt;
   oder&lt;br /&gt;
   https://github.com/makamaka/JSON/tree/master/lib&lt;br /&gt;
&lt;br /&gt;
Das File JSON.pm muss auf einer Fritzbox 7390 mit fhem im internen Speicher in das Verzeichnis &lt;br /&gt;
&lt;br /&gt;
    \\fritz.box\FRITZ.NAS\fhem\lib\perl5\site_perl\5.12.2\mips-linux\&lt;br /&gt;
&lt;br /&gt;
Für die Files Converter.pm und Parser.pm wird ein neues Verzeichnis angelegt:&lt;br /&gt;
&lt;br /&gt;
    \\fritz.box\FRITZ.NAS\fhem\lib\perl5\site_perl\5.12.2\mips-linux\JSON\&lt;br /&gt;
&lt;br /&gt;
und die files dann dort abgelegt.&lt;br /&gt;
&lt;br /&gt;
Auf anderen Plattformen müssen die Pfade ggf. entsprechend angepasst werden. Im Script startfhem werden die lib-Pfade mit&lt;br /&gt;
&lt;br /&gt;
   export xyz=pfad:pfad  &lt;br /&gt;
&lt;br /&gt;
angegeben, in die man die files ablegen kann, damit sie beim Aufruf gefunden werden.&lt;br /&gt;
&lt;br /&gt;
== Definition der devices ==&lt;br /&gt;
Die Device Definitionen werden in einer Konfigurationsdatei (üblicherweise fhem.cfg) angelegt&lt;br /&gt;
&lt;br /&gt;
  define &amp;lt;name&amp;gt; VOLKSZAEHLER &amp;lt;ip-address&amp;gt; &amp;lt;port-nr&amp;gt; &amp;lt;channel&amp;gt; &amp;lt;state:last/min/max/average/consumption&amp;gt; &amp;lt;poll-delay&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;name&amp;gt;: Name des neuen fhem-devices&lt;br /&gt;
* &amp;lt;ip-address&amp;gt;: IP des Volkszaehlers&lt;br /&gt;
* &amp;lt;port-Nr&amp;gt;: Port, auf dem der Volkszaehler-http-Server erreichtbar ist&lt;br /&gt;
* &amp;lt;channel&amp;gt;: UUID des Volkszaehler-Frontend-Channels, der gelesen werden soll&lt;br /&gt;
* &amp;lt;state&amp;gt;: Das Reading, welches als state genommen werden soll, kann im define gewählt werden. Dabei besteht die Auswahl aus&lt;br /&gt;
** last (letzter geladener Wert, manchmal leer bei zu kleinem poll-delay)&lt;br /&gt;
** min (kleinster Wert innerhalb des poll-delay, manchmal leer bei zu kleinem poll-delay)&lt;br /&gt;
** max (größter Wert innerhalb des poll-delay, manchmal leer bei zu kleinem poll-delay)&lt;br /&gt;
** average (Durchschnitt der Werte im poll-delay, manchmal leer bei zu kleinem poll-delay)&lt;br /&gt;
** consumption (Verbrauch innerhalb des poll-delays, manchmal leer bei zu kleinem poll-delay)&lt;br /&gt;
* &amp;lt;poll-delay&amp;gt;: Zeitraum, der ausgelesen werden soll in Sekunden&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
Ein vollständiges Beispiel für die erforderlichen Definitionen und das daraus resultierende Ergebnis:&lt;br /&gt;
&lt;br /&gt;
=== Momentanverbrauch ===&lt;br /&gt;
Kanal im Volkszaehler, der den Momentanverbrauch per I/R-Lesekopf ermittelt (alle 60 Sekunden, daraus der Mittelwert)&lt;br /&gt;
&lt;br /&gt;
  define Verbrauch_aktuell VOLKSZAEHLER 192.168.178.45 80 635481a0-6fcd-11e2-8587-eda25228f8bf average 60&lt;br /&gt;
  attr Verbrauch_aktuell group Strom&lt;br /&gt;
  attr Verbrauch_aktuell room Volkszaehler&lt;br /&gt;
&lt;br /&gt;
=== Logdatei ===&lt;br /&gt;
Definition der Logdatei, aus der die Grafik erzeugt werden kann:&lt;br /&gt;
&lt;br /&gt;
  define FileLog_Verbrauch_aktuell FileLog ./log/Verbrauch_aktuell-%Y-%m.log Verbrauch_aktuell&lt;br /&gt;
  attr FileLog_Verbrauch_aktuell group Volkszaehler&lt;br /&gt;
  attr FileLog_Verbrauch_aktuell logtype text&lt;br /&gt;
  attr FileLog_Verbrauch_aktuell room Z_Log&lt;br /&gt;
&lt;br /&gt;
=== Der Graph dazu ===&lt;br /&gt;
  define FilePlot_Verbrauch_aktuell weblink fileplot FileLog_Verbrauch_aktuell:Volkszaehler:CURRENT&lt;br /&gt;
  attr FilePlot_Verbrauch_aktuell label &amp;quot;Stromverbrauch: $data{currval1}&amp;quot;&lt;br /&gt;
  attr FilePlot_Verbrauch_aktuell room Volkszaehler&lt;br /&gt;
&lt;br /&gt;
=== Zählerstand ===&lt;br /&gt;
Kanal im Volkszaehler, der den Zählerstand per I/R-Lesekopf ermittelt, jede Stunde davon der letzte Wert.&lt;br /&gt;
&lt;br /&gt;
  define Zaehlerstand VOLKSZAEHLER 192.168.178.45 80 ebb9c9b0-7058-11e2-b5ed-d12ec87a3a7f last 1800&lt;br /&gt;
  attr Zaehlerstand group Strom&lt;br /&gt;
  attr Zaehlerstand room Volkszaehler&lt;br /&gt;
&lt;br /&gt;
=== Verbrauch ===&lt;br /&gt;
Kanal im Volkszaehler, der den Zählerstand per I/R-Lesekopf ermittelt, alle 24 Stunden davon der Verbrauch.&lt;br /&gt;
&lt;br /&gt;
  define Verbrauch_24h VOLKSZAEHLER 192.168.178.45 80 635481a0-6fcd-11e2-8587-eda25228f8bf consumption 86400&lt;br /&gt;
  attr Verbrauch_24h group Strom&lt;br /&gt;
  attr Verbrauch_24h room Volkszaehler&lt;br /&gt;
&lt;br /&gt;
=== Ergebnis ===&lt;br /&gt;
[[Datei:23_volkszaehler.JPG|mini|zentriert|hochkant=3.0|Strom- und Gasverbrauch aus Volkszählerdaten generiert - Beispieldarstellung]]&lt;br /&gt;
&lt;br /&gt;
== Daten mit Volkszaehler loggen ==&lt;br /&gt;
Hier eine Möglichkeit mit einem notify Temperaturen (oder andere Messwerte) an die Middelware vom Volkszaehler zu schicken um die Daten über ein Volkszaehler Frontend auswerten zu können:&lt;br /&gt;
   .*:temperature.* {&lt;br /&gt;
    # return &amp;quot;Heizung $NAME&amp;quot; if $NAME =~ /\A.{3}Heizung/; # [[MAX]] Geräte ausschließen. Wordaround für aufgebrauchte credits.&lt;br /&gt;
    my $base_url = AttrVal(&#039;vz&#039;, &#039;vz_URL&#039;, undef);&lt;br /&gt;
    my $temp = ReadingsVal($NAME, &#039;temperature&#039;, undef);&lt;br /&gt;
    my $uuid = AttrVal($NAME, &#039;vz_UUID&#039;, undef);&lt;br /&gt;
    unless (defined($uuid)) {&lt;br /&gt;
      my $create_url = $base_url . &#039;/channel.json?type=temperature&amp;amp;title=&#039; . $NAME . &#039;&amp;amp;public=on&amp;amp;style=lines&amp;amp;operation=add&#039;;&lt;br /&gt;
      Log 5, $create_url;&lt;br /&gt;
      my $response = decode_json(get($create_url));&lt;br /&gt;
      $uuid = $response-&amp;gt;{entity}-&amp;gt;{uuid};&lt;br /&gt;
      $attr{$NAME}{&#039;vz_UUID&#039;} = $uuid;&lt;br /&gt;
      Log 4, &amp;quot;created $uuid for $NAME&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    my $update_url = $base_url . &#039;/data/&#039; . $uuid . &#039;.json?operation=add&amp;amp;value=&#039; . $temp;&lt;br /&gt;
    Log 5, $update_url;&lt;br /&gt;
    Log 4, get($update_url);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Volkszaehler URL wird in einem Attribut (vz_URL) eines dummies gespeichert, welches vorher angelegt werden muss.&lt;br /&gt;
&lt;br /&gt;
  define vz dummy&lt;br /&gt;
  attr vz vz_URL http://localhost/volkszaehler.org/htdocs/middleware.php&lt;br /&gt;
&lt;br /&gt;
Jedes Termometer, dass auch im Volkszaehler erscheinen soll, muss nun nur noch im Volkszaehler angelegt werden und die UUID als Attribut (vz_UUID) des Termometers gespeichert werden.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* Volkszähler [http://www.volkszaehler.org Homepage]&lt;br /&gt;
* [https://github.com/bgewehr/fhem FHEM Module] für Volkszähler von &amp;quot;bgewehr&amp;quot;&lt;br /&gt;
* Quellen von JSON für Perl: [http://cpansearch.perl.org/src/MAKAMAKA/JSON-1.15/lib/JSON/ CPAN] / [https://github.com/makamaka/JSON/tree/master/lib github]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Yfhem</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Jalousie_und_Beleuchtung_in_mehreren_R%C3%A4umen&amp;diff=3491</id>
		<title>Jalousie und Beleuchtung in mehreren Räumen</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Jalousie_und_Beleuchtung_in_mehreren_R%C3%A4umen&amp;diff=3491"/>
		<updated>2013-11-12T19:46:37Z</updated>

		<summary type="html">&lt;p&gt;Yfhem: /* /etc/fhem/Schlafzimmer.cfg */ isn&amp;#039;t numeric in numeric eq (==).&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dies ist die Beschreibung einer Fhem-Konfiguration, die zur Steuerung einer Hausautomation auf Basis von [[HomeMatic]] dient. Gesteuert werden in verschiedenen Räumen das &#039;&#039;&#039;Licht und die Jalousien&#039;&#039;&#039;. Die Länge dieser Beschreibung soll nicht abschreckend wirken, viele Zeilen sind Kommentare oder durch den &#039;&#039;autocreate&#039;&#039; Prozeß erzeugte Zeilen!&lt;br /&gt;
&lt;br /&gt;
== Verwendete Hard- und Software ==&lt;br /&gt;
Als [[:Kategorie:Server Hardware|Server]] dient ein PC mit einem Athlon 64 X2 Dual Core Prozessor 6000+, 4 GB Hauptspeicher, 2 TB gespiegeltem Diskspeicher und Gigabit Ethernet. Auf dem Server ist ein Ubuntu 11.04 Serveredition installiert, die automatisch auf dem neuesten Stand gehalten wird. Perl ist in der Version 5.10.1 vorhanden. Fhem ist dabei nur eine von vielen Applikationen, die auf dem Server laufen.&lt;br /&gt;
&lt;br /&gt;
Der Server kann über das Ethernet im Hausnetz auf eine [[AVM Fritz!Box|Fritzbox&amp;amp;nbsp;7170]] zugreifen, die wiederum mittels WLAN mit einer Fritzbox&amp;amp;nbsp;3170 verbunden ist, die als WLAN-Repeater dient. An die 3170 ist als Hauszentrale ein HomeMatic Lan [[Interface]] ([[HMLAN Konfigurator]]) angeschlossen.&lt;br /&gt;
&lt;br /&gt;
Der CPU-Verbrauch hält sich sehr in Grenzen, bei einer stichprobenartigen Überwachung hat Fhem etwa 5-6 CPU Sekunden verbraucht in 24 Stunden.&lt;br /&gt;
&lt;br /&gt;
[[File:Konfiguration-Ethernet.jpg|628px]]&lt;br /&gt;
&lt;br /&gt;
Folgende HomeMatic Komponenten kommen zum Einsatz:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Produktcode &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Funktion &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Anzahl&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; HM-CFG-LAN &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; LanInterface &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 1&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; HM-RC-12-W &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Funkfernbedienung 12-Tasten &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 1&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; HM-RC-4-B &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Funkfernbedienung 4-Tasten &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 1&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; HM-PB-2-WM &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Funk-Wandtaster 2fach &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 3&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; HM-PB-4-WM &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Funk-Wandtaster 4fach &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; HM-LC-Sw1-FM &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Funk-Schaltaktor 1-fach, Unterputzmontage &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; HM-LC-Sw2-FM &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Funk-Schaltaktor 2-fach, Unterputzmontage &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 3&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; HM-LC-Bl1-FM &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Funk-Jalousieaktor 1-fach, Unterputzmontage &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; HM-LC-Sw1PB-FM &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Funk-Schaltaktor 1-fach, Unterputzmontage mit Tasteraufsatz &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 1&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Namensregeln&#039;&#039;&#039;: Alle Definitionen, die NICHT eindeutig einem Raum zuzuordnen sind, erhalten ein XX_ an den Anfang, alle anderen Definitionen erhalten eine der folgenden Kennungen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Kennung &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Raum&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; AK_ &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Arbeitskeller&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; BA_ &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Bad&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; BU_ &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Büro&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; DB &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Dachboden&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; FL_ &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Flur&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; GA_ &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Garage&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; KU_ &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Küche&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; SK_ &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Saunakeller&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; SZ_ &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Schlafzimmer&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; TG_ &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Terasse/Garten&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; TH_ &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Treppenhaus&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; VK_ &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Vorratskeller&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; WK_ &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Waschkeller&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; WZ_ &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Wohnzimmer&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Konfigurationsdateien ==&lt;br /&gt;
Alle Dateien, bis auf fhem.cfg, befinden sich in /etc/fhem. Alle Komponenten, die nicht physikalisch einem Raum zuzuordnen sind (Logs, Globales, etc.) wurden dem virtuellen Raum &#039;&#039;Server&#039;&#039; zugeordnet.&lt;br /&gt;
&lt;br /&gt;
=== /etc/fhem.cfg ===&lt;br /&gt;
Die Datei /etc/fhem.cfg ist der Haupteinstiegspunkt für die Konfiguration. Aus Gründen der besseren Wartbarkeit beinhaltet die Datei nur include Anweisungen, mit der andere Dateien aus dieser Datei heraus aufgerufen werden. Das hat den Vorteil, dass Kommentare in den include Dateien erhalten bleiben. Dies ist (bzw. war seinerzeit) nicht der Fall für fhem.cfg, wenn man die Funktion autocreate verwendet. Attribute für die Definition &#039;&#039;global&#039;&#039; dürfen nicht aus der fhem.cfg ausgelagert werden, sie müssen Bestandteil der fhem.cfg bleiben.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr global autoload_undefined_devices 1&lt;br /&gt;
attr global logfile /var/log/fhem/fhem-%Y-%m.log&lt;br /&gt;
attr global modpath /usr/share/fhem&lt;br /&gt;
attr global port 7072&lt;br /&gt;
attr global room Server&lt;br /&gt;
attr global statefile /var/log/fhem/fhem.save&lt;br /&gt;
include /etc/fhem/Web.cfg&lt;br /&gt;
include /etc/fhem/Autocreate.cfg&lt;br /&gt;
include /etc/fhem/LanInterface.cfg&lt;br /&gt;
include /etc/fhem/Fernbedienung.cfg&lt;br /&gt;
include /etc/fhem/Schlafzimmer.cfg&lt;br /&gt;
include /etc/fhem/Gaestezimmer.cfg&lt;br /&gt;
include /etc/fhem/Wohnzimmer.cfg&lt;br /&gt;
# include /etc/fhem/Buero.cfg&lt;br /&gt;
include /etc/fhem/Flur.cfg&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== /etc/fhem/Web.cfg ===&lt;br /&gt;
Alle relevanten Konfigurationsparameter für den Webzugriff sind in dieser Datei zu finden. Es sind die aus der Installation bekannten Standardwerte übernommen worden.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#########################################################################&lt;br /&gt;
## Webdefinitionen&lt;br /&gt;
## Zweck.........: Definitionen für den Zugriff auf den Webserver&lt;br /&gt;
## Standort......: Server&lt;br /&gt;
## Typ...........: &lt;br /&gt;
## Installation..: 15.09.2011&lt;br /&gt;
## Besonderheiten: &lt;br /&gt;
##         &lt;br /&gt;
#########################################################################&lt;br /&gt;
define XX_WEB FHEMWEB 8083 global&lt;br /&gt;
attr XX_WEB fwcompress 0&lt;br /&gt;
attr XX_WEB room Server&lt;br /&gt;
define XX_WEBphone FHEMWEB 8084&lt;br /&gt;
attr XX_WEBphone room Server&lt;br /&gt;
attr XX_WEBphone smallscreen 1&lt;br /&gt;
define XX_WEBtablet FHEMWEB 8085&lt;br /&gt;
attr XX_WEBtablet room Server&lt;br /&gt;
attr XX_WEBtablet touchpad 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== /etc/fhem/Autocreate.cfg ===&lt;br /&gt;
Diese Datei enthält alle wichtigen Information zu dem Autocreate Prozess. Keine Änderung gegenüber den Standardwerten.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#########################################################################&lt;br /&gt;
## Autocreate Definitionen&lt;br /&gt;
## Zweck.........: Autocreate aktivieren&lt;br /&gt;
## Standort......: Server&lt;br /&gt;
## Typ...........: &lt;br /&gt;
## Installation..: 15.09.2011&lt;br /&gt;
## Besonderheiten: &lt;br /&gt;
##         &lt;br /&gt;
#########################################################################&lt;br /&gt;
define XX_Autocreate autocreate&lt;br /&gt;
attr XX_Autocreate autosave 1&lt;br /&gt;
attr XX_Autocreate device_room&amp;amp;#160;%TYPE&lt;br /&gt;
attr XX_Autocreate filelog /var/log/fhem/%NAME-%Y.log&lt;br /&gt;
attr XX_Autocreate room Server&lt;br /&gt;
attr XX_Autocreate weblink 1&lt;br /&gt;
attr XX_Autocreate weblink_room Plots&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== /etc/fhem/LanInterface.cfg ===&lt;br /&gt;
Das Lan-Interface stellt das Bindeglied zwischen dem Server und den einzelnen Homematic-Komponenten dar. Es ist mit einem Ethernetnetzwerkkabel an das Netzwerk angeschlossen. Dem Lan-Interface wurde eine feste IP-Adresse vergeben, um immer auf der gleichen Adresse ansprechbar zu sein. Der Zugriff auf das Interface geschieht über Port 1000.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#########################################################################&lt;br /&gt;
## Lan Adapter&lt;br /&gt;
## Zweck.........: Bindeglied zwischen Server/fhem und Homematic Aktoren und Sender&lt;br /&gt;
## Standort......: Gästezimmer&lt;br /&gt;
## Typ...........: &lt;br /&gt;
## Installation..: 15.09.2011&lt;br /&gt;
## Besonderheiten: feste IP-Adresse 192.168.0.6 Port 1000&lt;br /&gt;
##         wird an 3170 WLAN-Repeater betrieben wegen besserer Abdeckung&lt;br /&gt;
#########################################################################&lt;br /&gt;
define XX_LANInterface HMLAN 192.168.0.6:1000&lt;br /&gt;
attr XX_LANInterface hmId xxxxxx&lt;br /&gt;
attr XX_LANInterface room Gästezimmer&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== /etc/fhem/Fernbedienung.cfg ===&lt;br /&gt;
Fernbedienungen sind nicht an einen Standort gebunden und können bewegt werden, daher eine eigene Konfiguration, wenn die Fernbedienung nicht einem Zimmer ausschließlich zugeordnet ist.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#########################################################################&lt;br /&gt;
## Fernbedienungen&lt;br /&gt;
## Zweck.........: alle verfügbaren Sender, wenn sie nicht einem Raum &lt;br /&gt;
##         unmittelbar zugeordnet sind&lt;br /&gt;
## Standort......: verschiedene&lt;br /&gt;
## Typ...........: verschiedene&lt;br /&gt;
## Installation..: 15.09.2011 12-Tasten-Fernbedienung&lt;br /&gt;
## Besonderheiten: &lt;br /&gt;
#########################################################################&lt;br /&gt;
#########################################################################&lt;br /&gt;
## 12-Tasten Fernbedienung&lt;br /&gt;
## Zweck.........: Rollladensteuerung, Licht im Wohnzimmer und Flur&lt;br /&gt;
##         Scheinwerfer im Garten&lt;br /&gt;
## Standort......: normalerweise Wohnzimmer&lt;br /&gt;
## Typ...........: HM-RC-12&lt;br /&gt;
## Installation..: 15.09.2011 12-Tasten-Fernbedienung&lt;br /&gt;
## Besonderheiten: es wird nicht zwischen langem und kurzem Tasten-&lt;br /&gt;
##         druck unterschieden&lt;br /&gt;
#########################################################################&lt;br /&gt;
define XX_FB_12_1 CUL_HM xxxxxx&lt;br /&gt;
attr XX_FB_12_1 devInfo 0C0000&lt;br /&gt;
attr XX_FB_12_1 firmware 1.1&lt;br /&gt;
attr XX_FB_12_1 hmClass sender&lt;br /&gt;
attr XX_FB_12_1 model HM-RC-12&lt;br /&gt;
attr XX_FB_12_1 room Wohnzimmer&lt;br /&gt;
attr XX_FB_12_1 serialNr xxxxxxxxxx&lt;br /&gt;
attr XX_FB_12_1 subType remote&lt;br /&gt;
&lt;br /&gt;
#########################################################################&lt;br /&gt;
## linker Button Reihe 1&lt;br /&gt;
## Funktion......: Rollladen runter im Wohnzimmer&lt;br /&gt;
## Besonderheiten: ACHTUNG, on und off sind im Wohnzimmer vertauscht&lt;br /&gt;
##         wegen der Tasten auf dem Taster an dem Aktuator &lt;br /&gt;
#########################################################################&lt;br /&gt;
define XX_FB_12_1_1_Off notify XX_FB_12_1:Btn1.off.* set WZ_Rollladen off&lt;br /&gt;
attr XX_FB_12_1_1_Off room Wohnzimmer&lt;br /&gt;
#########################################################################&lt;br /&gt;
## rechter Button Reihe 1&lt;br /&gt;
## Funktion......: Rollladen hoch im Wohnzimmer&lt;br /&gt;
## Besonderheiten: ACHTUNG, on und off sind im Wohnzimmer vertauscht&lt;br /&gt;
##         wegen der Tasten auf dem Taster an dem Aktuator &lt;br /&gt;
#########################################################################&lt;br /&gt;
define XX_FB_12_1_1_On notify XX_FB_12_1:Btn1.on.* set WZ_Rollladen on&lt;br /&gt;
attr XX_FB_12_1_1_On room Wohnzimmer&lt;br /&gt;
#########################################################################&lt;br /&gt;
## linker Button Reihe 2&lt;br /&gt;
## Funktion......: Rollladen runter im Gästezimmer&lt;br /&gt;
## Besonderheiten: on=runter off=hoch&lt;br /&gt;
#########################################################################&lt;br /&gt;
define XX_FB_12_1_2_Off notify XX_FB_12_1:Btn2.off.* set GZ_Rollladen on&lt;br /&gt;
attr XX_FB_12_1_2_Off room Wohnzimmer&lt;br /&gt;
#########################################################################&lt;br /&gt;
## rechter Button Reihe 2&lt;br /&gt;
## Funktion......: Rollladen hoch im Gästezimmer&lt;br /&gt;
## Besonderheiten: on=runter off=hoch &lt;br /&gt;
#########################################################################&lt;br /&gt;
define XX_FB_12_1_2_On notify XX_FB_12_1:Btn2.on.* set GZ_Rollladen off&lt;br /&gt;
attr XX_FB_12_1_2_On room Wohnzimmer&lt;br /&gt;
#########################################################################&lt;br /&gt;
## linker Button Reihe 3&lt;br /&gt;
## Funktion......: Rollladen runter im Flur&lt;br /&gt;
## Besonderheiten: on=runter off=hoch&lt;br /&gt;
#########################################################################&lt;br /&gt;
define XX_FB_12_1_3_Off notify XX_FB_12_1:Btn3.off.* set FL_Rollladen on&lt;br /&gt;
attr XX_FB_12_1_3_Off room Wohnzimmer&lt;br /&gt;
#########################################################################&lt;br /&gt;
## rechter Button Reihe 3&lt;br /&gt;
## Funktion......: Rollladen hoch im Flur&lt;br /&gt;
## Besonderheiten: on=runter off=hoch &lt;br /&gt;
#########################################################################&lt;br /&gt;
define XX_FB_12_1_3_On notify XX_FB_12_1:Btn3.on.* set FL_Rollladen off&lt;br /&gt;
attr XX_FB_12_1_3_On room Wohnzimmer&lt;br /&gt;
#########################################################################&lt;br /&gt;
## linker Button Reihe 4&lt;br /&gt;
## Funktion......: &lt;br /&gt;
## Besonderheiten: derzeit nicht belegt&lt;br /&gt;
#########################################################################&lt;br /&gt;
#########################################################################&lt;br /&gt;
## rechter Button Reihe 4&lt;br /&gt;
## Funktion......: &lt;br /&gt;
## Besonderheiten: derzeit nicht belegt&lt;br /&gt;
#########################################################################&lt;br /&gt;
#########################################################################&lt;br /&gt;
## linker Button Reihe 5&lt;br /&gt;
## Funktion......: &lt;br /&gt;
## Besonderheiten: derzeit nicht belegt&lt;br /&gt;
#########################################################################&lt;br /&gt;
#########################################################################&lt;br /&gt;
## rechter Button Reihe 5&lt;br /&gt;
## Funktion......: &lt;br /&gt;
## Besonderheiten: derzeit nicht belegt&lt;br /&gt;
#########################################################################&lt;br /&gt;
#########################################################################&lt;br /&gt;
## oberer Button rechts an der Fernbedienung&lt;br /&gt;
## Funktion......: &lt;br /&gt;
## Besonderheiten: derzeit nicht belegt &lt;br /&gt;
#########################################################################&lt;br /&gt;
#########################################################################&lt;br /&gt;
## unterer Button rechts an der Fernbedienung&lt;br /&gt;
## Funktion......: &lt;br /&gt;
## Besonderheiten: derzeit nicht belegt &lt;br /&gt;
#########################################################################&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um eine Kommando mit einer Taste zu verknüpfen, wird die jeweilige Taste mittels notify abgefragt. Die Identifikation um welche Fernbedienung und welche Taste es sich handelt wird durch die Kennung „Name der Fernbedienung“&amp;amp;#160;: und Rückgabestring“ abgehandelt.&lt;br /&gt;
Fhem gibt immer einen String mit den Information zurück. Dieser String enthält auch Leerzeichen. Diese Leerzeichen müssen in der Definition durch jeweils einen Punkt ersetzt werden, da Fhem sonst die ganze Befehlskette nicht richtig identifiziert. Der Stern am Ende deklariert den Rest des Rückgabestrings als nicht relevant.&lt;br /&gt;
&lt;br /&gt;
Die 12-Tasten-Fernbedienung steuert derzeit die Jalousien für Gäste-, Wohnzimmer und Flur und die Tastenbelegung ist so gestaltet, dass die jeweils linke Taste in einer Reihe die Jalousie herunter fährt und die rechte Taste diese Jalousie wieder hoch fährt. Diese Fernbedienung wird global dem Raum Wohnzimmer zugeordnet, weil das der bevorzugte Platz für diese Fernbedienung sein soll.&lt;br /&gt;
&lt;br /&gt;
=== /etc/fhem/Schlafzimmer.cfg ===&lt;br /&gt;
Im Schlafzimmer kommen hauptsächlich Schaltaktoren für Licht zur Anwendung. Eine Fernbedienung ermöglicht die Schaltungen vom Bett aus. Das Deckenlicht wird von einem Taster an der Tür oder von einer Fernbedienung geschaltet. Im Schlafzimmer sind 2 Unterputzaktoren 1fach, 1 Unterputzaktor 2fach, 1 Taster 2fach und eine 4-Tasten-Fernbedienung installiert.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#########################################################################&lt;br /&gt;
## Schlafzimmer&lt;br /&gt;
## Zweck.........: Alle Homematic Komponenten im Schlafzimmer&lt;br /&gt;
## Standort......: Schlafzimmer&lt;br /&gt;
## Typ...........: verschiedene&lt;br /&gt;
## Installation..: 15.09.2011&lt;br /&gt;
## Besonderheiten: &lt;br /&gt;
##         &lt;br /&gt;
#########################################################################&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Aktor für die senkrechten Deckenstrahler&lt;br /&gt;
#########################################################################&lt;br /&gt;
define SZ_Lampe_Decke CUL_HM xxxxxx&lt;br /&gt;
attr SZ_Lampe_Decke devInfo 010100&lt;br /&gt;
attr SZ_Lampe_Decke firmware 1.9&lt;br /&gt;
attr SZ_Lampe_Decke hmClass receiver&lt;br /&gt;
attr SZ_Lampe_Decke model HM-LC-SW1-FM&lt;br /&gt;
attr SZ_Lampe_Decke room Schlafzimmer&lt;br /&gt;
attr SZ_Lampe_Decke serialNr xxxxxxxxxx&lt;br /&gt;
attr SZ_Lampe_Decke subType switch&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Aktor für die Strahler an den Bettseiten&lt;br /&gt;
## und für die Deckenlampen in der Schräge&lt;br /&gt;
#########################################################################&lt;br /&gt;
define SZ_Lampen_Seite CUL_HM xxxxxx&lt;br /&gt;
attr SZ_Lampen_Seite devInfo 010100&lt;br /&gt;
attr SZ_Lampen_Seite firmware 1.9&lt;br /&gt;
attr SZ_Lampen_Seite hmClass receiver&lt;br /&gt;
attr SZ_Lampen_Seite model HM-LC-SW1-FM&lt;br /&gt;
attr SZ_Lampen_Seite room Schlafzimmer&lt;br /&gt;
attr SZ_Lampen_Seite serialNr xxxxxxxxxx&lt;br /&gt;
attr SZ_Lampen_Seite subType switch&lt;br /&gt;
&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Aktor für die Strahler über dem Bett links&lt;br /&gt;
## Besonderheit: Dies ist ein 2-Fach Schaltaktor&lt;br /&gt;
##        anderer Port wird für Bett rechts benutzt&lt;br /&gt;
#########################################################################&lt;br /&gt;
define SZ_Lampe_Bett_links CUL_HM xxxxxx&lt;br /&gt;
attr SZ_Lampe_Bett_links devInfo 020100&lt;br /&gt;
attr SZ_Lampe_Bett_links firmware 1.9&lt;br /&gt;
attr SZ_Lampe_Bett_links hmClass receiver&lt;br /&gt;
attr SZ_Lampe_Bett_links model HM-LC-SW2-FM&lt;br /&gt;
attr SZ_Lampe_Bett_links room Schlafzimmer&lt;br /&gt;
attr SZ_Lampe_Bett_links serialNr xxxxxxxxxx&lt;br /&gt;
attr SZ_Lampe_Bett_links subType switch&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Aktor für die Strahler über dem Bett rechts&lt;br /&gt;
## Besonderheit: Dies ist ein 2-Fach Schaltaktor&lt;br /&gt;
##        anderer Port wird für Bett links benutzt&lt;br /&gt;
#########################################################################&lt;br /&gt;
define SZ_Lampe_Bett_rechts CUL_HM xxxxxx&lt;br /&gt;
attr SZ_Lampe_Bett_rechts devInfo 020100&lt;br /&gt;
attr SZ_Lampe_Bett_rechts firmware 1.9&lt;br /&gt;
attr SZ_Lampe_Bett_rechts hmClass receiver&lt;br /&gt;
attr SZ_Lampe_Bett_rechts model HM-LC-SW2-FM&lt;br /&gt;
attr SZ_Lampe_Bett_rechts room Schlafzimmer&lt;br /&gt;
attr SZ_Lampe_Bett_rechts serialNr xxxxxxxxxx&lt;br /&gt;
attr SZ_Lampe_Bett_rechts subType switch&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Sender an der Tür&lt;br /&gt;
## schaltet Decken- und Seitenlampen ein oder aus&lt;br /&gt;
## bei einem langen Tastendruck (onLong) werden alle Deckenlampen und&lt;br /&gt;
## die Lampen an der Seite eingeschaltet, bei einem kurzen Tastendruck&lt;br /&gt;
## werden nur die Hälfte der Lampen an der Decke angeschaltet&lt;br /&gt;
#########################################################################&lt;br /&gt;
define SZ_Taster_Tuer CUL_HM xxxxxx&lt;br /&gt;
attr SZ_Taster_Tuer devInfo 020000&lt;br /&gt;
attr SZ_Taster_Tuer firmware 1.2&lt;br /&gt;
attr SZ_Taster_Tuer hmClass sender&lt;br /&gt;
attr SZ_Taster_Tuer model HM-PB-2-WM&lt;br /&gt;
attr SZ_Taster_Tuer room Schlafzimmer&lt;br /&gt;
attr SZ_Taster_Tuer serialNr xxxxxxxxxx&lt;br /&gt;
attr SZ_Taster_Tuer subType remote&lt;br /&gt;
define SZ_Taster_Tuer_On_Alles notify SZ_Taster_Tuer:Btn1.onLong.* set SZ_Lampe_Decke,SZ_Lampen_Seite on&lt;br /&gt;
attr SZ_Taster_Tuer_On_Alles room Schlafzimmer&lt;br /&gt;
define SZ_Taster_Tuer_On_Decke notify SZ_Taster_Tuer:Btn1.on.* set SZ_Lampe_Decke on&lt;br /&gt;
attr SZ_Taster_Tuer_On_Decke room Schlafzimmer&lt;br /&gt;
define SZ_Taster_Tuer_Off notify SZ_Taster_Tuer:Btn1.off.* set SZ_Lampe_Decke,SZ_Lampen_Seite off&lt;br /&gt;
attr SZ_Taster_Tuer_Off room Schlafzimmer&lt;br /&gt;
#########################################################################&lt;br /&gt;
## 4-Tastenfernbedienung&lt;br /&gt;
## Zweck.........: Lichtschaltungen im Schlafzimmer vom Bett aus&lt;br /&gt;
## Standort......: Schlafzimmer&lt;br /&gt;
## Typ...........: HM-RC-4&lt;br /&gt;
## Installation..: 23.09.2011&lt;br /&gt;
## Besonderheiten: arbeitet mit toggle&lt;br /&gt;
#########################################################################&lt;br /&gt;
define SZ_Fernbedienung_4_1 CUL_HM xxxxxx&lt;br /&gt;
attr SZ_Fernbedienung_4_1 devInfo 040000&lt;br /&gt;
attr SZ_Fernbedienung_4_1 firmware 1.3&lt;br /&gt;
attr SZ_Fernbedienung_4_1 hmClass sender&lt;br /&gt;
attr SZ_Fernbedienung_4_1 model HM-RC-4-B&lt;br /&gt;
attr SZ_Fernbedienung_4_1 room Schlafzimmer&lt;br /&gt;
attr SZ_Fernbedienung_4_1 serialNr xxxxxxxxxx&lt;br /&gt;
attr SZ_Fernbedienung_4_1 subType remote&lt;br /&gt;
#########################################################################&lt;br /&gt;
## linker Button Reihe 1&lt;br /&gt;
## Funktion......: Licht links am Bett ein-/ausschalten &lt;br /&gt;
## Besonderheiten: &lt;br /&gt;
#########################################################################&lt;br /&gt;
define SZ_FB_Btn1_off notify SZ_Fernbedienung_4_1:Btn1.off.* set SZ_Lampe_Bett_links toggle&lt;br /&gt;
attr SZ_FB_Btn1_off room Schlafzimmer&lt;br /&gt;
&lt;br /&gt;
#########################################################################&lt;br /&gt;
## rechter Button Reihe 1&lt;br /&gt;
## Funktion......: Licht rechts am Bett ein-/ausschalten &lt;br /&gt;
## Besonderheiten: &lt;br /&gt;
#########################################################################&lt;br /&gt;
define SZ_FB_Btn1_on notify SZ_Fernbedienung_4_1:Btn1.on.* set SZ_Lampe_Bett_rechts toggle&lt;br /&gt;
attr SZ_FB_Btn1_on room Schlafzimmer&lt;br /&gt;
#########################################################################&lt;br /&gt;
## linker Button Reihe 2&lt;br /&gt;
## Funktion......: Deckenlampen schalten&lt;br /&gt;
## Besonderheiten: &lt;br /&gt;
#########################################################################&lt;br /&gt;
define SZ_FB_Btn2_off notify SZ_Fernbedienung_4_1:Btn2.off.* set SZ_Lampe_Decke toggle&lt;br /&gt;
attr SZ_FB_Btn2_off room Schlafzimmer&lt;br /&gt;
#########################################################################&lt;br /&gt;
## rechter Button Reihe 2&lt;br /&gt;
## Funktion......: Seitenlampen schalten&lt;br /&gt;
## Besonderheiten: &lt;br /&gt;
#########################################################################&lt;br /&gt;
define SZ_FB_Btn2_on notify SZ_Fernbedienung_4_1:Btn2.on.* set SZ_Lampen_Seite toggle&lt;br /&gt;
attr SZ_FB_Btn2_on room Schlafzimmer&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Alternative! Um SZ_Lampe_Decke und SZ_Lampen_Seite mit einem&lt;br /&gt;
## Tastendruck zu schalten&lt;br /&gt;
## Durch dieses Notify wird zuerst SZ_Lampe_Decke eingeschaltet, dann&lt;br /&gt;
## beim nächsten Tastendruck wird SZ_Lampen_Seite dazugeschaltet und&lt;br /&gt;
## dann beim dritten Tastendruck werden beide wieder ausgeschaltet&lt;br /&gt;
## Bei Aktivierung vorher SZ_FB_Btnx.on/off deaktivieren!!!&lt;br /&gt;
#########################################################################&lt;br /&gt;
#define MyNotify notify Fernbedienung:Btn2.on.* {if(Value(&amp;quot;SZ_Lampe_Decke&amp;quot;) eq &amp;quot;on&amp;quot; &amp;amp;amp;&amp;amp;amp; Value(&amp;quot;SZ_Lampen_Seite&amp;quot;) eq &amp;quot;on&amp;quot;) {fhem &amp;quot;set SZ_Lampe_Decke,SZ_Lampen_Seite off&amp;quot;} elsif(Value(&amp;quot;SZ_Lampe_Decke&amp;quot;) eq &amp;quot;on&amp;quot; &amp;amp;amp;&amp;amp;amp; Value(&amp;quot;SZ_Lampen_Seite&amp;quot;) eq &amp;quot;off&amp;quot;) {fhem &amp;quot;set SZ_Lampen_Seite on&amp;quot;} else{fhem &amp;quot;set SZ_Lampe_Decke on&amp;quot;}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Der Taster an der Tür soll nur Licht ein- und ausschalten, daher wurde auf eine Unterscheidung zwischen einem langen und einem kurzen Tastendruck verzichtet. Da zwei verschiedene Lichtquellen zu schalten sind, müssen bei dem set Kommando beide Quellen jeweils angegeben werden. Es dürfen keine Leerzeichen in der Liste der Aktoren sein und die Aktoren müssen per Komma getrennt werden. (Achtung: &amp;quot;else if&amp;quot; muss in Perl als &amp;quot;elsif&amp;quot; geschrieben werden.)&lt;br /&gt;
&lt;br /&gt;
=== /etc/fhem/Gaestezimmer.cfg ===&lt;br /&gt;
Im Gästezimmer wird derzeit nur die Jalousie gesteuert. Hier ist nur ein Unterputzjalousieaktor installiert.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#########################################################################&lt;br /&gt;
## Gästezimmer&lt;br /&gt;
## Zweck.........: Alle Homematic Komponenten im Gästezimmer&lt;br /&gt;
## Standort......: Gästezimmer&lt;br /&gt;
## Typ...........: verschiedene&lt;br /&gt;
## Installation..: 15.09.2011&lt;br /&gt;
## Besonderheiten: &lt;br /&gt;
##         &lt;br /&gt;
#########################################################################&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Aktor für die Rollladen&lt;br /&gt;
#########################################################################&lt;br /&gt;
define GZ_Rollladen CUL_HM xxxxx&lt;br /&gt;
attr GZ_Rollladen devInfo 010100&lt;br /&gt;
attr GZ_Rollladen firmware 1.5&lt;br /&gt;
attr GZ_Rollladen hmClass receiver&lt;br /&gt;
attr GZ_Rollladen model HM-LC-BL1-FM&lt;br /&gt;
attr GZ_Rollladen room Gästezimmer&lt;br /&gt;
attr GZ_Rollladen serialNr xxxxxxxxxx&lt;br /&gt;
attr GZ_Rollladen subType blindActuator&lt;br /&gt;
attr GZ_Rollladen eventMap on:zu off:offen&lt;br /&gt;
#########################################################################&lt;br /&gt;
## eigenes Log&lt;br /&gt;
#########################################################################&lt;br /&gt;
define GZ_Rollladen_FileLog FileLog /var/log/fhem/GZ_Rollladen-%Y.log GZ_Rollladen&lt;br /&gt;
attr GZ_Rollladen_FileLog logtype text&lt;br /&gt;
attr GZ_Rollladen_FileLog room Server&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Rollladen soll fix um 08:00h jeden Tag hochfahren&lt;br /&gt;
#########################################################################&lt;br /&gt;
define GZ_Rollladen_hoch at *08:00 set GZ_Rollladen offen&lt;br /&gt;
attr GZ_Rollladen_hoch room Gästezimmer&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Rollladen soll variabel je nach Sonnenuntergang, aber&lt;br /&gt;
## nicht vor 17:00h und nicht nach 21:00h jeden Tag runterfahren&lt;br /&gt;
#########################################################################&lt;br /&gt;
define GZ_Rollladen_runter at *{sunset(0,&amp;quot;17:00&amp;quot;,&amp;quot;21:00&amp;quot;)} set GZ_Rollladen zu&lt;br /&gt;
attr GZ_Rollladen_runter room Gästezimmer&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Jalousie soll immer morgens um 8 Uhr hoch gefahren werden, wobei aufgrund der Verkabelung am Aktor Hochfahren mit dem Status off eingeleitet wird. Das Herunterfahren soll variabel aufgrund der Untergangszeit der Sonne geschehen. Siehe [[Sunset Sunrise]]. Die früheste Zeit zum Herunterfahren ist 17:00 Uhr und spätestens um 21:00 Uhr sollen die Jalousien auf jeden Fall heruntergefahren sein. Dies wird auf alle Jalousien angewendet. Zur besseren Lesbarkeit der Anzeige wurde der Status der Rollade durch Setzen des Attributes EventMap umbenannt. Wenn der Aktor den Status &#039;&#039;on&#039;&#039; meldet, dann wird &#039;&#039;zu&#039;&#039; angezeigt und alternativ bei &#039;&#039;off&#039;&#039; dann &#039;&#039;offen&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== /etc/fhem/Wohnzimmer.cfg ===&lt;br /&gt;
Im Wohnzimmer wird derzeit eine Jalousie und die Beleuchtung gesteuert. Installiert sind: ein Jalousieaktor mit Tasteraufsatz, zwei 4fach-Taster, ein Unterputzdoppelaktor.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#########################################################################&lt;br /&gt;
## Wohnzimmer&lt;br /&gt;
## Zweck.........: Alle Homematic Komponenten im Wohnzimmer&lt;br /&gt;
## Standort......: Wohnzimmer&lt;br /&gt;
## Typ...........: verschiedene&lt;br /&gt;
## Installation..: 15.09.2011&lt;br /&gt;
## Besonderheiten: ACHTUNG, on und off bei der Rollladensteuerung&lt;br /&gt;
##         ist im Wohnzimmer vertauscht on=rauf off=runter&lt;br /&gt;
#########################################################################&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Aktor für die Rollladen&lt;br /&gt;
#########################################################################&lt;br /&gt;
define WZ_Rollladen CUL_HM xxxxxx&lt;br /&gt;
attr WZ_Rollladen devInfo 010100&lt;br /&gt;
attr WZ_Rollladen firmware 1.6&lt;br /&gt;
attr WZ_Rollladen hmClass receiver&lt;br /&gt;
attr WZ_Rollladen model HM-LC-BL1-PB-FM&lt;br /&gt;
attr WZ_Rollladen room Wohnzimmer&lt;br /&gt;
attr WZ_Rollladen serialNr xxxxxxxxxx&lt;br /&gt;
attr WZ_Rollladen subType blindActuator&lt;br /&gt;
attr WZ_Rollladen eventMap on:offen off:zu&lt;br /&gt;
#########################################################################&lt;br /&gt;
## eigenes Log&lt;br /&gt;
#########################################################################&lt;br /&gt;
define WZ_Rollladen_FileLog FileLog /var/log/fhem/WZ_Rollladen-%Y.log WZ_Rollladen&lt;br /&gt;
attr WZ_Rollladen_FileLog logtype text&lt;br /&gt;
attr WZ_Rollladen_FileLog room Server&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Rollladen soll fix um 08:00h jeden Tag hochfahren&lt;br /&gt;
#########################################################################&lt;br /&gt;
define WZ_Rollladen_hoch at *08:00 set WZ_Rollladen offen&lt;br /&gt;
attr WZ_Rollladen_hoch room Wohnzimmer&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Rollladen soll variabel je nach Sonnenuntergang, aber&lt;br /&gt;
## nicht vor 17:00h und nicht nach 21:00h jeden Tag runterfahren&lt;br /&gt;
#########################################################################&lt;br /&gt;
define WZ_Rollladen_runter at *{sunset(0,&amp;quot;17:00&amp;quot;,&amp;quot;21:00&amp;quot;)} set WZ_Rollladen zu&lt;br /&gt;
attr WZ_Rollladen_runter room Wohnzimmer&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Aktor für die Lampen auf der Schrankseite des Wohnzimmers&lt;br /&gt;
##  dies ist ein gemeinsamer Aktor mit WZ_Lampe_Couch&lt;br /&gt;
#########################################################################&lt;br /&gt;
define WZ_Lampe_Schrank CUL_HM xxxxxx&lt;br /&gt;
attr WZ_Lampe_Schrank devInfo 020100&lt;br /&gt;
attr WZ_Lampe_Schrank firmware 1.9&lt;br /&gt;
attr WZ_Lampe_Schrank hmClass receiver&lt;br /&gt;
attr WZ_Lampe_Schrank model HM-LC-SW2-FM&lt;br /&gt;
attr WZ_Lampe_Schrank room Wohnzimmer&lt;br /&gt;
attr WZ_Lampe_Schrank serialNr xxxxxxxxxx&lt;br /&gt;
attr WZ_Lampe_Schrank subType switch&lt;br /&gt;
define FileLog_WZ_Lampe_Schrank FileLog /var/log/fhem/WZ_Lampe_Schrank-%Y.log WZ_Lampe_Schrank&lt;br /&gt;
attr FileLog_WZ_Lampe_Schrank logtype text&lt;br /&gt;
attr FileLog_WZ_Lampe_Schrank room Server&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Aktor für die Lampen auf der Couchseite des Wohnzimmers&lt;br /&gt;
##  dies ist ein gemeinsamer Aktor mit WZ_Lampe_Schrank&lt;br /&gt;
#########################################################################&lt;br /&gt;
define WZ_Lampe_Couch CUL_HM xxxxxx&lt;br /&gt;
attr WZ_Lampe_Couch devInfo 020100&lt;br /&gt;
attr WZ_Lampe_Couch firmware 1.9&lt;br /&gt;
attr WZ_Lampe_Couch hmClass receiver&lt;br /&gt;
attr WZ_Lampe_Couch model HM-LC-SW2-FM&lt;br /&gt;
attr WZ_Lampe_Couch room Wohnzimmer&lt;br /&gt;
attr WZ_Lampe_Couch serialNr xxxxxxxxxxx&lt;br /&gt;
attr WZ_Lampe_Couch subType switch&lt;br /&gt;
define FileLog_WZ_Lampe_Couch FileLog /var/log/fhem/WZ_Lampe_Couch-%Y.log WZ_Lampe_Couch&lt;br /&gt;
attr FileLog_WZ_Lampe_Couch logtype text&lt;br /&gt;
attr FileLog_WZ_Lampe_Couch room Server&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Doppeltaster im Wohnzimmer beim Flur&lt;br /&gt;
## Dieser Taster schaltet die Lampen im Wohnzimmer bei dem Schrank&lt;br /&gt;
## und bei der Couch&lt;br /&gt;
#########################################################################&lt;br /&gt;
define WZ_Taster CUL_HM xxxxxx&lt;br /&gt;
attr WZ_Taster devInfo 040000&lt;br /&gt;
attr WZ_Taster firmware 1.2&lt;br /&gt;
attr WZ_Taster hmClass sender&lt;br /&gt;
attr WZ_Taster model HM-PB-4-WM&lt;br /&gt;
attr WZ_Taster room Wohnzimmer&lt;br /&gt;
attr WZ_Taster serialNr xxxxxxxxxxx&lt;br /&gt;
attr WZ_Taster subType remote&lt;br /&gt;
define FileLog_WZ_Taster FileLog /var/log/fhem/WZ_Taster-%Y.log WZ_Taster&lt;br /&gt;
attr FileLog_WZ_Taster logtype text&lt;br /&gt;
attr FileLog_WZ_Taster room Server&lt;br /&gt;
define WZ_Taster_On_Links notify WZ_Taster:Btn1.on.* set WZ_Lampe_Schrank toggle&lt;br /&gt;
attr WZ_Taster_On_Links room Wohnzimmer&lt;br /&gt;
define WZ_Taster_Off_Links notify WZ_Taster:Btn1.off.* set WZ_Lampe_Schrank toggle&lt;br /&gt;
attr WZ_Taster_Off_Links room Wohnzimmer&lt;br /&gt;
define WZ_Taster_On_Rechts notify WZ_Taster:Btn2.on.* set WZ_Lampe_Couch toggle&lt;br /&gt;
attr WZ_Taster_On_Rechts room Wohnzimmer&lt;br /&gt;
define WZ_Taster_Off_Rechts notify WZ_Taster:Btn2.off.* set WZ_Lampe_Couch toggle&lt;br /&gt;
attr WZ_Taster_Off_Rechts room Wohnzimmer&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Jalousie soll immer morgens um acht Uhr hochgefahren werden, wobei aufgrund der Verkabelung am Aktor Hochfahren mit dem Status on eingeleitet wird. Dies ist anders als im Gästezimmer oder Flur! Das Herunterfahren soll variabel aufgrund der Untergangszeit der Sonne geschehen. Siehe [[Sunset Sunrise]].&lt;br /&gt;
&lt;br /&gt;
Die früheste Zeit zum Herunterfahren ist 17:00 Uhr und spätestens um 21:00 Uhr sollen die Jalousien auf jeden Fall heruntergefahren sein. Die Taster schalten egal bei welchem Tastendruck das Licht an oder aus.&lt;br /&gt;
&lt;br /&gt;
=== /etc/fhem/Flur.cfg ===&lt;br /&gt;
Im Flur werden derzeit eine Jalousie und die Beleuchtung gesteuert. Installiert sind ein  Unterputzjalousieaktor, ein 4fach Taster, zwei 2fach Taster, ein Unterputzdoppelaktor. Dadurch wurde eine Wechselschaltung simuliert.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#########################################################################&lt;br /&gt;
## Flur&lt;br /&gt;
## Zweck.........: Alle Homematic Komponenten im Flur&lt;br /&gt;
## Standort......: Flur&lt;br /&gt;
## Typ...........: verschiedene&lt;br /&gt;
## Installation..: 15.09.2011&lt;br /&gt;
## Besonderheiten: &lt;br /&gt;
##         &lt;br /&gt;
#########################################################################&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Aktor für die Rollladen&lt;br /&gt;
#########################################################################&lt;br /&gt;
define FL_Rollladen CUL_HM xxxxxx&lt;br /&gt;
attr FL_Rollladen devInfo 010100&lt;br /&gt;
attr FL_Rollladen firmware 1.5&lt;br /&gt;
attr FL_Rollladen hmClass receiver&lt;br /&gt;
attr FL_Rollladen model HM-LC-BL1-FM&lt;br /&gt;
attr FL_Rollladen room Flur&lt;br /&gt;
attr FL_Rollladen serialNr xxxxxxxxxx&lt;br /&gt;
attr FL_Rollladen subType blindActuator&lt;br /&gt;
attr FL_Rollladen eventMap on:zu off:offen&lt;br /&gt;
#########################################################################&lt;br /&gt;
## eigenes Log&lt;br /&gt;
#########################################################################&lt;br /&gt;
define FL_Rollladen_FileLog FileLog /var/log/fhem/FL_Rollladen-%Y.log FL_Rollladen&lt;br /&gt;
attr FL_Rollladen_FileLog logtype text&lt;br /&gt;
attr FL_Rollladen_FileLog room Server&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Rollladen soll fix um 08:00h jeden Tag hochfahren&lt;br /&gt;
#########################################################################&lt;br /&gt;
define FL_Rollladen_hoch at *08:00 set FL_Rollladen offen&lt;br /&gt;
attr FL_Rollladen_hoch room Flur&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Rollladen soll variabel je nach Sonnenuntergang, aber&lt;br /&gt;
## nicht vor 17:00h und nicht nach 21:00h jeden Tag runterfahren&lt;br /&gt;
#########################################################################&lt;br /&gt;
define FL_Rollladen_runter at *{sunset(0,&amp;quot;17:00&amp;quot;,&amp;quot;21:00&amp;quot;)} set FL_Rollladen zu&lt;br /&gt;
attr FL_Rollladen_runter room Flur&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Aktor für die Lampen im FLur bei der Garderobe&lt;br /&gt;
##  Dies ist ein gemeinsamer Aktor mit FL_Lampe_Treppe&lt;br /&gt;
#########################################################################&lt;br /&gt;
define FL_Lampe_Garderobe CUL_HM xxxxxx&lt;br /&gt;
attr FL_Lampe_Garderobe devInfo 020100&lt;br /&gt;
attr FL_Lampe_Garderobe firmware 1.9&lt;br /&gt;
attr FL_Lampe_Garderobe hmClass receiver&lt;br /&gt;
attr FL_Lampe_Garderobe model HM-LC-SW2-FM&lt;br /&gt;
attr FL_Lampe_Garderobe room Flur&lt;br /&gt;
attr FL_Lampe_Garderobe serialNr xxxxxxxxxx&lt;br /&gt;
attr FL_Lampe_Garderobe subType switch&lt;br /&gt;
define FileLog_FL_Lampe_Garderobe FileLog /var/log/fhem/FL_Lampe_Garderobe-%Y.log FL_Lampe_Garderobe&lt;br /&gt;
attr FileLog_FL_Lampe_Garderobe logtype text&lt;br /&gt;
attr FileLog_FL_Lampe_Garderobe room Server&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Aktor für die Lampen im FLur bei der kleinen Treppe&lt;br /&gt;
##  Dies ist ein gemeinsamer Aktor mit FL_Lampe_Garderobe&lt;br /&gt;
#########################################################################&lt;br /&gt;
define FL_Lampe_Treppe CUL_HM xxxxxx&lt;br /&gt;
attr FL_Lampe_Treppe devInfo 020100&lt;br /&gt;
attr FL_Lampe_Treppe firmware 1.9&lt;br /&gt;
attr FL_Lampe_Treppe hmClass receiver&lt;br /&gt;
attr FL_Lampe_Treppe model HM-LC-SW2-FM&lt;br /&gt;
attr FL_Lampe_Treppe room Flur&lt;br /&gt;
attr FL_Lampe_Treppe serialNr xxxxxxxxxx&lt;br /&gt;
attr FL_Lampe_Treppe subType switch&lt;br /&gt;
define FileLog_FL_Lampe_Treppe FileLog /var/log/fhem/FL_Lampe_Treppe-%Y.log FL_Lampe_Treppe&lt;br /&gt;
attr FileLog_FL_Lampe_Treppe logtype text&lt;br /&gt;
attr FileLog_FL_Lampe_Treppe room Server&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Taster im Flur beim Eingang Badezimmer&lt;br /&gt;
## Dieser Taster schaltet die Lampen im Flur bei der kleinen Treppe&lt;br /&gt;
## arbeitet im Wechsel mit FL_Taster&lt;br /&gt;
#########################################################################&lt;br /&gt;
define FL_Taster_Bad CUL_HM xxxxxx&lt;br /&gt;
attr FL_Taster_Bad devInfo 020000&lt;br /&gt;
attr FL_Taster_Bad firmware 1.2&lt;br /&gt;
attr FL_Taster_Bad hmClass sender&lt;br /&gt;
attr FL_Taster_Bad model HM-PB-2-WM&lt;br /&gt;
attr FL_Taster_Bad room Flur&lt;br /&gt;
attr FL_Taster_Bad serialNr xxxxxxxxxx&lt;br /&gt;
attr FL_Taster_Bad subType remote&lt;br /&gt;
define FileLog_FL_Taster_Bad FileLog /var/log/fhem/FL_Taster_Bad-%Y.log FL_Taster_Bad&lt;br /&gt;
attr FileLog_FL_Taster_Bad logtype text&lt;br /&gt;
attr FileLog_FL_Taster_Bad room Server&lt;br /&gt;
define FL_Taster_Bad_On notify FL_Taster_Bad:Btn1.on.* set FL_Lampe_Treppe toggle&lt;br /&gt;
attr FL_Taster_Bad_On room Flur&lt;br /&gt;
define FL_Taster_Bad_Off notify FL_Taster_Bad:Btn1.off.* set FL_Lampe_Treppe toggle&lt;br /&gt;
attr FL_Taster_Bad_Off room Flur&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Taster im Flur beim Wohnungseingang&lt;br /&gt;
##  Dieser Taster schaltet die Lampen im Flur bei der Garderobe&lt;br /&gt;
##  arbeitet im Wechsel mit FL_Taster&lt;br /&gt;
#########################################################################&lt;br /&gt;
define FL_Taster_Eingang CUL_HM xxxxxx&lt;br /&gt;
attr FL_Taster_Eingang devInfo 020000&lt;br /&gt;
attr FL_Taster_Eingang firmware 1.2&lt;br /&gt;
attr FL_Taster_Eingang hmClass sender&lt;br /&gt;
attr FL_Taster_Eingang model HM-PB-2-WM&lt;br /&gt;
attr FL_Taster_Eingang room Flur&lt;br /&gt;
attr FL_Taster_Eingang serialNr xxxxxxxxxx&lt;br /&gt;
attr FL_Taster_Eingang subType remote&lt;br /&gt;
define FileLog_FL_Taster_Eingang FileLog /var/log/fhem/FL_Taster_Eingang-%Y.log FL_Taster_Eingang&lt;br /&gt;
attr FileLog_FL_Taster_Eingang logtype text&lt;br /&gt;
attr FileLog_FL_Taster_Eingang room Server&lt;br /&gt;
define FL_Taster_Eingang_On notify FL_Taster_Eingang:Btn1.on.* set FL_Lampe_Garderobe toggle&lt;br /&gt;
attr FL_Taster_Eingang_On room Flur&lt;br /&gt;
define FL_Taster_Eingang_Off notify FL_Taster_Eingang:Btn1.off.* set FL_Lampe_Garderobe toggle&lt;br /&gt;
attr FL_Taster_Eingang_Off room Flur&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Doppeltaster im Flur beim Wohnzimmer&lt;br /&gt;
## Dieser Taster schaltet die Lampen im Flur bei der Garderobe und&lt;br /&gt;
## im Flur bei der kleinen Treppe&lt;br /&gt;
##  Diese Taster arbeiten als Wechselschaltung &lt;br /&gt;
#########################################################################&lt;br /&gt;
define FL_Taster CUL_HM xxxxxx&lt;br /&gt;
attr FL_Taster devInfo 040000&lt;br /&gt;
attr FL_Taster firmware 1.2&lt;br /&gt;
attr FL_Taster hmClass sender&lt;br /&gt;
attr FL_Taster model HM-PB-4-WM&lt;br /&gt;
attr FL_Taster room Flur&lt;br /&gt;
attr FL_Taster serialNr xxxxxxxxxx&lt;br /&gt;
attr FL_Taster subType remote&lt;br /&gt;
define FileLog_FL_Taster FileLog /var/log/fhem/FL_Taster-%Y.log FL_Taster&lt;br /&gt;
attr FileLog_FL_Taster logtype text&lt;br /&gt;
attr FileLog_FL_Taster room Server&lt;br /&gt;
define FL_Taster_On_Links notify FL_Taster:Btn1.on.* set FL_Lampe_Treppe toggle&lt;br /&gt;
attr FL_Taster_On_Links room Flur&lt;br /&gt;
define FL_Taster_Off_Links notify FL_Taster:Btn1.off.* set FL_Lampe_Treppe toggle&lt;br /&gt;
attr FL_Taster_Off_Links room Flur&lt;br /&gt;
define FL_Taster_On_Rechts notify FL_Taster:Btn2.on.* set FL_Lampe_Garderobe toggle&lt;br /&gt;
attr FL_Taster_On_Rechts room Flur&lt;br /&gt;
define FL_Taster_Off_Rechts notify FL_Taster:Btn2.off.* set FL_Lampe_Garderobe toggle&lt;br /&gt;
attr FL_Taster_Off_Rechts room Flur&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Jalousie soll immer morgens um 8 Uhr hoch gefahren werden, wobei aufgrund der Verkabelung am Aktor Hochfahren mit dem Status off eingeleitet wird. Das Herunterfahren soll variabel aufgrund der Untergangszeit der Sonne geschehen. Siehe [[Sunset Sunrise]].&lt;br /&gt;
&lt;br /&gt;
Die früheste Zeit zum Herunterfahren ist 17:00 Uhr und spätestens um 21:00 Uhr sollen die Jalousien auf jeden Fall heruntergefahren sein. Mit den Tastern werden 2 Wechselschaltungen simuliert, wobei derzeit keine besonderen Schaltvorgänge ermöglicht werden.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Examples]]&lt;/div&gt;</summary>
		<author><name>Yfhem</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Jalousie_und_Beleuchtung_in_mehreren_R%C3%A4umen&amp;diff=3490</id>
		<title>Jalousie und Beleuchtung in mehreren Räumen</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Jalousie_und_Beleuchtung_in_mehreren_R%C3%A4umen&amp;diff=3490"/>
		<updated>2013-11-12T19:01:52Z</updated>

		<summary type="html">&lt;p&gt;Yfhem: Added ref to Sunset Sunrise. Docu here was a little out-of-date.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dies ist die Beschreibung einer Fhem-Konfiguration, die zur Steuerung einer Hausautomation auf Basis von [[HomeMatic]] dient. Gesteuert werden in verschiedenen Räumen das &#039;&#039;&#039;Licht und die Jalousien&#039;&#039;&#039;. Die Länge dieser Beschreibung soll nicht abschreckend wirken, viele Zeilen sind Kommentare oder durch den &#039;&#039;autocreate&#039;&#039; Prozeß erzeugte Zeilen!&lt;br /&gt;
&lt;br /&gt;
== Verwendete Hard- und Software ==&lt;br /&gt;
Als [[:Kategorie:Server Hardware|Server]] dient ein PC mit einem Athlon 64 X2 Dual Core Prozessor 6000+, 4 GB Hauptspeicher, 2 TB gespiegeltem Diskspeicher und Gigabit Ethernet. Auf dem Server ist ein Ubuntu 11.04 Serveredition installiert, die automatisch auf dem neuesten Stand gehalten wird. Perl ist in der Version 5.10.1 vorhanden. Fhem ist dabei nur eine von vielen Applikationen, die auf dem Server laufen.&lt;br /&gt;
&lt;br /&gt;
Der Server kann über das Ethernet im Hausnetz auf eine [[AVM Fritz!Box|Fritzbox&amp;amp;nbsp;7170]] zugreifen, die wiederum mittels WLAN mit einer Fritzbox&amp;amp;nbsp;3170 verbunden ist, die als WLAN-Repeater dient. An die 3170 ist als Hauszentrale ein HomeMatic Lan [[Interface]] ([[HMLAN Konfigurator]]) angeschlossen.&lt;br /&gt;
&lt;br /&gt;
Der CPU-Verbrauch hält sich sehr in Grenzen, bei einer stichprobenartigen Überwachung hat Fhem etwa 5-6 CPU Sekunden verbraucht in 24 Stunden.&lt;br /&gt;
&lt;br /&gt;
[[File:Konfiguration-Ethernet.jpg|628px]]&lt;br /&gt;
&lt;br /&gt;
Folgende HomeMatic Komponenten kommen zum Einsatz:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Produktcode &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Funktion &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Anzahl&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; HM-CFG-LAN &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; LanInterface &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 1&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; HM-RC-12-W &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Funkfernbedienung 12-Tasten &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 1&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; HM-RC-4-B &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Funkfernbedienung 4-Tasten &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 1&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; HM-PB-2-WM &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Funk-Wandtaster 2fach &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 3&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; HM-PB-4-WM &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Funk-Wandtaster 4fach &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; HM-LC-Sw1-FM &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Funk-Schaltaktor 1-fach, Unterputzmontage &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; HM-LC-Sw2-FM &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Funk-Schaltaktor 2-fach, Unterputzmontage &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 3&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; HM-LC-Bl1-FM &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Funk-Jalousieaktor 1-fach, Unterputzmontage &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; HM-LC-Sw1PB-FM &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Funk-Schaltaktor 1-fach, Unterputzmontage mit Tasteraufsatz &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 1&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Namensregeln&#039;&#039;&#039;: Alle Definitionen, die NICHT eindeutig einem Raum zuzuordnen sind, erhalten ein XX_ an den Anfang, alle anderen Definitionen erhalten eine der folgenden Kennungen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Kennung &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Raum&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; AK_ &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Arbeitskeller&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; BA_ &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Bad&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; BU_ &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Büro&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; DB &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Dachboden&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; FL_ &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Flur&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; GA_ &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Garage&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; KU_ &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Küche&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; SK_ &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Saunakeller&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; SZ_ &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Schlafzimmer&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; TG_ &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Terasse/Garten&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; TH_ &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Treppenhaus&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; VK_ &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Vorratskeller&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; WK_ &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Waschkeller&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; WZ_ &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Wohnzimmer&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Konfigurationsdateien ==&lt;br /&gt;
Alle Dateien, bis auf fhem.cfg, befinden sich in /etc/fhem. Alle Komponenten, die nicht physikalisch einem Raum zuzuordnen sind (Logs, Globales, etc.) wurden dem virtuellen Raum &#039;&#039;Server&#039;&#039; zugeordnet.&lt;br /&gt;
&lt;br /&gt;
=== /etc/fhem.cfg ===&lt;br /&gt;
Die Datei /etc/fhem.cfg ist der Haupteinstiegspunkt für die Konfiguration. Aus Gründen der besseren Wartbarkeit beinhaltet die Datei nur include Anweisungen, mit der andere Dateien aus dieser Datei heraus aufgerufen werden. Das hat den Vorteil, dass Kommentare in den include Dateien erhalten bleiben. Dies ist (bzw. war seinerzeit) nicht der Fall für fhem.cfg, wenn man die Funktion autocreate verwendet. Attribute für die Definition &#039;&#039;global&#039;&#039; dürfen nicht aus der fhem.cfg ausgelagert werden, sie müssen Bestandteil der fhem.cfg bleiben.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr global autoload_undefined_devices 1&lt;br /&gt;
attr global logfile /var/log/fhem/fhem-%Y-%m.log&lt;br /&gt;
attr global modpath /usr/share/fhem&lt;br /&gt;
attr global port 7072&lt;br /&gt;
attr global room Server&lt;br /&gt;
attr global statefile /var/log/fhem/fhem.save&lt;br /&gt;
include /etc/fhem/Web.cfg&lt;br /&gt;
include /etc/fhem/Autocreate.cfg&lt;br /&gt;
include /etc/fhem/LanInterface.cfg&lt;br /&gt;
include /etc/fhem/Fernbedienung.cfg&lt;br /&gt;
include /etc/fhem/Schlafzimmer.cfg&lt;br /&gt;
include /etc/fhem/Gaestezimmer.cfg&lt;br /&gt;
include /etc/fhem/Wohnzimmer.cfg&lt;br /&gt;
# include /etc/fhem/Buero.cfg&lt;br /&gt;
include /etc/fhem/Flur.cfg&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== /etc/fhem/Web.cfg ===&lt;br /&gt;
Alle relevanten Konfigurationsparameter für den Webzugriff sind in dieser Datei zu finden. Es sind die aus der Installation bekannten Standardwerte übernommen worden.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#########################################################################&lt;br /&gt;
## Webdefinitionen&lt;br /&gt;
## Zweck.........: Definitionen für den Zugriff auf den Webserver&lt;br /&gt;
## Standort......: Server&lt;br /&gt;
## Typ...........: &lt;br /&gt;
## Installation..: 15.09.2011&lt;br /&gt;
## Besonderheiten: &lt;br /&gt;
##         &lt;br /&gt;
#########################################################################&lt;br /&gt;
define XX_WEB FHEMWEB 8083 global&lt;br /&gt;
attr XX_WEB fwcompress 0&lt;br /&gt;
attr XX_WEB room Server&lt;br /&gt;
define XX_WEBphone FHEMWEB 8084&lt;br /&gt;
attr XX_WEBphone room Server&lt;br /&gt;
attr XX_WEBphone smallscreen 1&lt;br /&gt;
define XX_WEBtablet FHEMWEB 8085&lt;br /&gt;
attr XX_WEBtablet room Server&lt;br /&gt;
attr XX_WEBtablet touchpad 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== /etc/fhem/Autocreate.cfg ===&lt;br /&gt;
Diese Datei enthält alle wichtigen Information zu dem Autocreate Prozess. Keine Änderung gegenüber den Standardwerten.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#########################################################################&lt;br /&gt;
## Autocreate Definitionen&lt;br /&gt;
## Zweck.........: Autocreate aktivieren&lt;br /&gt;
## Standort......: Server&lt;br /&gt;
## Typ...........: &lt;br /&gt;
## Installation..: 15.09.2011&lt;br /&gt;
## Besonderheiten: &lt;br /&gt;
##         &lt;br /&gt;
#########################################################################&lt;br /&gt;
define XX_Autocreate autocreate&lt;br /&gt;
attr XX_Autocreate autosave 1&lt;br /&gt;
attr XX_Autocreate device_room&amp;amp;#160;%TYPE&lt;br /&gt;
attr XX_Autocreate filelog /var/log/fhem/%NAME-%Y.log&lt;br /&gt;
attr XX_Autocreate room Server&lt;br /&gt;
attr XX_Autocreate weblink 1&lt;br /&gt;
attr XX_Autocreate weblink_room Plots&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== /etc/fhem/LanInterface.cfg ===&lt;br /&gt;
Das Lan-Interface stellt das Bindeglied zwischen dem Server und den einzelnen Homematic-Komponenten dar. Es ist mit einem Ethernetnetzwerkkabel an das Netzwerk angeschlossen. Dem Lan-Interface wurde eine feste IP-Adresse vergeben, um immer auf der gleichen Adresse ansprechbar zu sein. Der Zugriff auf das Interface geschieht über Port 1000.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#########################################################################&lt;br /&gt;
## Lan Adapter&lt;br /&gt;
## Zweck.........: Bindeglied zwischen Server/fhem und Homematic Aktoren und Sender&lt;br /&gt;
## Standort......: Gästezimmer&lt;br /&gt;
## Typ...........: &lt;br /&gt;
## Installation..: 15.09.2011&lt;br /&gt;
## Besonderheiten: feste IP-Adresse 192.168.0.6 Port 1000&lt;br /&gt;
##         wird an 3170 WLAN-Repeater betrieben wegen besserer Abdeckung&lt;br /&gt;
#########################################################################&lt;br /&gt;
define XX_LANInterface HMLAN 192.168.0.6:1000&lt;br /&gt;
attr XX_LANInterface hmId xxxxxx&lt;br /&gt;
attr XX_LANInterface room Gästezimmer&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== /etc/fhem/Fernbedienung.cfg ===&lt;br /&gt;
Fernbedienungen sind nicht an einen Standort gebunden und können bewegt werden, daher eine eigene Konfiguration, wenn die Fernbedienung nicht einem Zimmer ausschließlich zugeordnet ist.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#########################################################################&lt;br /&gt;
## Fernbedienungen&lt;br /&gt;
## Zweck.........: alle verfügbaren Sender, wenn sie nicht einem Raum &lt;br /&gt;
##         unmittelbar zugeordnet sind&lt;br /&gt;
## Standort......: verschiedene&lt;br /&gt;
## Typ...........: verschiedene&lt;br /&gt;
## Installation..: 15.09.2011 12-Tasten-Fernbedienung&lt;br /&gt;
## Besonderheiten: &lt;br /&gt;
#########################################################################&lt;br /&gt;
#########################################################################&lt;br /&gt;
## 12-Tasten Fernbedienung&lt;br /&gt;
## Zweck.........: Rollladensteuerung, Licht im Wohnzimmer und Flur&lt;br /&gt;
##         Scheinwerfer im Garten&lt;br /&gt;
## Standort......: normalerweise Wohnzimmer&lt;br /&gt;
## Typ...........: HM-RC-12&lt;br /&gt;
## Installation..: 15.09.2011 12-Tasten-Fernbedienung&lt;br /&gt;
## Besonderheiten: es wird nicht zwischen langem und kurzem Tasten-&lt;br /&gt;
##         druck unterschieden&lt;br /&gt;
#########################################################################&lt;br /&gt;
define XX_FB_12_1 CUL_HM xxxxxx&lt;br /&gt;
attr XX_FB_12_1 devInfo 0C0000&lt;br /&gt;
attr XX_FB_12_1 firmware 1.1&lt;br /&gt;
attr XX_FB_12_1 hmClass sender&lt;br /&gt;
attr XX_FB_12_1 model HM-RC-12&lt;br /&gt;
attr XX_FB_12_1 room Wohnzimmer&lt;br /&gt;
attr XX_FB_12_1 serialNr xxxxxxxxxx&lt;br /&gt;
attr XX_FB_12_1 subType remote&lt;br /&gt;
&lt;br /&gt;
#########################################################################&lt;br /&gt;
## linker Button Reihe 1&lt;br /&gt;
## Funktion......: Rollladen runter im Wohnzimmer&lt;br /&gt;
## Besonderheiten: ACHTUNG, on und off sind im Wohnzimmer vertauscht&lt;br /&gt;
##         wegen der Tasten auf dem Taster an dem Aktuator &lt;br /&gt;
#########################################################################&lt;br /&gt;
define XX_FB_12_1_1_Off notify XX_FB_12_1:Btn1.off.* set WZ_Rollladen off&lt;br /&gt;
attr XX_FB_12_1_1_Off room Wohnzimmer&lt;br /&gt;
#########################################################################&lt;br /&gt;
## rechter Button Reihe 1&lt;br /&gt;
## Funktion......: Rollladen hoch im Wohnzimmer&lt;br /&gt;
## Besonderheiten: ACHTUNG, on und off sind im Wohnzimmer vertauscht&lt;br /&gt;
##         wegen der Tasten auf dem Taster an dem Aktuator &lt;br /&gt;
#########################################################################&lt;br /&gt;
define XX_FB_12_1_1_On notify XX_FB_12_1:Btn1.on.* set WZ_Rollladen on&lt;br /&gt;
attr XX_FB_12_1_1_On room Wohnzimmer&lt;br /&gt;
#########################################################################&lt;br /&gt;
## linker Button Reihe 2&lt;br /&gt;
## Funktion......: Rollladen runter im Gästezimmer&lt;br /&gt;
## Besonderheiten: on=runter off=hoch&lt;br /&gt;
#########################################################################&lt;br /&gt;
define XX_FB_12_1_2_Off notify XX_FB_12_1:Btn2.off.* set GZ_Rollladen on&lt;br /&gt;
attr XX_FB_12_1_2_Off room Wohnzimmer&lt;br /&gt;
#########################################################################&lt;br /&gt;
## rechter Button Reihe 2&lt;br /&gt;
## Funktion......: Rollladen hoch im Gästezimmer&lt;br /&gt;
## Besonderheiten: on=runter off=hoch &lt;br /&gt;
#########################################################################&lt;br /&gt;
define XX_FB_12_1_2_On notify XX_FB_12_1:Btn2.on.* set GZ_Rollladen off&lt;br /&gt;
attr XX_FB_12_1_2_On room Wohnzimmer&lt;br /&gt;
#########################################################################&lt;br /&gt;
## linker Button Reihe 3&lt;br /&gt;
## Funktion......: Rollladen runter im Flur&lt;br /&gt;
## Besonderheiten: on=runter off=hoch&lt;br /&gt;
#########################################################################&lt;br /&gt;
define XX_FB_12_1_3_Off notify XX_FB_12_1:Btn3.off.* set FL_Rollladen on&lt;br /&gt;
attr XX_FB_12_1_3_Off room Wohnzimmer&lt;br /&gt;
#########################################################################&lt;br /&gt;
## rechter Button Reihe 3&lt;br /&gt;
## Funktion......: Rollladen hoch im Flur&lt;br /&gt;
## Besonderheiten: on=runter off=hoch &lt;br /&gt;
#########################################################################&lt;br /&gt;
define XX_FB_12_1_3_On notify XX_FB_12_1:Btn3.on.* set FL_Rollladen off&lt;br /&gt;
attr XX_FB_12_1_3_On room Wohnzimmer&lt;br /&gt;
#########################################################################&lt;br /&gt;
## linker Button Reihe 4&lt;br /&gt;
## Funktion......: &lt;br /&gt;
## Besonderheiten: derzeit nicht belegt&lt;br /&gt;
#########################################################################&lt;br /&gt;
#########################################################################&lt;br /&gt;
## rechter Button Reihe 4&lt;br /&gt;
## Funktion......: &lt;br /&gt;
## Besonderheiten: derzeit nicht belegt&lt;br /&gt;
#########################################################################&lt;br /&gt;
#########################################################################&lt;br /&gt;
## linker Button Reihe 5&lt;br /&gt;
## Funktion......: &lt;br /&gt;
## Besonderheiten: derzeit nicht belegt&lt;br /&gt;
#########################################################################&lt;br /&gt;
#########################################################################&lt;br /&gt;
## rechter Button Reihe 5&lt;br /&gt;
## Funktion......: &lt;br /&gt;
## Besonderheiten: derzeit nicht belegt&lt;br /&gt;
#########################################################################&lt;br /&gt;
#########################################################################&lt;br /&gt;
## oberer Button rechts an der Fernbedienung&lt;br /&gt;
## Funktion......: &lt;br /&gt;
## Besonderheiten: derzeit nicht belegt &lt;br /&gt;
#########################################################################&lt;br /&gt;
#########################################################################&lt;br /&gt;
## unterer Button rechts an der Fernbedienung&lt;br /&gt;
## Funktion......: &lt;br /&gt;
## Besonderheiten: derzeit nicht belegt &lt;br /&gt;
#########################################################################&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um eine Kommando mit einer Taste zu verknüpfen, wird die jeweilige Taste mittels notify abgefragt. Die Identifikation um welche Fernbedienung und welche Taste es sich handelt wird durch die Kennung „Name der Fernbedienung“&amp;amp;#160;: und Rückgabestring“ abgehandelt.&lt;br /&gt;
Fhem gibt immer einen String mit den Information zurück. Dieser String enthält auch Leerzeichen. Diese Leerzeichen müssen in der Definition durch jeweils einen Punkt ersetzt werden, da Fhem sonst die ganze Befehlskette nicht richtig identifiziert. Der Stern am Ende deklariert den Rest des Rückgabestrings als nicht relevant.&lt;br /&gt;
&lt;br /&gt;
Die 12-Tasten-Fernbedienung steuert derzeit die Jalousien für Gäste-, Wohnzimmer und Flur und die Tastenbelegung ist so gestaltet, dass die jeweils linke Taste in einer Reihe die Jalousie herunter fährt und die rechte Taste diese Jalousie wieder hoch fährt. Diese Fernbedienung wird global dem Raum Wohnzimmer zugeordnet, weil das der bevorzugte Platz für diese Fernbedienung sein soll.&lt;br /&gt;
&lt;br /&gt;
=== /etc/fhem/Schlafzimmer.cfg ===&lt;br /&gt;
Im Schlafzimmer kommen hauptsächlich Schaltaktoren für Licht zur Anwendung. Eine Fernbedienung ermöglicht die Schaltungen vom Bett aus. Das Deckenlicht wird von einem Taster an der Tür oder von einer Fernbedienung geschaltet. Im Schlafzimmer sind 2 Unterputzaktoren 1fach, 1 Unterputzaktor 2fach, 1 Taster 2fach und eine 4-Tasten-Fernbedienung installiert.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#########################################################################&lt;br /&gt;
## Schlafzimmer&lt;br /&gt;
## Zweck.........: Alle Homematic Komponenten im Schlafzimmer&lt;br /&gt;
## Standort......: Schlafzimmer&lt;br /&gt;
## Typ...........: verschiedene&lt;br /&gt;
## Installation..: 15.09.2011&lt;br /&gt;
## Besonderheiten: &lt;br /&gt;
##         &lt;br /&gt;
#########################################################################&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Aktor für die senkrechten Deckenstrahler&lt;br /&gt;
#########################################################################&lt;br /&gt;
define SZ_Lampe_Decke CUL_HM xxxxxx&lt;br /&gt;
attr SZ_Lampe_Decke devInfo 010100&lt;br /&gt;
attr SZ_Lampe_Decke firmware 1.9&lt;br /&gt;
attr SZ_Lampe_Decke hmClass receiver&lt;br /&gt;
attr SZ_Lampe_Decke model HM-LC-SW1-FM&lt;br /&gt;
attr SZ_Lampe_Decke room Schlafzimmer&lt;br /&gt;
attr SZ_Lampe_Decke serialNr xxxxxxxxxx&lt;br /&gt;
attr SZ_Lampe_Decke subType switch&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Aktor für die Strahler an den Bettseiten&lt;br /&gt;
## und für die Deckenlampen in der Schräge&lt;br /&gt;
#########################################################################&lt;br /&gt;
define SZ_Lampen_Seite CUL_HM xxxxxx&lt;br /&gt;
attr SZ_Lampen_Seite devInfo 010100&lt;br /&gt;
attr SZ_Lampen_Seite firmware 1.9&lt;br /&gt;
attr SZ_Lampen_Seite hmClass receiver&lt;br /&gt;
attr SZ_Lampen_Seite model HM-LC-SW1-FM&lt;br /&gt;
attr SZ_Lampen_Seite room Schlafzimmer&lt;br /&gt;
attr SZ_Lampen_Seite serialNr xxxxxxxxxx&lt;br /&gt;
attr SZ_Lampen_Seite subType switch&lt;br /&gt;
&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Aktor für die Strahler über dem Bett links&lt;br /&gt;
## Besonderheit: Dies ist ein 2-Fach Schaltaktor&lt;br /&gt;
##        anderer Port wird für Bett rechts benutzt&lt;br /&gt;
#########################################################################&lt;br /&gt;
define SZ_Lampe_Bett_links CUL_HM xxxxxx&lt;br /&gt;
attr SZ_Lampe_Bett_links devInfo 020100&lt;br /&gt;
attr SZ_Lampe_Bett_links firmware 1.9&lt;br /&gt;
attr SZ_Lampe_Bett_links hmClass receiver&lt;br /&gt;
attr SZ_Lampe_Bett_links model HM-LC-SW2-FM&lt;br /&gt;
attr SZ_Lampe_Bett_links room Schlafzimmer&lt;br /&gt;
attr SZ_Lampe_Bett_links serialNr xxxxxxxxxx&lt;br /&gt;
attr SZ_Lampe_Bett_links subType switch&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Aktor für die Strahler über dem Bett rechts&lt;br /&gt;
## Besonderheit: Dies ist ein 2-Fach Schaltaktor&lt;br /&gt;
##        anderer Port wird für Bett links benutzt&lt;br /&gt;
#########################################################################&lt;br /&gt;
define SZ_Lampe_Bett_rechts CUL_HM xxxxxx&lt;br /&gt;
attr SZ_Lampe_Bett_rechts devInfo 020100&lt;br /&gt;
attr SZ_Lampe_Bett_rechts firmware 1.9&lt;br /&gt;
attr SZ_Lampe_Bett_rechts hmClass receiver&lt;br /&gt;
attr SZ_Lampe_Bett_rechts model HM-LC-SW2-FM&lt;br /&gt;
attr SZ_Lampe_Bett_rechts room Schlafzimmer&lt;br /&gt;
attr SZ_Lampe_Bett_rechts serialNr xxxxxxxxxx&lt;br /&gt;
attr SZ_Lampe_Bett_rechts subType switch&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Sender an der Tür&lt;br /&gt;
## schaltet Decken- und Seitenlampen ein oder aus&lt;br /&gt;
## bei einem langen Tastendruck (onLong) werden alle Deckenlampen und&lt;br /&gt;
## die Lampen an der Seite eingeschaltet, bei einem kurzen Tastendruck&lt;br /&gt;
## werden nur die Hälfte der Lampen an der Decke angeschaltet&lt;br /&gt;
#########################################################################&lt;br /&gt;
define SZ_Taster_Tuer CUL_HM xxxxxx&lt;br /&gt;
attr SZ_Taster_Tuer devInfo 020000&lt;br /&gt;
attr SZ_Taster_Tuer firmware 1.2&lt;br /&gt;
attr SZ_Taster_Tuer hmClass sender&lt;br /&gt;
attr SZ_Taster_Tuer model HM-PB-2-WM&lt;br /&gt;
attr SZ_Taster_Tuer room Schlafzimmer&lt;br /&gt;
attr SZ_Taster_Tuer serialNr xxxxxxxxxx&lt;br /&gt;
attr SZ_Taster_Tuer subType remote&lt;br /&gt;
define SZ_Taster_Tuer_On_Alles notify SZ_Taster_Tuer:Btn1.onLong.* set SZ_Lampe_Decke,SZ_Lampen_Seite on&lt;br /&gt;
attr SZ_Taster_Tuer_On_Alles room Schlafzimmer&lt;br /&gt;
define SZ_Taster_Tuer_On_Decke notify SZ_Taster_Tuer:Btn1.on.* set SZ_Lampe_Decke on&lt;br /&gt;
attr SZ_Taster_Tuer_On_Decke room Schlafzimmer&lt;br /&gt;
define SZ_Taster_Tuer_Off notify SZ_Taster_Tuer:Btn1.off.* set SZ_Lampe_Decke,SZ_Lampen_Seite off&lt;br /&gt;
attr SZ_Taster_Tuer_Off room Schlafzimmer&lt;br /&gt;
#########################################################################&lt;br /&gt;
## 4-Tastenfernbedienung&lt;br /&gt;
## Zweck.........: Lichtschaltungen im Schlafzimmer vom Bett aus&lt;br /&gt;
## Standort......: Schlafzimmer&lt;br /&gt;
## Typ...........: HM-RC-4&lt;br /&gt;
## Installation..: 23.09.2011&lt;br /&gt;
## Besonderheiten: arbeitet mit toggle&lt;br /&gt;
#########################################################################&lt;br /&gt;
define SZ_Fernbedienung_4_1 CUL_HM xxxxxx&lt;br /&gt;
attr SZ_Fernbedienung_4_1 devInfo 040000&lt;br /&gt;
attr SZ_Fernbedienung_4_1 firmware 1.3&lt;br /&gt;
attr SZ_Fernbedienung_4_1 hmClass sender&lt;br /&gt;
attr SZ_Fernbedienung_4_1 model HM-RC-4-B&lt;br /&gt;
attr SZ_Fernbedienung_4_1 room Schlafzimmer&lt;br /&gt;
attr SZ_Fernbedienung_4_1 serialNr xxxxxxxxxx&lt;br /&gt;
attr SZ_Fernbedienung_4_1 subType remote&lt;br /&gt;
#########################################################################&lt;br /&gt;
## linker Button Reihe 1&lt;br /&gt;
## Funktion......: Licht links am Bett ein-/ausschalten &lt;br /&gt;
## Besonderheiten: &lt;br /&gt;
#########################################################################&lt;br /&gt;
define SZ_FB_Btn1_off notify SZ_Fernbedienung_4_1:Btn1.off.* set SZ_Lampe_Bett_links toggle&lt;br /&gt;
attr SZ_FB_Btn1_off room Schlafzimmer&lt;br /&gt;
&lt;br /&gt;
#########################################################################&lt;br /&gt;
## rechter Button Reihe 1&lt;br /&gt;
## Funktion......: Licht rechts am Bett ein-/ausschalten &lt;br /&gt;
## Besonderheiten: &lt;br /&gt;
#########################################################################&lt;br /&gt;
define SZ_FB_Btn1_on notify SZ_Fernbedienung_4_1:Btn1.on.* set SZ_Lampe_Bett_rechts toggle&lt;br /&gt;
attr SZ_FB_Btn1_on room Schlafzimmer&lt;br /&gt;
#########################################################################&lt;br /&gt;
## linker Button Reihe 2&lt;br /&gt;
## Funktion......: Deckenlampen schalten&lt;br /&gt;
## Besonderheiten: &lt;br /&gt;
#########################################################################&lt;br /&gt;
define SZ_FB_Btn2_off notify SZ_Fernbedienung_4_1:Btn2.off.* set SZ_Lampe_Decke toggle&lt;br /&gt;
attr SZ_FB_Btn2_off room Schlafzimmer&lt;br /&gt;
#########################################################################&lt;br /&gt;
## rechter Button Reihe 2&lt;br /&gt;
## Funktion......: Seitenlampen schalten&lt;br /&gt;
## Besonderheiten: &lt;br /&gt;
#########################################################################&lt;br /&gt;
define SZ_FB_Btn2_on notify SZ_Fernbedienung_4_1:Btn2.on.* set SZ_Lampen_Seite toggle&lt;br /&gt;
attr SZ_FB_Btn2_on room Schlafzimmer&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Alternative! Um SZ_Lampe_Decke und SZ_Lampen_Seite mit einem&lt;br /&gt;
## Tastendruck zu schalten&lt;br /&gt;
## Durch dieses Notify wird zuerst SZ_Lampe_Decke eingeschaltet, dann&lt;br /&gt;
## beim nächsten Tastendruck wird SZ_Lampen_Seite dazugeschaltet und&lt;br /&gt;
## dann beim dritten Tastendruck werden beide wieder ausgeschaltet&lt;br /&gt;
## Bei Aktivierung vorher SZ_FB_Btnx.on/off deaktivieren!!!&lt;br /&gt;
#########################################################################&lt;br /&gt;
#define MyNotify notify Fernbedienung:Btn2.on.* {if(Value(&amp;quot;SZ_Lampe_Decke&amp;quot;) == &amp;quot;on&amp;quot; &amp;amp;amp;&amp;amp;amp; Value(&amp;quot;SZ_Lampen_Seite&amp;quot;) == &amp;quot;on&amp;quot;) {fhem &amp;quot;set SZ_Lampe_Decke,SZ_Lampen_Seite off&amp;quot;} elsif(Value(&amp;quot;SZ_Lampe_Decke&amp;quot;) == &amp;quot;on&amp;quot; &amp;amp;amp;&amp;amp;amp; Value(&amp;quot;SZ_Lampen_Seite&amp;quot;) == &amp;quot;off&amp;quot;) {fhem &amp;quot;set SZ_Lampen_Seite on&amp;quot;} else{fhem &amp;quot;set SZ_Lampe_Decke on&amp;quot;}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Der Taster an der Tür soll nur Licht ein- und ausschalten, daher wurde auf eine Unterscheidung zwischen einem langen und einem kurzen Tastendruck verzichtet. Da zwei verschiedene Lichtquellen zu schalten sind, müssen bei dem set Kommando beide Quellen jeweils angegeben werden. Es dürfen keine Leerzeichen in der Liste der Aktoren sein und die Aktoren müssen per Komma getrennt werden. (Achtung: &amp;quot;else if&amp;quot; muss in Perl als &amp;quot;elsif&amp;quot; geschrieben werden.)&lt;br /&gt;
&lt;br /&gt;
=== /etc/fhem/Gaestezimmer.cfg ===&lt;br /&gt;
Im Gästezimmer wird derzeit nur die Jalousie gesteuert. Hier ist nur ein Unterputzjalousieaktor installiert.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#########################################################################&lt;br /&gt;
## Gästezimmer&lt;br /&gt;
## Zweck.........: Alle Homematic Komponenten im Gästezimmer&lt;br /&gt;
## Standort......: Gästezimmer&lt;br /&gt;
## Typ...........: verschiedene&lt;br /&gt;
## Installation..: 15.09.2011&lt;br /&gt;
## Besonderheiten: &lt;br /&gt;
##         &lt;br /&gt;
#########################################################################&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Aktor für die Rollladen&lt;br /&gt;
#########################################################################&lt;br /&gt;
define GZ_Rollladen CUL_HM xxxxx&lt;br /&gt;
attr GZ_Rollladen devInfo 010100&lt;br /&gt;
attr GZ_Rollladen firmware 1.5&lt;br /&gt;
attr GZ_Rollladen hmClass receiver&lt;br /&gt;
attr GZ_Rollladen model HM-LC-BL1-FM&lt;br /&gt;
attr GZ_Rollladen room Gästezimmer&lt;br /&gt;
attr GZ_Rollladen serialNr xxxxxxxxxx&lt;br /&gt;
attr GZ_Rollladen subType blindActuator&lt;br /&gt;
attr GZ_Rollladen eventMap on:zu off:offen&lt;br /&gt;
#########################################################################&lt;br /&gt;
## eigenes Log&lt;br /&gt;
#########################################################################&lt;br /&gt;
define GZ_Rollladen_FileLog FileLog /var/log/fhem/GZ_Rollladen-%Y.log GZ_Rollladen&lt;br /&gt;
attr GZ_Rollladen_FileLog logtype text&lt;br /&gt;
attr GZ_Rollladen_FileLog room Server&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Rollladen soll fix um 08:00h jeden Tag hochfahren&lt;br /&gt;
#########################################################################&lt;br /&gt;
define GZ_Rollladen_hoch at *08:00 set GZ_Rollladen offen&lt;br /&gt;
attr GZ_Rollladen_hoch room Gästezimmer&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Rollladen soll variabel je nach Sonnenuntergang, aber&lt;br /&gt;
## nicht vor 17:00h und nicht nach 21:00h jeden Tag runterfahren&lt;br /&gt;
#########################################################################&lt;br /&gt;
define GZ_Rollladen_runter at *{sunset(0,&amp;quot;17:00&amp;quot;,&amp;quot;21:00&amp;quot;)} set GZ_Rollladen zu&lt;br /&gt;
attr GZ_Rollladen_runter room Gästezimmer&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Jalousie soll immer morgens um 8 Uhr hoch gefahren werden, wobei aufgrund der Verkabelung am Aktor Hochfahren mit dem Status off eingeleitet wird. Das Herunterfahren soll variabel aufgrund der Untergangszeit der Sonne geschehen. Siehe [[Sunset Sunrise]]. Die früheste Zeit zum Herunterfahren ist 17:00 Uhr und spätestens um 21:00 Uhr sollen die Jalousien auf jeden Fall heruntergefahren sein. Dies wird auf alle Jalousien angewendet. Zur besseren Lesbarkeit der Anzeige wurde der Status der Rollade durch Setzen des Attributes EventMap umbenannt. Wenn der Aktor den Status &#039;&#039;on&#039;&#039; meldet, dann wird &#039;&#039;zu&#039;&#039; angezeigt und alternativ bei &#039;&#039;off&#039;&#039; dann &#039;&#039;offen&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== /etc/fhem/Wohnzimmer.cfg ===&lt;br /&gt;
Im Wohnzimmer wird derzeit eine Jalousie und die Beleuchtung gesteuert. Installiert sind: ein Jalousieaktor mit Tasteraufsatz, zwei 4fach-Taster, ein Unterputzdoppelaktor.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#########################################################################&lt;br /&gt;
## Wohnzimmer&lt;br /&gt;
## Zweck.........: Alle Homematic Komponenten im Wohnzimmer&lt;br /&gt;
## Standort......: Wohnzimmer&lt;br /&gt;
## Typ...........: verschiedene&lt;br /&gt;
## Installation..: 15.09.2011&lt;br /&gt;
## Besonderheiten: ACHTUNG, on und off bei der Rollladensteuerung&lt;br /&gt;
##         ist im Wohnzimmer vertauscht on=rauf off=runter&lt;br /&gt;
#########################################################################&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Aktor für die Rollladen&lt;br /&gt;
#########################################################################&lt;br /&gt;
define WZ_Rollladen CUL_HM xxxxxx&lt;br /&gt;
attr WZ_Rollladen devInfo 010100&lt;br /&gt;
attr WZ_Rollladen firmware 1.6&lt;br /&gt;
attr WZ_Rollladen hmClass receiver&lt;br /&gt;
attr WZ_Rollladen model HM-LC-BL1-PB-FM&lt;br /&gt;
attr WZ_Rollladen room Wohnzimmer&lt;br /&gt;
attr WZ_Rollladen serialNr xxxxxxxxxx&lt;br /&gt;
attr WZ_Rollladen subType blindActuator&lt;br /&gt;
attr WZ_Rollladen eventMap on:offen off:zu&lt;br /&gt;
#########################################################################&lt;br /&gt;
## eigenes Log&lt;br /&gt;
#########################################################################&lt;br /&gt;
define WZ_Rollladen_FileLog FileLog /var/log/fhem/WZ_Rollladen-%Y.log WZ_Rollladen&lt;br /&gt;
attr WZ_Rollladen_FileLog logtype text&lt;br /&gt;
attr WZ_Rollladen_FileLog room Server&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Rollladen soll fix um 08:00h jeden Tag hochfahren&lt;br /&gt;
#########################################################################&lt;br /&gt;
define WZ_Rollladen_hoch at *08:00 set WZ_Rollladen offen&lt;br /&gt;
attr WZ_Rollladen_hoch room Wohnzimmer&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Rollladen soll variabel je nach Sonnenuntergang, aber&lt;br /&gt;
## nicht vor 17:00h und nicht nach 21:00h jeden Tag runterfahren&lt;br /&gt;
#########################################################################&lt;br /&gt;
define WZ_Rollladen_runter at *{sunset(0,&amp;quot;17:00&amp;quot;,&amp;quot;21:00&amp;quot;)} set WZ_Rollladen zu&lt;br /&gt;
attr WZ_Rollladen_runter room Wohnzimmer&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Aktor für die Lampen auf der Schrankseite des Wohnzimmers&lt;br /&gt;
##  dies ist ein gemeinsamer Aktor mit WZ_Lampe_Couch&lt;br /&gt;
#########################################################################&lt;br /&gt;
define WZ_Lampe_Schrank CUL_HM xxxxxx&lt;br /&gt;
attr WZ_Lampe_Schrank devInfo 020100&lt;br /&gt;
attr WZ_Lampe_Schrank firmware 1.9&lt;br /&gt;
attr WZ_Lampe_Schrank hmClass receiver&lt;br /&gt;
attr WZ_Lampe_Schrank model HM-LC-SW2-FM&lt;br /&gt;
attr WZ_Lampe_Schrank room Wohnzimmer&lt;br /&gt;
attr WZ_Lampe_Schrank serialNr xxxxxxxxxx&lt;br /&gt;
attr WZ_Lampe_Schrank subType switch&lt;br /&gt;
define FileLog_WZ_Lampe_Schrank FileLog /var/log/fhem/WZ_Lampe_Schrank-%Y.log WZ_Lampe_Schrank&lt;br /&gt;
attr FileLog_WZ_Lampe_Schrank logtype text&lt;br /&gt;
attr FileLog_WZ_Lampe_Schrank room Server&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Aktor für die Lampen auf der Couchseite des Wohnzimmers&lt;br /&gt;
##  dies ist ein gemeinsamer Aktor mit WZ_Lampe_Schrank&lt;br /&gt;
#########################################################################&lt;br /&gt;
define WZ_Lampe_Couch CUL_HM xxxxxx&lt;br /&gt;
attr WZ_Lampe_Couch devInfo 020100&lt;br /&gt;
attr WZ_Lampe_Couch firmware 1.9&lt;br /&gt;
attr WZ_Lampe_Couch hmClass receiver&lt;br /&gt;
attr WZ_Lampe_Couch model HM-LC-SW2-FM&lt;br /&gt;
attr WZ_Lampe_Couch room Wohnzimmer&lt;br /&gt;
attr WZ_Lampe_Couch serialNr xxxxxxxxxxx&lt;br /&gt;
attr WZ_Lampe_Couch subType switch&lt;br /&gt;
define FileLog_WZ_Lampe_Couch FileLog /var/log/fhem/WZ_Lampe_Couch-%Y.log WZ_Lampe_Couch&lt;br /&gt;
attr FileLog_WZ_Lampe_Couch logtype text&lt;br /&gt;
attr FileLog_WZ_Lampe_Couch room Server&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Doppeltaster im Wohnzimmer beim Flur&lt;br /&gt;
## Dieser Taster schaltet die Lampen im Wohnzimmer bei dem Schrank&lt;br /&gt;
## und bei der Couch&lt;br /&gt;
#########################################################################&lt;br /&gt;
define WZ_Taster CUL_HM xxxxxx&lt;br /&gt;
attr WZ_Taster devInfo 040000&lt;br /&gt;
attr WZ_Taster firmware 1.2&lt;br /&gt;
attr WZ_Taster hmClass sender&lt;br /&gt;
attr WZ_Taster model HM-PB-4-WM&lt;br /&gt;
attr WZ_Taster room Wohnzimmer&lt;br /&gt;
attr WZ_Taster serialNr xxxxxxxxxxx&lt;br /&gt;
attr WZ_Taster subType remote&lt;br /&gt;
define FileLog_WZ_Taster FileLog /var/log/fhem/WZ_Taster-%Y.log WZ_Taster&lt;br /&gt;
attr FileLog_WZ_Taster logtype text&lt;br /&gt;
attr FileLog_WZ_Taster room Server&lt;br /&gt;
define WZ_Taster_On_Links notify WZ_Taster:Btn1.on.* set WZ_Lampe_Schrank toggle&lt;br /&gt;
attr WZ_Taster_On_Links room Wohnzimmer&lt;br /&gt;
define WZ_Taster_Off_Links notify WZ_Taster:Btn1.off.* set WZ_Lampe_Schrank toggle&lt;br /&gt;
attr WZ_Taster_Off_Links room Wohnzimmer&lt;br /&gt;
define WZ_Taster_On_Rechts notify WZ_Taster:Btn2.on.* set WZ_Lampe_Couch toggle&lt;br /&gt;
attr WZ_Taster_On_Rechts room Wohnzimmer&lt;br /&gt;
define WZ_Taster_Off_Rechts notify WZ_Taster:Btn2.off.* set WZ_Lampe_Couch toggle&lt;br /&gt;
attr WZ_Taster_Off_Rechts room Wohnzimmer&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Jalousie soll immer morgens um acht Uhr hochgefahren werden, wobei aufgrund der Verkabelung am Aktor Hochfahren mit dem Status on eingeleitet wird. Dies ist anders als im Gästezimmer oder Flur! Das Herunterfahren soll variabel aufgrund der Untergangszeit der Sonne geschehen. Siehe [[Sunset Sunrise]].&lt;br /&gt;
&lt;br /&gt;
Die früheste Zeit zum Herunterfahren ist 17:00 Uhr und spätestens um 21:00 Uhr sollen die Jalousien auf jeden Fall heruntergefahren sein. Die Taster schalten egal bei welchem Tastendruck das Licht an oder aus.&lt;br /&gt;
&lt;br /&gt;
=== /etc/fhem/Flur.cfg ===&lt;br /&gt;
Im Flur werden derzeit eine Jalousie und die Beleuchtung gesteuert. Installiert sind ein  Unterputzjalousieaktor, ein 4fach Taster, zwei 2fach Taster, ein Unterputzdoppelaktor. Dadurch wurde eine Wechselschaltung simuliert.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#########################################################################&lt;br /&gt;
## Flur&lt;br /&gt;
## Zweck.........: Alle Homematic Komponenten im Flur&lt;br /&gt;
## Standort......: Flur&lt;br /&gt;
## Typ...........: verschiedene&lt;br /&gt;
## Installation..: 15.09.2011&lt;br /&gt;
## Besonderheiten: &lt;br /&gt;
##         &lt;br /&gt;
#########################################################################&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Aktor für die Rollladen&lt;br /&gt;
#########################################################################&lt;br /&gt;
define FL_Rollladen CUL_HM xxxxxx&lt;br /&gt;
attr FL_Rollladen devInfo 010100&lt;br /&gt;
attr FL_Rollladen firmware 1.5&lt;br /&gt;
attr FL_Rollladen hmClass receiver&lt;br /&gt;
attr FL_Rollladen model HM-LC-BL1-FM&lt;br /&gt;
attr FL_Rollladen room Flur&lt;br /&gt;
attr FL_Rollladen serialNr xxxxxxxxxx&lt;br /&gt;
attr FL_Rollladen subType blindActuator&lt;br /&gt;
attr FL_Rollladen eventMap on:zu off:offen&lt;br /&gt;
#########################################################################&lt;br /&gt;
## eigenes Log&lt;br /&gt;
#########################################################################&lt;br /&gt;
define FL_Rollladen_FileLog FileLog /var/log/fhem/FL_Rollladen-%Y.log FL_Rollladen&lt;br /&gt;
attr FL_Rollladen_FileLog logtype text&lt;br /&gt;
attr FL_Rollladen_FileLog room Server&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Rollladen soll fix um 08:00h jeden Tag hochfahren&lt;br /&gt;
#########################################################################&lt;br /&gt;
define FL_Rollladen_hoch at *08:00 set FL_Rollladen offen&lt;br /&gt;
attr FL_Rollladen_hoch room Flur&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Rollladen soll variabel je nach Sonnenuntergang, aber&lt;br /&gt;
## nicht vor 17:00h und nicht nach 21:00h jeden Tag runterfahren&lt;br /&gt;
#########################################################################&lt;br /&gt;
define FL_Rollladen_runter at *{sunset(0,&amp;quot;17:00&amp;quot;,&amp;quot;21:00&amp;quot;)} set FL_Rollladen zu&lt;br /&gt;
attr FL_Rollladen_runter room Flur&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Aktor für die Lampen im FLur bei der Garderobe&lt;br /&gt;
##  Dies ist ein gemeinsamer Aktor mit FL_Lampe_Treppe&lt;br /&gt;
#########################################################################&lt;br /&gt;
define FL_Lampe_Garderobe CUL_HM xxxxxx&lt;br /&gt;
attr FL_Lampe_Garderobe devInfo 020100&lt;br /&gt;
attr FL_Lampe_Garderobe firmware 1.9&lt;br /&gt;
attr FL_Lampe_Garderobe hmClass receiver&lt;br /&gt;
attr FL_Lampe_Garderobe model HM-LC-SW2-FM&lt;br /&gt;
attr FL_Lampe_Garderobe room Flur&lt;br /&gt;
attr FL_Lampe_Garderobe serialNr xxxxxxxxxx&lt;br /&gt;
attr FL_Lampe_Garderobe subType switch&lt;br /&gt;
define FileLog_FL_Lampe_Garderobe FileLog /var/log/fhem/FL_Lampe_Garderobe-%Y.log FL_Lampe_Garderobe&lt;br /&gt;
attr FileLog_FL_Lampe_Garderobe logtype text&lt;br /&gt;
attr FileLog_FL_Lampe_Garderobe room Server&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Aktor für die Lampen im FLur bei der kleinen Treppe&lt;br /&gt;
##  Dies ist ein gemeinsamer Aktor mit FL_Lampe_Garderobe&lt;br /&gt;
#########################################################################&lt;br /&gt;
define FL_Lampe_Treppe CUL_HM xxxxxx&lt;br /&gt;
attr FL_Lampe_Treppe devInfo 020100&lt;br /&gt;
attr FL_Lampe_Treppe firmware 1.9&lt;br /&gt;
attr FL_Lampe_Treppe hmClass receiver&lt;br /&gt;
attr FL_Lampe_Treppe model HM-LC-SW2-FM&lt;br /&gt;
attr FL_Lampe_Treppe room Flur&lt;br /&gt;
attr FL_Lampe_Treppe serialNr xxxxxxxxxx&lt;br /&gt;
attr FL_Lampe_Treppe subType switch&lt;br /&gt;
define FileLog_FL_Lampe_Treppe FileLog /var/log/fhem/FL_Lampe_Treppe-%Y.log FL_Lampe_Treppe&lt;br /&gt;
attr FileLog_FL_Lampe_Treppe logtype text&lt;br /&gt;
attr FileLog_FL_Lampe_Treppe room Server&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Taster im Flur beim Eingang Badezimmer&lt;br /&gt;
## Dieser Taster schaltet die Lampen im Flur bei der kleinen Treppe&lt;br /&gt;
## arbeitet im Wechsel mit FL_Taster&lt;br /&gt;
#########################################################################&lt;br /&gt;
define FL_Taster_Bad CUL_HM xxxxxx&lt;br /&gt;
attr FL_Taster_Bad devInfo 020000&lt;br /&gt;
attr FL_Taster_Bad firmware 1.2&lt;br /&gt;
attr FL_Taster_Bad hmClass sender&lt;br /&gt;
attr FL_Taster_Bad model HM-PB-2-WM&lt;br /&gt;
attr FL_Taster_Bad room Flur&lt;br /&gt;
attr FL_Taster_Bad serialNr xxxxxxxxxx&lt;br /&gt;
attr FL_Taster_Bad subType remote&lt;br /&gt;
define FileLog_FL_Taster_Bad FileLog /var/log/fhem/FL_Taster_Bad-%Y.log FL_Taster_Bad&lt;br /&gt;
attr FileLog_FL_Taster_Bad logtype text&lt;br /&gt;
attr FileLog_FL_Taster_Bad room Server&lt;br /&gt;
define FL_Taster_Bad_On notify FL_Taster_Bad:Btn1.on.* set FL_Lampe_Treppe toggle&lt;br /&gt;
attr FL_Taster_Bad_On room Flur&lt;br /&gt;
define FL_Taster_Bad_Off notify FL_Taster_Bad:Btn1.off.* set FL_Lampe_Treppe toggle&lt;br /&gt;
attr FL_Taster_Bad_Off room Flur&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Taster im Flur beim Wohnungseingang&lt;br /&gt;
##  Dieser Taster schaltet die Lampen im Flur bei der Garderobe&lt;br /&gt;
##  arbeitet im Wechsel mit FL_Taster&lt;br /&gt;
#########################################################################&lt;br /&gt;
define FL_Taster_Eingang CUL_HM xxxxxx&lt;br /&gt;
attr FL_Taster_Eingang devInfo 020000&lt;br /&gt;
attr FL_Taster_Eingang firmware 1.2&lt;br /&gt;
attr FL_Taster_Eingang hmClass sender&lt;br /&gt;
attr FL_Taster_Eingang model HM-PB-2-WM&lt;br /&gt;
attr FL_Taster_Eingang room Flur&lt;br /&gt;
attr FL_Taster_Eingang serialNr xxxxxxxxxx&lt;br /&gt;
attr FL_Taster_Eingang subType remote&lt;br /&gt;
define FileLog_FL_Taster_Eingang FileLog /var/log/fhem/FL_Taster_Eingang-%Y.log FL_Taster_Eingang&lt;br /&gt;
attr FileLog_FL_Taster_Eingang logtype text&lt;br /&gt;
attr FileLog_FL_Taster_Eingang room Server&lt;br /&gt;
define FL_Taster_Eingang_On notify FL_Taster_Eingang:Btn1.on.* set FL_Lampe_Garderobe toggle&lt;br /&gt;
attr FL_Taster_Eingang_On room Flur&lt;br /&gt;
define FL_Taster_Eingang_Off notify FL_Taster_Eingang:Btn1.off.* set FL_Lampe_Garderobe toggle&lt;br /&gt;
attr FL_Taster_Eingang_Off room Flur&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Doppeltaster im Flur beim Wohnzimmer&lt;br /&gt;
## Dieser Taster schaltet die Lampen im Flur bei der Garderobe und&lt;br /&gt;
## im Flur bei der kleinen Treppe&lt;br /&gt;
##  Diese Taster arbeiten als Wechselschaltung &lt;br /&gt;
#########################################################################&lt;br /&gt;
define FL_Taster CUL_HM xxxxxx&lt;br /&gt;
attr FL_Taster devInfo 040000&lt;br /&gt;
attr FL_Taster firmware 1.2&lt;br /&gt;
attr FL_Taster hmClass sender&lt;br /&gt;
attr FL_Taster model HM-PB-4-WM&lt;br /&gt;
attr FL_Taster room Flur&lt;br /&gt;
attr FL_Taster serialNr xxxxxxxxxx&lt;br /&gt;
attr FL_Taster subType remote&lt;br /&gt;
define FileLog_FL_Taster FileLog /var/log/fhem/FL_Taster-%Y.log FL_Taster&lt;br /&gt;
attr FileLog_FL_Taster logtype text&lt;br /&gt;
attr FileLog_FL_Taster room Server&lt;br /&gt;
define FL_Taster_On_Links notify FL_Taster:Btn1.on.* set FL_Lampe_Treppe toggle&lt;br /&gt;
attr FL_Taster_On_Links room Flur&lt;br /&gt;
define FL_Taster_Off_Links notify FL_Taster:Btn1.off.* set FL_Lampe_Treppe toggle&lt;br /&gt;
attr FL_Taster_Off_Links room Flur&lt;br /&gt;
define FL_Taster_On_Rechts notify FL_Taster:Btn2.on.* set FL_Lampe_Garderobe toggle&lt;br /&gt;
attr FL_Taster_On_Rechts room Flur&lt;br /&gt;
define FL_Taster_Off_Rechts notify FL_Taster:Btn2.off.* set FL_Lampe_Garderobe toggle&lt;br /&gt;
attr FL_Taster_Off_Rechts room Flur&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Jalousie soll immer morgens um 8 Uhr hoch gefahren werden, wobei aufgrund der Verkabelung am Aktor Hochfahren mit dem Status off eingeleitet wird. Das Herunterfahren soll variabel aufgrund der Untergangszeit der Sonne geschehen. Siehe [[Sunset Sunrise]].&lt;br /&gt;
&lt;br /&gt;
Die früheste Zeit zum Herunterfahren ist 17:00 Uhr und spätestens um 21:00 Uhr sollen die Jalousien auf jeden Fall heruntergefahren sein. Mit den Tastern werden 2 Wechselschaltungen simuliert, wobei derzeit keine besonderen Schaltvorgänge ermöglicht werden.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Examples]]&lt;/div&gt;</summary>
		<author><name>Yfhem</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Jalousie_und_Beleuchtung_in_mehreren_R%C3%A4umen&amp;diff=3489</id>
		<title>Jalousie und Beleuchtung in mehreren Räumen</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Jalousie_und_Beleuchtung_in_mehreren_R%C3%A4umen&amp;diff=3489"/>
		<updated>2013-11-12T18:59:30Z</updated>

		<summary type="html">&lt;p&gt;Yfhem: Added ref to Sunset Sunrise. Docu here was a little out-of-date.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dies ist die Beschreibung einer Fhem-Konfiguration, die zur Steuerung einer Hausautomation auf Basis von [[HomeMatic]] dient. Gesteuert werden in verschiedenen Räumen das &#039;&#039;&#039;Licht und die Jalousien&#039;&#039;&#039;. Die Länge dieser Beschreibung soll nicht abschreckend wirken, viele Zeilen sind Kommentare oder durch den &#039;&#039;autocreate&#039;&#039; Prozeß erzeugte Zeilen!&lt;br /&gt;
&lt;br /&gt;
== Verwendete Hard- und Software ==&lt;br /&gt;
Als [[:Kategorie:Server Hardware|Server]] dient ein PC mit einem Athlon 64 X2 Dual Core Prozessor 6000+, 4 GB Hauptspeicher, 2 TB gespiegeltem Diskspeicher und Gigabit Ethernet. Auf dem Server ist ein Ubuntu 11.04 Serveredition installiert, die automatisch auf dem neuesten Stand gehalten wird. Perl ist in der Version 5.10.1 vorhanden. Fhem ist dabei nur eine von vielen Applikationen, die auf dem Server laufen.&lt;br /&gt;
&lt;br /&gt;
Der Server kann über das Ethernet im Hausnetz auf eine [[AVM Fritz!Box|Fritzbox&amp;amp;nbsp;7170]] zugreifen, die wiederum mittels WLAN mit einer Fritzbox&amp;amp;nbsp;3170 verbunden ist, die als WLAN-Repeater dient. An die 3170 ist als Hauszentrale ein HomeMatic Lan [[Interface]] ([[HMLAN Konfigurator]]) angeschlossen.&lt;br /&gt;
&lt;br /&gt;
Der CPU-Verbrauch hält sich sehr in Grenzen, bei einer stichprobenartigen Überwachung hat Fhem etwa 5-6 CPU Sekunden verbraucht in 24 Stunden.&lt;br /&gt;
&lt;br /&gt;
[[File:Konfiguration-Ethernet.jpg|628px]]&lt;br /&gt;
&lt;br /&gt;
Folgende HomeMatic Komponenten kommen zum Einsatz:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Produktcode &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Funktion &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Anzahl&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; HM-CFG-LAN &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; LanInterface &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 1&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; HM-RC-12-W &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Funkfernbedienung 12-Tasten &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 1&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; HM-RC-4-B &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Funkfernbedienung 4-Tasten &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 1&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; HM-PB-2-WM &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Funk-Wandtaster 2fach &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 3&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; HM-PB-4-WM &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Funk-Wandtaster 4fach &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; HM-LC-Sw1-FM &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Funk-Schaltaktor 1-fach, Unterputzmontage &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; HM-LC-Sw2-FM &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Funk-Schaltaktor 2-fach, Unterputzmontage &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 3&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; HM-LC-Bl1-FM &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Funk-Jalousieaktor 1-fach, Unterputzmontage &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; HM-LC-Sw1PB-FM &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Funk-Schaltaktor 1-fach, Unterputzmontage mit Tasteraufsatz &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 1&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Namensregeln&#039;&#039;&#039;: Alle Definitionen, die NICHT eindeutig einem Raum zuzuordnen sind, erhalten ein XX_ an den Anfang, alle anderen Definitionen erhalten eine der folgenden Kennungen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Kennung &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Raum&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; AK_ &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Arbeitskeller&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; BA_ &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Bad&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; BU_ &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Büro&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; DB &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Dachboden&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; FL_ &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Flur&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; GA_ &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Garage&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; KU_ &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Küche&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; SK_ &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Saunakeller&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; SZ_ &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Schlafzimmer&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; TG_ &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Terasse/Garten&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; TH_ &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Treppenhaus&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; VK_ &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Vorratskeller&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; WK_ &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Waschkeller&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; WZ_ &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Wohnzimmer&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Konfigurationsdateien ==&lt;br /&gt;
Alle Dateien, bis auf fhem.cfg, befinden sich in /etc/fhem. Alle Komponenten, die nicht physikalisch einem Raum zuzuordnen sind (Logs, Globales, etc.) wurden dem virtuellen Raum &#039;&#039;Server&#039;&#039; zugeordnet.&lt;br /&gt;
&lt;br /&gt;
=== /etc/fhem.cfg ===&lt;br /&gt;
Die Datei /etc/fhem.cfg ist der Haupteinstiegspunkt für die Konfiguration. Aus Gründen der besseren Wartbarkeit beinhaltet die Datei nur include Anweisungen, mit der andere Dateien aus dieser Datei heraus aufgerufen werden. Das hat den Vorteil, dass Kommentare in den include Dateien erhalten bleiben. Dies ist (bzw. war seinerzeit) nicht der Fall für fhem.cfg, wenn man die Funktion autocreate verwendet. Attribute für die Definition &#039;&#039;global&#039;&#039; dürfen nicht aus der fhem.cfg ausgelagert werden, sie müssen Bestandteil der fhem.cfg bleiben.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr global autoload_undefined_devices 1&lt;br /&gt;
attr global logfile /var/log/fhem/fhem-%Y-%m.log&lt;br /&gt;
attr global modpath /usr/share/fhem&lt;br /&gt;
attr global port 7072&lt;br /&gt;
attr global room Server&lt;br /&gt;
attr global statefile /var/log/fhem/fhem.save&lt;br /&gt;
include /etc/fhem/Web.cfg&lt;br /&gt;
include /etc/fhem/Autocreate.cfg&lt;br /&gt;
include /etc/fhem/LanInterface.cfg&lt;br /&gt;
include /etc/fhem/Fernbedienung.cfg&lt;br /&gt;
include /etc/fhem/Schlafzimmer.cfg&lt;br /&gt;
include /etc/fhem/Gaestezimmer.cfg&lt;br /&gt;
include /etc/fhem/Wohnzimmer.cfg&lt;br /&gt;
# include /etc/fhem/Buero.cfg&lt;br /&gt;
include /etc/fhem/Flur.cfg&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== /etc/fhem/Web.cfg ===&lt;br /&gt;
Alle relevanten Konfigurationsparameter für den Webzugriff sind in dieser Datei zu finden. Es sind die aus der Installation bekannten Standardwerte übernommen worden.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#########################################################################&lt;br /&gt;
## Webdefinitionen&lt;br /&gt;
## Zweck.........: Definitionen für den Zugriff auf den Webserver&lt;br /&gt;
## Standort......: Server&lt;br /&gt;
## Typ...........: &lt;br /&gt;
## Installation..: 15.09.2011&lt;br /&gt;
## Besonderheiten: &lt;br /&gt;
##         &lt;br /&gt;
#########################################################################&lt;br /&gt;
define XX_WEB FHEMWEB 8083 global&lt;br /&gt;
attr XX_WEB fwcompress 0&lt;br /&gt;
attr XX_WEB room Server&lt;br /&gt;
define XX_WEBphone FHEMWEB 8084&lt;br /&gt;
attr XX_WEBphone room Server&lt;br /&gt;
attr XX_WEBphone smallscreen 1&lt;br /&gt;
define XX_WEBtablet FHEMWEB 8085&lt;br /&gt;
attr XX_WEBtablet room Server&lt;br /&gt;
attr XX_WEBtablet touchpad 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== /etc/fhem/Autocreate.cfg ===&lt;br /&gt;
Diese Datei enthält alle wichtigen Information zu dem Autocreate Prozess. Keine Änderung gegenüber den Standardwerten.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#########################################################################&lt;br /&gt;
## Autocreate Definitionen&lt;br /&gt;
## Zweck.........: Autocreate aktivieren&lt;br /&gt;
## Standort......: Server&lt;br /&gt;
## Typ...........: &lt;br /&gt;
## Installation..: 15.09.2011&lt;br /&gt;
## Besonderheiten: &lt;br /&gt;
##         &lt;br /&gt;
#########################################################################&lt;br /&gt;
define XX_Autocreate autocreate&lt;br /&gt;
attr XX_Autocreate autosave 1&lt;br /&gt;
attr XX_Autocreate device_room&amp;amp;#160;%TYPE&lt;br /&gt;
attr XX_Autocreate filelog /var/log/fhem/%NAME-%Y.log&lt;br /&gt;
attr XX_Autocreate room Server&lt;br /&gt;
attr XX_Autocreate weblink 1&lt;br /&gt;
attr XX_Autocreate weblink_room Plots&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== /etc/fhem/LanInterface.cfg ===&lt;br /&gt;
Das Lan-Interface stellt das Bindeglied zwischen dem Server und den einzelnen Homematic-Komponenten dar. Es ist mit einem Ethernetnetzwerkkabel an das Netzwerk angeschlossen. Dem Lan-Interface wurde eine feste IP-Adresse vergeben, um immer auf der gleichen Adresse ansprechbar zu sein. Der Zugriff auf das Interface geschieht über Port 1000.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#########################################################################&lt;br /&gt;
## Lan Adapter&lt;br /&gt;
## Zweck.........: Bindeglied zwischen Server/fhem und Homematic Aktoren und Sender&lt;br /&gt;
## Standort......: Gästezimmer&lt;br /&gt;
## Typ...........: &lt;br /&gt;
## Installation..: 15.09.2011&lt;br /&gt;
## Besonderheiten: feste IP-Adresse 192.168.0.6 Port 1000&lt;br /&gt;
##         wird an 3170 WLAN-Repeater betrieben wegen besserer Abdeckung&lt;br /&gt;
#########################################################################&lt;br /&gt;
define XX_LANInterface HMLAN 192.168.0.6:1000&lt;br /&gt;
attr XX_LANInterface hmId xxxxxx&lt;br /&gt;
attr XX_LANInterface room Gästezimmer&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== /etc/fhem/Fernbedienung.cfg ===&lt;br /&gt;
Fernbedienungen sind nicht an einen Standort gebunden und können bewegt werden, daher eine eigene Konfiguration, wenn die Fernbedienung nicht einem Zimmer ausschließlich zugeordnet ist.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#########################################################################&lt;br /&gt;
## Fernbedienungen&lt;br /&gt;
## Zweck.........: alle verfügbaren Sender, wenn sie nicht einem Raum &lt;br /&gt;
##         unmittelbar zugeordnet sind&lt;br /&gt;
## Standort......: verschiedene&lt;br /&gt;
## Typ...........: verschiedene&lt;br /&gt;
## Installation..: 15.09.2011 12-Tasten-Fernbedienung&lt;br /&gt;
## Besonderheiten: &lt;br /&gt;
#########################################################################&lt;br /&gt;
#########################################################################&lt;br /&gt;
## 12-Tasten Fernbedienung&lt;br /&gt;
## Zweck.........: Rollladensteuerung, Licht im Wohnzimmer und Flur&lt;br /&gt;
##         Scheinwerfer im Garten&lt;br /&gt;
## Standort......: normalerweise Wohnzimmer&lt;br /&gt;
## Typ...........: HM-RC-12&lt;br /&gt;
## Installation..: 15.09.2011 12-Tasten-Fernbedienung&lt;br /&gt;
## Besonderheiten: es wird nicht zwischen langem und kurzem Tasten-&lt;br /&gt;
##         druck unterschieden&lt;br /&gt;
#########################################################################&lt;br /&gt;
define XX_FB_12_1 CUL_HM xxxxxx&lt;br /&gt;
attr XX_FB_12_1 devInfo 0C0000&lt;br /&gt;
attr XX_FB_12_1 firmware 1.1&lt;br /&gt;
attr XX_FB_12_1 hmClass sender&lt;br /&gt;
attr XX_FB_12_1 model HM-RC-12&lt;br /&gt;
attr XX_FB_12_1 room Wohnzimmer&lt;br /&gt;
attr XX_FB_12_1 serialNr xxxxxxxxxx&lt;br /&gt;
attr XX_FB_12_1 subType remote&lt;br /&gt;
&lt;br /&gt;
#########################################################################&lt;br /&gt;
## linker Button Reihe 1&lt;br /&gt;
## Funktion......: Rollladen runter im Wohnzimmer&lt;br /&gt;
## Besonderheiten: ACHTUNG, on und off sind im Wohnzimmer vertauscht&lt;br /&gt;
##         wegen der Tasten auf dem Taster an dem Aktuator &lt;br /&gt;
#########################################################################&lt;br /&gt;
define XX_FB_12_1_1_Off notify XX_FB_12_1:Btn1.off.* set WZ_Rollladen off&lt;br /&gt;
attr XX_FB_12_1_1_Off room Wohnzimmer&lt;br /&gt;
#########################################################################&lt;br /&gt;
## rechter Button Reihe 1&lt;br /&gt;
## Funktion......: Rollladen hoch im Wohnzimmer&lt;br /&gt;
## Besonderheiten: ACHTUNG, on und off sind im Wohnzimmer vertauscht&lt;br /&gt;
##         wegen der Tasten auf dem Taster an dem Aktuator &lt;br /&gt;
#########################################################################&lt;br /&gt;
define XX_FB_12_1_1_On notify XX_FB_12_1:Btn1.on.* set WZ_Rollladen on&lt;br /&gt;
attr XX_FB_12_1_1_On room Wohnzimmer&lt;br /&gt;
#########################################################################&lt;br /&gt;
## linker Button Reihe 2&lt;br /&gt;
## Funktion......: Rollladen runter im Gästezimmer&lt;br /&gt;
## Besonderheiten: on=runter off=hoch&lt;br /&gt;
#########################################################################&lt;br /&gt;
define XX_FB_12_1_2_Off notify XX_FB_12_1:Btn2.off.* set GZ_Rollladen on&lt;br /&gt;
attr XX_FB_12_1_2_Off room Wohnzimmer&lt;br /&gt;
#########################################################################&lt;br /&gt;
## rechter Button Reihe 2&lt;br /&gt;
## Funktion......: Rollladen hoch im Gästezimmer&lt;br /&gt;
## Besonderheiten: on=runter off=hoch &lt;br /&gt;
#########################################################################&lt;br /&gt;
define XX_FB_12_1_2_On notify XX_FB_12_1:Btn2.on.* set GZ_Rollladen off&lt;br /&gt;
attr XX_FB_12_1_2_On room Wohnzimmer&lt;br /&gt;
#########################################################################&lt;br /&gt;
## linker Button Reihe 3&lt;br /&gt;
## Funktion......: Rollladen runter im Flur&lt;br /&gt;
## Besonderheiten: on=runter off=hoch&lt;br /&gt;
#########################################################################&lt;br /&gt;
define XX_FB_12_1_3_Off notify XX_FB_12_1:Btn3.off.* set FL_Rollladen on&lt;br /&gt;
attr XX_FB_12_1_3_Off room Wohnzimmer&lt;br /&gt;
#########################################################################&lt;br /&gt;
## rechter Button Reihe 3&lt;br /&gt;
## Funktion......: Rollladen hoch im Flur&lt;br /&gt;
## Besonderheiten: on=runter off=hoch &lt;br /&gt;
#########################################################################&lt;br /&gt;
define XX_FB_12_1_3_On notify XX_FB_12_1:Btn3.on.* set FL_Rollladen off&lt;br /&gt;
attr XX_FB_12_1_3_On room Wohnzimmer&lt;br /&gt;
#########################################################################&lt;br /&gt;
## linker Button Reihe 4&lt;br /&gt;
## Funktion......: &lt;br /&gt;
## Besonderheiten: derzeit nicht belegt&lt;br /&gt;
#########################################################################&lt;br /&gt;
#########################################################################&lt;br /&gt;
## rechter Button Reihe 4&lt;br /&gt;
## Funktion......: &lt;br /&gt;
## Besonderheiten: derzeit nicht belegt&lt;br /&gt;
#########################################################################&lt;br /&gt;
#########################################################################&lt;br /&gt;
## linker Button Reihe 5&lt;br /&gt;
## Funktion......: &lt;br /&gt;
## Besonderheiten: derzeit nicht belegt&lt;br /&gt;
#########################################################################&lt;br /&gt;
#########################################################################&lt;br /&gt;
## rechter Button Reihe 5&lt;br /&gt;
## Funktion......: &lt;br /&gt;
## Besonderheiten: derzeit nicht belegt&lt;br /&gt;
#########################################################################&lt;br /&gt;
#########################################################################&lt;br /&gt;
## oberer Button rechts an der Fernbedienung&lt;br /&gt;
## Funktion......: &lt;br /&gt;
## Besonderheiten: derzeit nicht belegt &lt;br /&gt;
#########################################################################&lt;br /&gt;
#########################################################################&lt;br /&gt;
## unterer Button rechts an der Fernbedienung&lt;br /&gt;
## Funktion......: &lt;br /&gt;
## Besonderheiten: derzeit nicht belegt &lt;br /&gt;
#########################################################################&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um eine Kommando mit einer Taste zu verknüpfen, wird die jeweilige Taste mittels notify abgefragt. Die Identifikation um welche Fernbedienung und welche Taste es sich handelt wird durch die Kennung „Name der Fernbedienung“&amp;amp;#160;: und Rückgabestring“ abgehandelt.&lt;br /&gt;
Fhem gibt immer einen String mit den Information zurück. Dieser String enthält auch Leerzeichen. Diese Leerzeichen müssen in der Definition durch jeweils einen Punkt ersetzt werden, da Fhem sonst die ganze Befehlskette nicht richtig identifiziert. Der Stern am Ende deklariert den Rest des Rückgabestrings als nicht relevant.&lt;br /&gt;
&lt;br /&gt;
Die 12-Tasten-Fernbedienung steuert derzeit die Jalousien für Gäste-, Wohnzimmer und Flur und die Tastenbelegung ist so gestaltet, dass die jeweils linke Taste in einer Reihe die Jalousie herunter fährt und die rechte Taste diese Jalousie wieder hoch fährt. Diese Fernbedienung wird global dem Raum Wohnzimmer zugeordnet, weil das der bevorzugte Platz für diese Fernbedienung sein soll.&lt;br /&gt;
&lt;br /&gt;
=== /etc/fhem/Schlafzimmer.cfg ===&lt;br /&gt;
Im Schlafzimmer kommen hauptsächlich Schaltaktoren für Licht zur Anwendung. Eine Fernbedienung ermöglicht die Schaltungen vom Bett aus. Das Deckenlicht wird von einem Taster an der Tür oder von einer Fernbedienung geschaltet. Im Schlafzimmer sind 2 Unterputzaktoren 1fach, 1 Unterputzaktor 2fach, 1 Taster 2fach und eine 4-Tasten-Fernbedienung installiert.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#########################################################################&lt;br /&gt;
## Schlafzimmer&lt;br /&gt;
## Zweck.........: Alle Homematic Komponenten im Schlafzimmer&lt;br /&gt;
## Standort......: Schlafzimmer&lt;br /&gt;
## Typ...........: verschiedene&lt;br /&gt;
## Installation..: 15.09.2011&lt;br /&gt;
## Besonderheiten: &lt;br /&gt;
##         &lt;br /&gt;
#########################################################################&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Aktor für die senkrechten Deckenstrahler&lt;br /&gt;
#########################################################################&lt;br /&gt;
define SZ_Lampe_Decke CUL_HM xxxxxx&lt;br /&gt;
attr SZ_Lampe_Decke devInfo 010100&lt;br /&gt;
attr SZ_Lampe_Decke firmware 1.9&lt;br /&gt;
attr SZ_Lampe_Decke hmClass receiver&lt;br /&gt;
attr SZ_Lampe_Decke model HM-LC-SW1-FM&lt;br /&gt;
attr SZ_Lampe_Decke room Schlafzimmer&lt;br /&gt;
attr SZ_Lampe_Decke serialNr xxxxxxxxxx&lt;br /&gt;
attr SZ_Lampe_Decke subType switch&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Aktor für die Strahler an den Bettseiten&lt;br /&gt;
## und für die Deckenlampen in der Schräge&lt;br /&gt;
#########################################################################&lt;br /&gt;
define SZ_Lampen_Seite CUL_HM xxxxxx&lt;br /&gt;
attr SZ_Lampen_Seite devInfo 010100&lt;br /&gt;
attr SZ_Lampen_Seite firmware 1.9&lt;br /&gt;
attr SZ_Lampen_Seite hmClass receiver&lt;br /&gt;
attr SZ_Lampen_Seite model HM-LC-SW1-FM&lt;br /&gt;
attr SZ_Lampen_Seite room Schlafzimmer&lt;br /&gt;
attr SZ_Lampen_Seite serialNr xxxxxxxxxx&lt;br /&gt;
attr SZ_Lampen_Seite subType switch&lt;br /&gt;
&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Aktor für die Strahler über dem Bett links&lt;br /&gt;
## Besonderheit: Dies ist ein 2-Fach Schaltaktor&lt;br /&gt;
##        anderer Port wird für Bett rechts benutzt&lt;br /&gt;
#########################################################################&lt;br /&gt;
define SZ_Lampe_Bett_links CUL_HM xxxxxx&lt;br /&gt;
attr SZ_Lampe_Bett_links devInfo 020100&lt;br /&gt;
attr SZ_Lampe_Bett_links firmware 1.9&lt;br /&gt;
attr SZ_Lampe_Bett_links hmClass receiver&lt;br /&gt;
attr SZ_Lampe_Bett_links model HM-LC-SW2-FM&lt;br /&gt;
attr SZ_Lampe_Bett_links room Schlafzimmer&lt;br /&gt;
attr SZ_Lampe_Bett_links serialNr xxxxxxxxxx&lt;br /&gt;
attr SZ_Lampe_Bett_links subType switch&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Aktor für die Strahler über dem Bett rechts&lt;br /&gt;
## Besonderheit: Dies ist ein 2-Fach Schaltaktor&lt;br /&gt;
##        anderer Port wird für Bett links benutzt&lt;br /&gt;
#########################################################################&lt;br /&gt;
define SZ_Lampe_Bett_rechts CUL_HM xxxxxx&lt;br /&gt;
attr SZ_Lampe_Bett_rechts devInfo 020100&lt;br /&gt;
attr SZ_Lampe_Bett_rechts firmware 1.9&lt;br /&gt;
attr SZ_Lampe_Bett_rechts hmClass receiver&lt;br /&gt;
attr SZ_Lampe_Bett_rechts model HM-LC-SW2-FM&lt;br /&gt;
attr SZ_Lampe_Bett_rechts room Schlafzimmer&lt;br /&gt;
attr SZ_Lampe_Bett_rechts serialNr xxxxxxxxxx&lt;br /&gt;
attr SZ_Lampe_Bett_rechts subType switch&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Sender an der Tür&lt;br /&gt;
## schaltet Decken- und Seitenlampen ein oder aus&lt;br /&gt;
## bei einem langen Tastendruck (onLong) werden alle Deckenlampen und&lt;br /&gt;
## die Lampen an der Seite eingeschaltet, bei einem kurzen Tastendruck&lt;br /&gt;
## werden nur die Hälfte der Lampen an der Decke angeschaltet&lt;br /&gt;
#########################################################################&lt;br /&gt;
define SZ_Taster_Tuer CUL_HM xxxxxx&lt;br /&gt;
attr SZ_Taster_Tuer devInfo 020000&lt;br /&gt;
attr SZ_Taster_Tuer firmware 1.2&lt;br /&gt;
attr SZ_Taster_Tuer hmClass sender&lt;br /&gt;
attr SZ_Taster_Tuer model HM-PB-2-WM&lt;br /&gt;
attr SZ_Taster_Tuer room Schlafzimmer&lt;br /&gt;
attr SZ_Taster_Tuer serialNr xxxxxxxxxx&lt;br /&gt;
attr SZ_Taster_Tuer subType remote&lt;br /&gt;
define SZ_Taster_Tuer_On_Alles notify SZ_Taster_Tuer:Btn1.onLong.* set SZ_Lampe_Decke,SZ_Lampen_Seite on&lt;br /&gt;
attr SZ_Taster_Tuer_On_Alles room Schlafzimmer&lt;br /&gt;
define SZ_Taster_Tuer_On_Decke notify SZ_Taster_Tuer:Btn1.on.* set SZ_Lampe_Decke on&lt;br /&gt;
attr SZ_Taster_Tuer_On_Decke room Schlafzimmer&lt;br /&gt;
define SZ_Taster_Tuer_Off notify SZ_Taster_Tuer:Btn1.off.* set SZ_Lampe_Decke,SZ_Lampen_Seite off&lt;br /&gt;
attr SZ_Taster_Tuer_Off room Schlafzimmer&lt;br /&gt;
#########################################################################&lt;br /&gt;
## 4-Tastenfernbedienung&lt;br /&gt;
## Zweck.........: Lichtschaltungen im Schlafzimmer vom Bett aus&lt;br /&gt;
## Standort......: Schlafzimmer&lt;br /&gt;
## Typ...........: HM-RC-4&lt;br /&gt;
## Installation..: 23.09.2011&lt;br /&gt;
## Besonderheiten: arbeitet mit toggle&lt;br /&gt;
#########################################################################&lt;br /&gt;
define SZ_Fernbedienung_4_1 CUL_HM xxxxxx&lt;br /&gt;
attr SZ_Fernbedienung_4_1 devInfo 040000&lt;br /&gt;
attr SZ_Fernbedienung_4_1 firmware 1.3&lt;br /&gt;
attr SZ_Fernbedienung_4_1 hmClass sender&lt;br /&gt;
attr SZ_Fernbedienung_4_1 model HM-RC-4-B&lt;br /&gt;
attr SZ_Fernbedienung_4_1 room Schlafzimmer&lt;br /&gt;
attr SZ_Fernbedienung_4_1 serialNr xxxxxxxxxx&lt;br /&gt;
attr SZ_Fernbedienung_4_1 subType remote&lt;br /&gt;
#########################################################################&lt;br /&gt;
## linker Button Reihe 1&lt;br /&gt;
## Funktion......: Licht links am Bett ein-/ausschalten &lt;br /&gt;
## Besonderheiten: &lt;br /&gt;
#########################################################################&lt;br /&gt;
define SZ_FB_Btn1_off notify SZ_Fernbedienung_4_1:Btn1.off.* set SZ_Lampe_Bett_links toggle&lt;br /&gt;
attr SZ_FB_Btn1_off room Schlafzimmer&lt;br /&gt;
&lt;br /&gt;
#########################################################################&lt;br /&gt;
## rechter Button Reihe 1&lt;br /&gt;
## Funktion......: Licht rechts am Bett ein-/ausschalten &lt;br /&gt;
## Besonderheiten: &lt;br /&gt;
#########################################################################&lt;br /&gt;
define SZ_FB_Btn1_on notify SZ_Fernbedienung_4_1:Btn1.on.* set SZ_Lampe_Bett_rechts toggle&lt;br /&gt;
attr SZ_FB_Btn1_on room Schlafzimmer&lt;br /&gt;
#########################################################################&lt;br /&gt;
## linker Button Reihe 2&lt;br /&gt;
## Funktion......: Deckenlampen schalten&lt;br /&gt;
## Besonderheiten: &lt;br /&gt;
#########################################################################&lt;br /&gt;
define SZ_FB_Btn2_off notify SZ_Fernbedienung_4_1:Btn2.off.* set SZ_Lampe_Decke toggle&lt;br /&gt;
attr SZ_FB_Btn2_off room Schlafzimmer&lt;br /&gt;
#########################################################################&lt;br /&gt;
## rechter Button Reihe 2&lt;br /&gt;
## Funktion......: Seitenlampen schalten&lt;br /&gt;
## Besonderheiten: &lt;br /&gt;
#########################################################################&lt;br /&gt;
define SZ_FB_Btn2_on notify SZ_Fernbedienung_4_1:Btn2.on.* set SZ_Lampen_Seite toggle&lt;br /&gt;
attr SZ_FB_Btn2_on room Schlafzimmer&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Alternative! Um SZ_Lampe_Decke und SZ_Lampen_Seite mit einem&lt;br /&gt;
## Tastendruck zu schalten&lt;br /&gt;
## Durch dieses Notify wird zuerst SZ_Lampe_Decke eingeschaltet, dann&lt;br /&gt;
## beim nächsten Tastendruck wird SZ_Lampen_Seite dazugeschaltet und&lt;br /&gt;
## dann beim dritten Tastendruck werden beide wieder ausgeschaltet&lt;br /&gt;
## Bei Aktivierung vorher SZ_FB_Btnx.on/off deaktivieren!!!&lt;br /&gt;
#########################################################################&lt;br /&gt;
#define MyNotify notify Fernbedienung:Btn2.on.* {if(Value(&amp;quot;SZ_Lampe_Decke&amp;quot;) == &amp;quot;on&amp;quot; &amp;amp;amp;&amp;amp;amp; Value(&amp;quot;SZ_Lampen_Seite&amp;quot;) == &amp;quot;on&amp;quot;) {fhem &amp;quot;set SZ_Lampe_Decke,SZ_Lampen_Seite off&amp;quot;} elsif(Value(&amp;quot;SZ_Lampe_Decke&amp;quot;) == &amp;quot;on&amp;quot; &amp;amp;amp;&amp;amp;amp; Value(&amp;quot;SZ_Lampen_Seite&amp;quot;) == &amp;quot;off&amp;quot;) {fhem &amp;quot;set SZ_Lampen_Seite on&amp;quot;} else{fhem &amp;quot;set SZ_Lampe_Decke on&amp;quot;}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Der Taster an der Tür soll nur Licht ein- und ausschalten, daher wurde auf eine Unterscheidung zwischen einem langen und einem kurzen Tastendruck verzichtet. Da zwei verschiedene Lichtquellen zu schalten sind, müssen bei dem set Kommando beide Quellen jeweils angegeben werden. Es dürfen keine Leerzeichen in der Liste der Aktoren sein und die Aktoren müssen per Komma getrennt werden. (Achtung: &amp;quot;else if&amp;quot; muss in Perl als &amp;quot;elsif&amp;quot; geschrieben werden.)&lt;br /&gt;
&lt;br /&gt;
=== /etc/fhem/Gaestezimmer.cfg ===&lt;br /&gt;
Im Gästezimmer wird derzeit nur die Jalousie gesteuert. Hier ist nur ein Unterputzjalousieaktor installiert.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#########################################################################&lt;br /&gt;
## Gästezimmer&lt;br /&gt;
## Zweck.........: Alle Homematic Komponenten im Gästezimmer&lt;br /&gt;
## Standort......: Gästezimmer&lt;br /&gt;
## Typ...........: verschiedene&lt;br /&gt;
## Installation..: 15.09.2011&lt;br /&gt;
## Besonderheiten: &lt;br /&gt;
##         &lt;br /&gt;
#########################################################################&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Aktor für die Rollladen&lt;br /&gt;
#########################################################################&lt;br /&gt;
define GZ_Rollladen CUL_HM xxxxx&lt;br /&gt;
attr GZ_Rollladen devInfo 010100&lt;br /&gt;
attr GZ_Rollladen firmware 1.5&lt;br /&gt;
attr GZ_Rollladen hmClass receiver&lt;br /&gt;
attr GZ_Rollladen model HM-LC-BL1-FM&lt;br /&gt;
attr GZ_Rollladen room Gästezimmer&lt;br /&gt;
attr GZ_Rollladen serialNr xxxxxxxxxx&lt;br /&gt;
attr GZ_Rollladen subType blindActuator&lt;br /&gt;
attr GZ_Rollladen eventMap on:zu off:offen&lt;br /&gt;
#########################################################################&lt;br /&gt;
## eigenes Log&lt;br /&gt;
#########################################################################&lt;br /&gt;
define GZ_Rollladen_FileLog FileLog /var/log/fhem/GZ_Rollladen-%Y.log GZ_Rollladen&lt;br /&gt;
attr GZ_Rollladen_FileLog logtype text&lt;br /&gt;
attr GZ_Rollladen_FileLog room Server&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Rollladen soll fix um 08:00h jeden Tag hochfahren&lt;br /&gt;
#########################################################################&lt;br /&gt;
define GZ_Rollladen_hoch at *08:00 set GZ_Rollladen offen&lt;br /&gt;
attr GZ_Rollladen_hoch room Gästezimmer&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Rollladen soll variabel je nach Sonnenuntergang, aber&lt;br /&gt;
## nicht vor 17:00h und nicht nach 21:00h jeden Tag runterfahren&lt;br /&gt;
#########################################################################&lt;br /&gt;
define GZ_Rollladen_runter at *{sunset(0,&amp;quot;17:00&amp;quot;,&amp;quot;21:00&amp;quot;)} set GZ_Rollladen zu&lt;br /&gt;
attr GZ_Rollladen_runter room Gästezimmer&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Jalousie soll immer morgens um 8 Uhr hoch gefahren werden, wobei aufgrund der Verkabelung am Aktor Hochfahren mit dem Status off eingeleitet wird. Das Herunterfahren soll variabel aufgrund der Untergangszeit der Sonne geschehen. Dabei ist die geografische Koordinate in der Datei /usr/share/fhem/FHEM/99_SUNRISE_EL.pm einzutragen. Koordinaten lassen sich durch Tools für GoogleMap ermitteln. Die früheste Zeit zum Herunterfahren ist 17:00 Uhr und spätestens um 21:00 Uhr sollen die Jalousien auf jeden Fall heruntergefahren sein. Dies wird auf alle Jalousien angewendet. Zur besseren Lesbarkeit der Anzeige wurde der Status der Rollade durch Setzen des Attributes EventMap umbenannt. Wenn der Aktor den Status &#039;&#039;on&#039;&#039; meldet, dann wird &#039;&#039;zu&#039;&#039; angezeigt und alternativ bei &#039;&#039;off&#039;&#039; dann &#039;&#039;offen&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== /etc/fhem/Wohnzimmer.cfg ===&lt;br /&gt;
Im Wohnzimmer wird derzeit eine Jalousie und die Beleuchtung gesteuert. Installiert sind: ein Jalousieaktor mit Tasteraufsatz, zwei 4fach-Taster, ein Unterputzdoppelaktor.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#########################################################################&lt;br /&gt;
## Wohnzimmer&lt;br /&gt;
## Zweck.........: Alle Homematic Komponenten im Wohnzimmer&lt;br /&gt;
## Standort......: Wohnzimmer&lt;br /&gt;
## Typ...........: verschiedene&lt;br /&gt;
## Installation..: 15.09.2011&lt;br /&gt;
## Besonderheiten: ACHTUNG, on und off bei der Rollladensteuerung&lt;br /&gt;
##         ist im Wohnzimmer vertauscht on=rauf off=runter&lt;br /&gt;
#########################################################################&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Aktor für die Rollladen&lt;br /&gt;
#########################################################################&lt;br /&gt;
define WZ_Rollladen CUL_HM xxxxxx&lt;br /&gt;
attr WZ_Rollladen devInfo 010100&lt;br /&gt;
attr WZ_Rollladen firmware 1.6&lt;br /&gt;
attr WZ_Rollladen hmClass receiver&lt;br /&gt;
attr WZ_Rollladen model HM-LC-BL1-PB-FM&lt;br /&gt;
attr WZ_Rollladen room Wohnzimmer&lt;br /&gt;
attr WZ_Rollladen serialNr xxxxxxxxxx&lt;br /&gt;
attr WZ_Rollladen subType blindActuator&lt;br /&gt;
attr WZ_Rollladen eventMap on:offen off:zu&lt;br /&gt;
#########################################################################&lt;br /&gt;
## eigenes Log&lt;br /&gt;
#########################################################################&lt;br /&gt;
define WZ_Rollladen_FileLog FileLog /var/log/fhem/WZ_Rollladen-%Y.log WZ_Rollladen&lt;br /&gt;
attr WZ_Rollladen_FileLog logtype text&lt;br /&gt;
attr WZ_Rollladen_FileLog room Server&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Rollladen soll fix um 08:00h jeden Tag hochfahren&lt;br /&gt;
#########################################################################&lt;br /&gt;
define WZ_Rollladen_hoch at *08:00 set WZ_Rollladen offen&lt;br /&gt;
attr WZ_Rollladen_hoch room Wohnzimmer&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Rollladen soll variabel je nach Sonnenuntergang, aber&lt;br /&gt;
## nicht vor 17:00h und nicht nach 21:00h jeden Tag runterfahren&lt;br /&gt;
#########################################################################&lt;br /&gt;
define WZ_Rollladen_runter at *{sunset(0,&amp;quot;17:00&amp;quot;,&amp;quot;21:00&amp;quot;)} set WZ_Rollladen zu&lt;br /&gt;
attr WZ_Rollladen_runter room Wohnzimmer&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Aktor für die Lampen auf der Schrankseite des Wohnzimmers&lt;br /&gt;
##  dies ist ein gemeinsamer Aktor mit WZ_Lampe_Couch&lt;br /&gt;
#########################################################################&lt;br /&gt;
define WZ_Lampe_Schrank CUL_HM xxxxxx&lt;br /&gt;
attr WZ_Lampe_Schrank devInfo 020100&lt;br /&gt;
attr WZ_Lampe_Schrank firmware 1.9&lt;br /&gt;
attr WZ_Lampe_Schrank hmClass receiver&lt;br /&gt;
attr WZ_Lampe_Schrank model HM-LC-SW2-FM&lt;br /&gt;
attr WZ_Lampe_Schrank room Wohnzimmer&lt;br /&gt;
attr WZ_Lampe_Schrank serialNr xxxxxxxxxx&lt;br /&gt;
attr WZ_Lampe_Schrank subType switch&lt;br /&gt;
define FileLog_WZ_Lampe_Schrank FileLog /var/log/fhem/WZ_Lampe_Schrank-%Y.log WZ_Lampe_Schrank&lt;br /&gt;
attr FileLog_WZ_Lampe_Schrank logtype text&lt;br /&gt;
attr FileLog_WZ_Lampe_Schrank room Server&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Aktor für die Lampen auf der Couchseite des Wohnzimmers&lt;br /&gt;
##  dies ist ein gemeinsamer Aktor mit WZ_Lampe_Schrank&lt;br /&gt;
#########################################################################&lt;br /&gt;
define WZ_Lampe_Couch CUL_HM xxxxxx&lt;br /&gt;
attr WZ_Lampe_Couch devInfo 020100&lt;br /&gt;
attr WZ_Lampe_Couch firmware 1.9&lt;br /&gt;
attr WZ_Lampe_Couch hmClass receiver&lt;br /&gt;
attr WZ_Lampe_Couch model HM-LC-SW2-FM&lt;br /&gt;
attr WZ_Lampe_Couch room Wohnzimmer&lt;br /&gt;
attr WZ_Lampe_Couch serialNr xxxxxxxxxxx&lt;br /&gt;
attr WZ_Lampe_Couch subType switch&lt;br /&gt;
define FileLog_WZ_Lampe_Couch FileLog /var/log/fhem/WZ_Lampe_Couch-%Y.log WZ_Lampe_Couch&lt;br /&gt;
attr FileLog_WZ_Lampe_Couch logtype text&lt;br /&gt;
attr FileLog_WZ_Lampe_Couch room Server&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Doppeltaster im Wohnzimmer beim Flur&lt;br /&gt;
## Dieser Taster schaltet die Lampen im Wohnzimmer bei dem Schrank&lt;br /&gt;
## und bei der Couch&lt;br /&gt;
#########################################################################&lt;br /&gt;
define WZ_Taster CUL_HM xxxxxx&lt;br /&gt;
attr WZ_Taster devInfo 040000&lt;br /&gt;
attr WZ_Taster firmware 1.2&lt;br /&gt;
attr WZ_Taster hmClass sender&lt;br /&gt;
attr WZ_Taster model HM-PB-4-WM&lt;br /&gt;
attr WZ_Taster room Wohnzimmer&lt;br /&gt;
attr WZ_Taster serialNr xxxxxxxxxxx&lt;br /&gt;
attr WZ_Taster subType remote&lt;br /&gt;
define FileLog_WZ_Taster FileLog /var/log/fhem/WZ_Taster-%Y.log WZ_Taster&lt;br /&gt;
attr FileLog_WZ_Taster logtype text&lt;br /&gt;
attr FileLog_WZ_Taster room Server&lt;br /&gt;
define WZ_Taster_On_Links notify WZ_Taster:Btn1.on.* set WZ_Lampe_Schrank toggle&lt;br /&gt;
attr WZ_Taster_On_Links room Wohnzimmer&lt;br /&gt;
define WZ_Taster_Off_Links notify WZ_Taster:Btn1.off.* set WZ_Lampe_Schrank toggle&lt;br /&gt;
attr WZ_Taster_Off_Links room Wohnzimmer&lt;br /&gt;
define WZ_Taster_On_Rechts notify WZ_Taster:Btn2.on.* set WZ_Lampe_Couch toggle&lt;br /&gt;
attr WZ_Taster_On_Rechts room Wohnzimmer&lt;br /&gt;
define WZ_Taster_Off_Rechts notify WZ_Taster:Btn2.off.* set WZ_Lampe_Couch toggle&lt;br /&gt;
attr WZ_Taster_Off_Rechts room Wohnzimmer&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Jalousie soll immer morgens um acht Uhr hochgefahren werden, wobei aufgrund der Verkabelung am Aktor Hochfahren mit dem Status on eingeleitet wird. Dies ist anders als im Gästezimmer oder Flur! Das Herunterfahren soll variabel aufgrund der Untergangszeit der Sonne geschehen. Dabei ist die geografische Koordinate in der Datei /usr/share/fhem/FHEM/99_SUNRISE_EL.pm einzutragen. Koordinaten lassen sich durch Tools für GoogleMap ermitteln.&lt;br /&gt;
&lt;br /&gt;
Die früheste Zeit zum Herunterfahren ist 17:00 Uhr und spätestens um 21:00 Uhr sollen die Jalousien auf jeden Fall heruntergefahren sein. Die Taster schalten egal bei welchem Tastendruck das Licht an oder aus.&lt;br /&gt;
&lt;br /&gt;
=== /etc/fhem/Flur.cfg ===&lt;br /&gt;
Im Flur werden derzeit eine Jalousie und die Beleuchtung gesteuert. Installiert sind ein  Unterputzjalousieaktor, ein 4fach Taster, zwei 2fach Taster, ein Unterputzdoppelaktor. Dadurch wurde eine Wechselschaltung simuliert.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#########################################################################&lt;br /&gt;
## Flur&lt;br /&gt;
## Zweck.........: Alle Homematic Komponenten im Flur&lt;br /&gt;
## Standort......: Flur&lt;br /&gt;
## Typ...........: verschiedene&lt;br /&gt;
## Installation..: 15.09.2011&lt;br /&gt;
## Besonderheiten: &lt;br /&gt;
##         &lt;br /&gt;
#########################################################################&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Aktor für die Rollladen&lt;br /&gt;
#########################################################################&lt;br /&gt;
define FL_Rollladen CUL_HM xxxxxx&lt;br /&gt;
attr FL_Rollladen devInfo 010100&lt;br /&gt;
attr FL_Rollladen firmware 1.5&lt;br /&gt;
attr FL_Rollladen hmClass receiver&lt;br /&gt;
attr FL_Rollladen model HM-LC-BL1-FM&lt;br /&gt;
attr FL_Rollladen room Flur&lt;br /&gt;
attr FL_Rollladen serialNr xxxxxxxxxx&lt;br /&gt;
attr FL_Rollladen subType blindActuator&lt;br /&gt;
attr FL_Rollladen eventMap on:zu off:offen&lt;br /&gt;
#########################################################################&lt;br /&gt;
## eigenes Log&lt;br /&gt;
#########################################################################&lt;br /&gt;
define FL_Rollladen_FileLog FileLog /var/log/fhem/FL_Rollladen-%Y.log FL_Rollladen&lt;br /&gt;
attr FL_Rollladen_FileLog logtype text&lt;br /&gt;
attr FL_Rollladen_FileLog room Server&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Rollladen soll fix um 08:00h jeden Tag hochfahren&lt;br /&gt;
#########################################################################&lt;br /&gt;
define FL_Rollladen_hoch at *08:00 set FL_Rollladen offen&lt;br /&gt;
attr FL_Rollladen_hoch room Flur&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Rollladen soll variabel je nach Sonnenuntergang, aber&lt;br /&gt;
## nicht vor 17:00h und nicht nach 21:00h jeden Tag runterfahren&lt;br /&gt;
#########################################################################&lt;br /&gt;
define FL_Rollladen_runter at *{sunset(0,&amp;quot;17:00&amp;quot;,&amp;quot;21:00&amp;quot;)} set FL_Rollladen zu&lt;br /&gt;
attr FL_Rollladen_runter room Flur&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Aktor für die Lampen im FLur bei der Garderobe&lt;br /&gt;
##  Dies ist ein gemeinsamer Aktor mit FL_Lampe_Treppe&lt;br /&gt;
#########################################################################&lt;br /&gt;
define FL_Lampe_Garderobe CUL_HM xxxxxx&lt;br /&gt;
attr FL_Lampe_Garderobe devInfo 020100&lt;br /&gt;
attr FL_Lampe_Garderobe firmware 1.9&lt;br /&gt;
attr FL_Lampe_Garderobe hmClass receiver&lt;br /&gt;
attr FL_Lampe_Garderobe model HM-LC-SW2-FM&lt;br /&gt;
attr FL_Lampe_Garderobe room Flur&lt;br /&gt;
attr FL_Lampe_Garderobe serialNr xxxxxxxxxx&lt;br /&gt;
attr FL_Lampe_Garderobe subType switch&lt;br /&gt;
define FileLog_FL_Lampe_Garderobe FileLog /var/log/fhem/FL_Lampe_Garderobe-%Y.log FL_Lampe_Garderobe&lt;br /&gt;
attr FileLog_FL_Lampe_Garderobe logtype text&lt;br /&gt;
attr FileLog_FL_Lampe_Garderobe room Server&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Aktor für die Lampen im FLur bei der kleinen Treppe&lt;br /&gt;
##  Dies ist ein gemeinsamer Aktor mit FL_Lampe_Garderobe&lt;br /&gt;
#########################################################################&lt;br /&gt;
define FL_Lampe_Treppe CUL_HM xxxxxx&lt;br /&gt;
attr FL_Lampe_Treppe devInfo 020100&lt;br /&gt;
attr FL_Lampe_Treppe firmware 1.9&lt;br /&gt;
attr FL_Lampe_Treppe hmClass receiver&lt;br /&gt;
attr FL_Lampe_Treppe model HM-LC-SW2-FM&lt;br /&gt;
attr FL_Lampe_Treppe room Flur&lt;br /&gt;
attr FL_Lampe_Treppe serialNr xxxxxxxxxx&lt;br /&gt;
attr FL_Lampe_Treppe subType switch&lt;br /&gt;
define FileLog_FL_Lampe_Treppe FileLog /var/log/fhem/FL_Lampe_Treppe-%Y.log FL_Lampe_Treppe&lt;br /&gt;
attr FileLog_FL_Lampe_Treppe logtype text&lt;br /&gt;
attr FileLog_FL_Lampe_Treppe room Server&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Taster im Flur beim Eingang Badezimmer&lt;br /&gt;
## Dieser Taster schaltet die Lampen im Flur bei der kleinen Treppe&lt;br /&gt;
## arbeitet im Wechsel mit FL_Taster&lt;br /&gt;
#########################################################################&lt;br /&gt;
define FL_Taster_Bad CUL_HM xxxxxx&lt;br /&gt;
attr FL_Taster_Bad devInfo 020000&lt;br /&gt;
attr FL_Taster_Bad firmware 1.2&lt;br /&gt;
attr FL_Taster_Bad hmClass sender&lt;br /&gt;
attr FL_Taster_Bad model HM-PB-2-WM&lt;br /&gt;
attr FL_Taster_Bad room Flur&lt;br /&gt;
attr FL_Taster_Bad serialNr xxxxxxxxxx&lt;br /&gt;
attr FL_Taster_Bad subType remote&lt;br /&gt;
define FileLog_FL_Taster_Bad FileLog /var/log/fhem/FL_Taster_Bad-%Y.log FL_Taster_Bad&lt;br /&gt;
attr FileLog_FL_Taster_Bad logtype text&lt;br /&gt;
attr FileLog_FL_Taster_Bad room Server&lt;br /&gt;
define FL_Taster_Bad_On notify FL_Taster_Bad:Btn1.on.* set FL_Lampe_Treppe toggle&lt;br /&gt;
attr FL_Taster_Bad_On room Flur&lt;br /&gt;
define FL_Taster_Bad_Off notify FL_Taster_Bad:Btn1.off.* set FL_Lampe_Treppe toggle&lt;br /&gt;
attr FL_Taster_Bad_Off room Flur&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Taster im Flur beim Wohnungseingang&lt;br /&gt;
##  Dieser Taster schaltet die Lampen im Flur bei der Garderobe&lt;br /&gt;
##  arbeitet im Wechsel mit FL_Taster&lt;br /&gt;
#########################################################################&lt;br /&gt;
define FL_Taster_Eingang CUL_HM xxxxxx&lt;br /&gt;
attr FL_Taster_Eingang devInfo 020000&lt;br /&gt;
attr FL_Taster_Eingang firmware 1.2&lt;br /&gt;
attr FL_Taster_Eingang hmClass sender&lt;br /&gt;
attr FL_Taster_Eingang model HM-PB-2-WM&lt;br /&gt;
attr FL_Taster_Eingang room Flur&lt;br /&gt;
attr FL_Taster_Eingang serialNr xxxxxxxxxx&lt;br /&gt;
attr FL_Taster_Eingang subType remote&lt;br /&gt;
define FileLog_FL_Taster_Eingang FileLog /var/log/fhem/FL_Taster_Eingang-%Y.log FL_Taster_Eingang&lt;br /&gt;
attr FileLog_FL_Taster_Eingang logtype text&lt;br /&gt;
attr FileLog_FL_Taster_Eingang room Server&lt;br /&gt;
define FL_Taster_Eingang_On notify FL_Taster_Eingang:Btn1.on.* set FL_Lampe_Garderobe toggle&lt;br /&gt;
attr FL_Taster_Eingang_On room Flur&lt;br /&gt;
define FL_Taster_Eingang_Off notify FL_Taster_Eingang:Btn1.off.* set FL_Lampe_Garderobe toggle&lt;br /&gt;
attr FL_Taster_Eingang_Off room Flur&lt;br /&gt;
#########################################################################&lt;br /&gt;
## Doppeltaster im Flur beim Wohnzimmer&lt;br /&gt;
## Dieser Taster schaltet die Lampen im Flur bei der Garderobe und&lt;br /&gt;
## im Flur bei der kleinen Treppe&lt;br /&gt;
##  Diese Taster arbeiten als Wechselschaltung &lt;br /&gt;
#########################################################################&lt;br /&gt;
define FL_Taster CUL_HM xxxxxx&lt;br /&gt;
attr FL_Taster devInfo 040000&lt;br /&gt;
attr FL_Taster firmware 1.2&lt;br /&gt;
attr FL_Taster hmClass sender&lt;br /&gt;
attr FL_Taster model HM-PB-4-WM&lt;br /&gt;
attr FL_Taster room Flur&lt;br /&gt;
attr FL_Taster serialNr xxxxxxxxxx&lt;br /&gt;
attr FL_Taster subType remote&lt;br /&gt;
define FileLog_FL_Taster FileLog /var/log/fhem/FL_Taster-%Y.log FL_Taster&lt;br /&gt;
attr FileLog_FL_Taster logtype text&lt;br /&gt;
attr FileLog_FL_Taster room Server&lt;br /&gt;
define FL_Taster_On_Links notify FL_Taster:Btn1.on.* set FL_Lampe_Treppe toggle&lt;br /&gt;
attr FL_Taster_On_Links room Flur&lt;br /&gt;
define FL_Taster_Off_Links notify FL_Taster:Btn1.off.* set FL_Lampe_Treppe toggle&lt;br /&gt;
attr FL_Taster_Off_Links room Flur&lt;br /&gt;
define FL_Taster_On_Rechts notify FL_Taster:Btn2.on.* set FL_Lampe_Garderobe toggle&lt;br /&gt;
attr FL_Taster_On_Rechts room Flur&lt;br /&gt;
define FL_Taster_Off_Rechts notify FL_Taster:Btn2.off.* set FL_Lampe_Garderobe toggle&lt;br /&gt;
attr FL_Taster_Off_Rechts room Flur&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Jalousie soll immer morgens um 8 Uhr hoch gefahren werden, wobei aufgrund der Verkabelung am Aktor Hochfahren mit dem Status off eingeleitet wird. Das Herunterfahren soll variabel aufgrund der Untergangszeit der Sonne geschehen. Siehe [[Sunset Sunrise]].&lt;br /&gt;
&lt;br /&gt;
Die früheste Zeit zum Herunterfahren ist 17:00 Uhr und spätestens um 21:00 Uhr sollen die Jalousien auf jeden Fall heruntergefahren sein. Mit den Tastern werden 2 Wechselschaltungen simuliert, wobei derzeit keine besonderen Schaltvorgänge ermöglicht werden.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Examples]]&lt;/div&gt;</summary>
		<author><name>Yfhem</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=MAX&amp;diff=3482</id>
		<title>MAX</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=MAX&amp;diff=3482"/>
		<updated>2013-11-10T21:52:38Z</updated>

		<summary type="html">&lt;p&gt;Yfhem: Added to Kategorie:Heizungsventile.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;MAX! ist eine Heizungssteuerung, die die Raumtemperatur durch funkvernetzte Heizkörperthermostate an den Heizkörpern regelt. MAX! stellt eine Alternative zur FHT und HomeMatic Heizungsteuerung dar.&lt;br /&gt;
== Features ==&lt;br /&gt;
* Bidirektionale Kommuniktion (jeder Befehl wird mit ACK quittiert)&lt;br /&gt;
* Heizkörperthermostate übertragen auch die gemessene Temperatur&lt;br /&gt;
== FHEM Module ==&lt;br /&gt;
Die MAX Komponenten können über den MAX!Cube per Modul 00_MAXLAN,&lt;br /&gt;
oder über einen [[CUL]] oder [[CUNO]] per 14_CUL_MAX gesteuert werden.&lt;br /&gt;
In beiden Fällen werden die einzelnen MAX! Geräte vom Modul 10_MAX&lt;br /&gt;
bereitgestellt.&lt;br /&gt;
&lt;br /&gt;
Nachteil vom Cube ist, dass man ein Polling machen muss, um zu sehen ob sich der Status eines Gerätes geändert hat. Z.B.&lt;br /&gt;
checkt man das alle 30 Sekunden. Dann sieht man aber auch Änderungen möglicherweise erst nach 30 Sekunden.&lt;br /&gt;
Beim CUL sieht man die Funknachrichten direkt.&lt;br /&gt;
Es wird aber auch ein Kombimodus unterstützt, in welchem man alles über den MAXLAN steuert,&lt;br /&gt;
der CUL_MAX aber für zeitnahe Benachrichtigungen sorgt.&lt;br /&gt;
&lt;br /&gt;
== Komponenten ==&lt;br /&gt;
=== Limit ===&lt;br /&gt;
* Auf 8 Thermostate pro Raum beschränkt&lt;br /&gt;
* Limit mit Cube liegt bei ca. 140 Geräten. Durch die [[1% Regel]]ung dürften es aber in der Praxis weniger sein&lt;br /&gt;
&lt;br /&gt;
=== Heizkörperthermostate ===&lt;br /&gt;
Unterstützt wird das Einstellen von&lt;br /&gt;
&lt;br /&gt;
* desiredTemperature = auto (Wochenprogramm), manuell (4.5 - 30.5), eco, comfort, boost, until&lt;br /&gt;
** (Besonderheit der Werte: 4.5 = Off und 30.5 = On)&lt;br /&gt;
* ecoTemperature, comfortTemperature, measurementOffset, maximumTemperature, minimumTemperature, windowOpenTemperature, windowOpenDuration&lt;br /&gt;
&lt;br /&gt;
und das Auslesen&lt;br /&gt;
&lt;br /&gt;
* der gemessenen Temperatur. (Hinweis: Wird bei Verwendung des MAX CUBE nicht regelmäßig aktualisiert)&lt;br /&gt;
=== Fensterkontakte ===&lt;br /&gt;
Der aktuelle Status (offen/geschlossen) wird (praktisch ohne Verzögerung) angezeigt. &#039;&#039;&#039;[[Nur bei CUL, oder?]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Falls wir nicht mit Ack antworten, wird er mehrmals wiederholt.&lt;br /&gt;
&lt;br /&gt;
Die Fensterkontakte können zusätzlich direkt an mehrere Heizkörperthermostate angelernt werden,&lt;br /&gt;
und versetzen diese dann automatisch in windowOpenTemperature während sie geöffnet sind.&lt;br /&gt;
&lt;br /&gt;
Wenn der Fensterkontakt an mindestens ein Heizkörperthermostat angelernt ist, dann sendet er zusätzlich stündlich seinen aktuellen Zustand.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beispiel Autocreate&#039;&#039;&#039;&lt;br /&gt;
 MAXLAN_Parse: Paired new device, type ShutterContact, addr 1a2b3c, serial JEQ0123456&lt;br /&gt;
 autocreate: define MAX_1a2b3c MAX ShutterContact 1a2b3c&lt;br /&gt;
 autocreate: define FileLog_MAX_1a2b3c FileLog /fhem/log/MAX_1a2b3c-%Y.log MAX_1a2b3c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beispiel Definition&#039;&#039;&#039;&lt;br /&gt;
 define MAX_1a2b3c MAX ShutterContact 1a2b3c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beispiel Log&#039;&#039;&#039;&lt;br /&gt;
 ==&amp;gt; MAX_1a2b3c-2013.log &amp;lt;==&lt;br /&gt;
 2013-10-20_18:52:08 MAX_1a2b3c battery: ok&lt;br /&gt;
 2013-10-20_18:52:08 MAX_1a2b3c onoff: 0&lt;br /&gt;
 2013-10-20_18:52:08 MAX_1a2b3c closed&lt;br /&gt;
&lt;br /&gt;
=== Wandthermostate ===&lt;br /&gt;
Unterstützt wird das Einstellen von&lt;br /&gt;
&lt;br /&gt;
* desiredTemperature (siehe Heizkörperthermostate), ecoTemperature, comfortTemperature&lt;br /&gt;
&lt;br /&gt;
und das Auslesen&lt;br /&gt;
&lt;br /&gt;
* der gemessenen Temperatur.&lt;br /&gt;
=== Eco-Taster ===&lt;br /&gt;
&#039;&#039;&#039;Achtung&#039;&#039;&#039;: Zumindest über MAXLAN lässt sich der Zustand weder auslesen, noch wird&lt;br /&gt;
man über Veränderungen informiert.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Per CUL_MAX funktioniert der Eco-Taster problemlos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Beispielhafte Definition ====&lt;br /&gt;
 define BUTTON.EG MAX PushButton 069d33&lt;br /&gt;
&lt;br /&gt;
==== Beispielhafte Event-Ausgabe ====&lt;br /&gt;
&lt;br /&gt;
 2013-07-02 21:06:14 MAX BUTTON.EG battery: ok&lt;br /&gt;
 2013-07-02 21:06:14 MAX BUTTON.EG onoff: 0&lt;br /&gt;
 2013-07-02 21:06:14 MAX BUTTON.EG closed&lt;br /&gt;
&lt;br /&gt;
Wobei gilt&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! onoff !! Bedeutung&lt;br /&gt;
|-&lt;br /&gt;
| 0 || Eco&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Auto&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Anlernen per CUL ==&lt;br /&gt;
Das Anlernen funktioniert nur mit zurückgesetzen (Werksreset, also entweder alle 3 Tasten am Heizkörperthermostate betätigen, Batterien einlegen, Anzeige rES; oder in FHEM set factoryReset) Heizkörperthermostaten. Bereits an einen Cube angelernte Heizungsregler können NICHT an ein CUL angemeldet werden, hier ist dann nur das &amp;quot;mitlesen&amp;quot; der Funkbotschaften möglich.&lt;br /&gt;
Info: Durch den Reset geht auch ein evtl. per Cube eingestelltes Automatikprogramm verloren.&lt;br /&gt;
&lt;br /&gt;
== Konfiguration ==&lt;br /&gt;
Siehe [http://fhem.de/commandref.html#CUL_MAX CUL_MAX].&lt;br /&gt;
&lt;br /&gt;
Die Module sind so konzipiert, dass man die offizielle Max! Software nicht benutzen muss. Man kann alles aus FHEM heraus machen.&lt;br /&gt;
Nachdem das MAXLAN oder CUL_MAX Modul konfiguriert wurden (siehe unten), werden bereits gepairte Geräte automatisch erkannt.&lt;br /&gt;
&lt;br /&gt;
=== MAXLAN ===&lt;br /&gt;
Minimale Konfiguration:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define ml MAXLAN 192.168.178.2&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
wobei 192.168.178.2 die IP des MAX! Cube ist. Das MAXLAN-Modul findet selbstständig bereits gepairte Geräte und trägt diese in die Konfigurationsdatei fhem.cfg ein. Diese können dann im WEB-Interface mittels „alias“ einen eindeutigen Namen bekommen.&lt;br /&gt;
&lt;br /&gt;
=== CUL_MAX ===&lt;br /&gt;
Minimale Konfiguration:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define CUL0 CUL /dev/ttyACM0@9600 0000&lt;br /&gt;
 attr CUL0 rfmode MAX&lt;br /&gt;
 define cm CUL_MAX 123456&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
=== Anlernen ===&lt;br /&gt;
Dazu muss der &amp;quot;pairmode&amp;quot; auf MAXLAN/CUL_MAX per &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set cm/ml pairmode&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
oder über das Web-Interface aktiviert werden. Falls kein Parameter angegeben wird, ist er&lt;br /&gt;
standardmäßig für 60 Sekunden aktiviert. In dieser Zeit können MAX! Geräte nach deren Anleitung&lt;br /&gt;
in den Anlernmodus versetzt werden, um sie mit FHEM zu pairen.&lt;br /&gt;
&lt;br /&gt;
=== Geräte untereinander anlernen ===&lt;br /&gt;
Es gibt einen anderen Befehl, um Devices untereinander anzulernen (in neueren Versionen des MAX Moduls enthalten, heißt &amp;quot;associate&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Wenn ich z.B.&lt;br /&gt;
set MAXFensterKontakt0 associate MaxHeizkörperthermostat3&lt;br /&gt;
ausführe, dann&lt;br /&gt;
sendet der MAXFensterKontakt0 jede Änderung zusätzlich (direkt über Funk, ohne Cube oder FHEM)&lt;br /&gt;
an das MaxHeizkörperthermostat3.&lt;br /&gt;
&lt;br /&gt;
Damit MaxHeizkörperthermostat3 auch auf die Nachrichten vom MAXFensterKontakt0 hört, muss noch ein&lt;br /&gt;
set MaxHeizkörperthermostat3 associate MAXFensterKontakt0&lt;br /&gt;
erfolgen.&lt;br /&gt;
&lt;br /&gt;
Dann wechselt MaxHeizkörperthermostat3 immer dann auf die windowOpenTemperature, wenn der MAXFensterKontakt0 offen ist.&lt;br /&gt;
Dabei muss die groupId von beiden Geräte gar nicht gleich sein! (Die Semantik der groupId erschließt sich mir deshalb noch nicht ganz.&lt;br /&gt;
Ich glaube, man kann damit Befehle (ala set desiredTemperature) an mehrere Thermostate gleichzeitig richten. Im Moment sendet FHEM einfach an jedes Thermostat einen Befehl.)&lt;br /&gt;
&lt;br /&gt;
Wahrscheinlich funktioniert associate genauso zwischen Heizkörper/Wandthermostaten. Das müsste mal eine ausprobieren und dann hier berichten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Temperatursturzerkennung ===&lt;br /&gt;
Die Heizkörperthermostate verfügen über eine interne &amp;quot;Fenster-offen Erkennung&amp;quot; (Temperatursturzerkennung). Wird diese ausgelöst regeln sie für die Zeit die unter &amp;quot;windowOpenDuration&amp;quot; festgelegt wurde auf die als &amp;quot;windowOpenTemperature&amp;quot; festgelegt Temperatur herunter und danach wieder auf die zuvor eingestellte Temperatur zurück.&lt;br /&gt;
Nachteil: Die Erkennung benötigt etwas Zeit und reagiert nicht sofort wie es beim Fensterkontakt oben der Fall ist&lt;br /&gt;
Vorteil: Es ist kein Fensterkontakt erforderlich&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtig:&#039;&#039;&#039; Setzt man die windowOpenTemperature auf &amp;quot;Off&amp;quot; (= 4.5 Grad), dann ist die Fenster-offen-Funktion abgeschaltet. Und auch wenn die desiredTemperature gerade auf &amp;quot;On&amp;quot; (= 30.5 Grad&amp;quot;) steht, geht der Heizkörper nicht in die Fenster-offen-Funktion.&lt;br /&gt;
&lt;br /&gt;
=== Externer Sensor für Fenster-offen-Erkennung ===&lt;br /&gt;
Ziel dieses Abschnittes ist es, einen externen Sensor (z.B. 1-Wire o.ä.) zu benutzen, um die MAX Heizkörperthermostate in und aus dem Fenster-offen Modus zu holen.&lt;br /&gt;
Dazu sei bereits ein CUL, ein CUL_MAX und ein MAX Heizkörper definiert:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define CUL0 CUL /dev/ttyACM0@9600 0000&lt;br /&gt;
 define cm CUL_MAX 123456&lt;br /&gt;
 define Heizung MAX HeatingThermostat abcdef&lt;br /&gt;
 attr Heizung IODev cm&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Wir müssen einmalig den internen Fake-Fensterkontakt mit dem Heizkörper assozieren&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set Heizung associate fakeShutterContact&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
damit dieser die Nachrichten vom Fensterkontakt akzeptiert.&lt;br /&gt;
&lt;br /&gt;
Nun können wir per &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set cm fakeSC Heizung 1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
die Nachricht &amp;quot;Fenster offen&amp;quot; an die Heizung senden und per&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set cm fakeSC Heizung 0&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
die Nachricht &amp;quot;Fenster zu&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Externer Temperatursensor für Heizkörperregelung ===&lt;br /&gt;
Ziel dieses Abschnittes ist es, einen externen Sensor (z.B. 1-Wire o.ä.) zu benutzen, um die MAX Heizkörperthermostate zu regeln.&lt;br /&gt;
Dazu sei bereits ein CUL, ein CUL_MAX und ein MAX Heizkörper definiert:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define CUL0 CUL /dev/ttyACM0@9600 0000&lt;br /&gt;
 define cm CUL_MAX 123456&lt;br /&gt;
 define Heizung MAX HeatingThermostat abcdef&lt;br /&gt;
 attr Heizung IODev cm&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Wir müssen einmalig das interne Fake-Wandthermostat mit dem Heizkörper assozieren: &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set Heizung associate fakeWallThermostat&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
damit dieser die Nachrichten vom Wandthermostat akzeptiert. Achtung: Dies schaltet im&lt;br /&gt;
Heizkörperthermostat die Regelung mit dem internen Temperaturfühler aus. Ohne die gleich kommenden &amp;quot;fakeWT&amp;quot; Nachrichten wird das Heizkörperthermostat nicht mehr regeln.&lt;br /&gt;
&lt;br /&gt;
Nun können wir per &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set cm fakeWT Heizung 14.5 12.1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
die desiredTemperature 14.5 und gemessene Temperatur 12.1 an die Heizung senden.&lt;br /&gt;
Diese wird dann die Ventile öffnen, bis wir ein &amp;quot;fakeWT&amp;quot; absetzten, dessen gemessene Temperatur&lt;br /&gt;
höher als die desiredTemperature ist.&lt;br /&gt;
&lt;br /&gt;
Falls man zu lange Zeit (ca. 30 Minuten) kein neues &amp;quot;fakeWT&amp;quot; sendet, wird bei Heizung das Attribut rferror gleich 1. Es ist nicht klar, ob das neben diesem Attribute auch Auswirkung auf die Funktionalität hat. Es wurde beobachtet, das dann der interne Temperatursensor bis zum nächsten FakeWT aktiviert wird.&lt;br /&gt;
&lt;br /&gt;
Beispiel eines automatischen Sendens einer externen Temperatur, der externe Temperatursensor heißt &amp;quot;WS300&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define SendExtTemp notify WS300:temperature.* {&lt;br /&gt;
 MaxFakeWallThermostat(&amp;quot;Heizung&amp;quot;,&amp;amp;#160;%EVTPART1);&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Dazu die Funktion, bitte in 99_MyUtils.pm eintragen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sub MaxFakeWallThermostat($$)&lt;br /&gt;
{&lt;br /&gt;
 my ($heizung, $aktTemp)    = @_;&lt;br /&gt;
 my $CULMAX     = $defs{$heizung}{LASTInputDev};&lt;br /&gt;
 my $desiredTemp   = ReadingsVal($heizung, &amp;quot;desiredTemperature&amp;quot;, undef);&lt;br /&gt;
 my $windowOpenTemp = ReadingsVal($heizung, &amp;quot;windowOpenTemperature&amp;quot;, undef);&lt;br /&gt;
 my $lastTemp    = ReadingsVal($heizung, &amp;quot;LastExtTemperature&amp;quot;, 0);&lt;br /&gt;
 my $lastSet     = ReadingsTimestamp($heizung, &amp;quot;LastExtTemperature&amp;quot;, 0);&lt;br /&gt;
 if($desiredTemp &amp;amp;amp;&amp;amp;amp; $windowOpenTemp &amp;amp;amp;&amp;amp;amp;&lt;br /&gt;
 $desiredTemp&amp;amp;#160;!= $windowOpenTemp &amp;amp;amp;&amp;amp;amp; &lt;br /&gt;
 (time()-time_str2num($lastSet) &amp;amp;gt;= 600 || abs($aktTemp-$lastTemp)&amp;amp;gt;=0.2 )) {&lt;br /&gt;
  Log 3, &amp;quot;set $CULMAX fakeWT $heizung $desiredTemp $aktTemp&amp;quot;;&lt;br /&gt;
  readingsSingleUpdate($defs{$heizung}, &amp;quot;LastExtTemperature&amp;quot;, $aktTemp, 0);&lt;br /&gt;
  fhem(&amp;quot;set $CULMAX fakeWT $heizung $desiredTemp $aktTemp&amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
In diesem Beispiel heißt das zu steuernde Thermostat &amp;quot;Heizung&amp;quot;. Die vom externen Sensor gemessene Temperatur wird nur unter den folgenden Voraussetzungen gesendet:&lt;br /&gt;
- Das Thermostat befindet sich nicht im &amp;quot;Fenster-offen&amp;quot; Modus, und&lt;br /&gt;
- das letzte Senden liegt mindestens 10min zurück&lt;br /&gt;
- oder die gemessene Temperatur weicht um mindestens 0.2°C von der letzten gesendeten Temperatur ab&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Wochenheizplan für Wandthermostat erstellen ===&lt;br /&gt;
Ein Heizplan, den der Wandthermostat versteht und speichern kann, sieht folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set WZ_Wandthermostat weekProfile &lt;br /&gt;
 Mon 17,17:30,20,23:00,17 &lt;br /&gt;
 Tue 17,17:30,20,23:00,17&lt;br /&gt;
 Wed 17,17:30,20,23:00,17&lt;br /&gt;
 Thu 17,17:30,20,23:00,17&lt;br /&gt;
 Fri 17,15:00,20,23:00,17&lt;br /&gt;
 Sat 17,11:00,20,23:00,17&lt;br /&gt;
 Sun 17,11:00,20,23:00,17&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Genauer erläutert wird die Funktionsweise auch unter [http://fhem.de/commandref.html#MAX http://fhem.de/commandref.html#MAX]. &lt;br /&gt;
Der gesamte Block kann kopiert und als FHEM Befehl abgesetzt werden. Unter Umständen benötigt das Speichern, bzw Übertragen wegen der Größe etwas Zeit, bevor die aktuellen, neu gesetzten Werte wieder ausgelesen werden können.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Werte Plotten ===&lt;br /&gt;
[[File:Plot_MAX_Beispiel.png|thumb|right|Plot eines MAX Heizkörperthermostates]]&lt;br /&gt;
In den Log-Dateien wird regelmäßig der Batteriestatus, die Soll-Temperatur, die Ventilstellung und die Ist-Temperatur (Vorsicht wird nicht zuverlässig, möglicherweise nur bei einer Änderung der Ventilstellung übertragen.)&lt;br /&gt;
&lt;br /&gt;
Inhalt der LOG-Datei eines Heizkörperthermostates:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;2012-12-30_08:55:31 MAX_018d3f battery: ok&lt;br /&gt;
2012-12-30_08:55:31 MAX_018d3f desiredTemperature: 19.5&lt;br /&gt;
2012-12-30_08:55:31 MAX_018d3f valveposition: 83&lt;br /&gt;
2012-12-30_08:55:31 MAX_018d3f temperature: 16.4&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit folgender Plot-Datei (max_temp.gplot) kann der Verlauf der Sensordaten gut angezeigt werden. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set terminal png transparent size &amp;amp;lt;SIZE&amp;amp;gt; crop&lt;br /&gt;
set output &#039;&amp;amp;lt;OUT&amp;amp;gt;.png&#039;&lt;br /&gt;
set xdata time&lt;br /&gt;
set timefmt &amp;quot;%Y-%m-%d_%H:%M:%S&amp;quot;&lt;br /&gt;
set xlabel &amp;quot; &amp;quot;&lt;br /&gt;
set y2tics&lt;br /&gt;
set title &#039;&amp;amp;lt;L1&amp;amp;gt;&#039;&lt;br /&gt;
set grid xtics y2tics&lt;br /&gt;
set y2label &amp;quot;Temperatur in Grad Celsius&amp;quot;&lt;br /&gt;
set ylabel &amp;quot;Signal in&amp;amp;#160;%&amp;quot;&lt;br /&gt;
#FileLog 4:desiredTemperature:0:&lt;br /&gt;
#FileLog 4:temperature:0:&lt;br /&gt;
#FileLog 4:valveposition:0:&lt;br /&gt;
plot \&lt;br /&gt;
&amp;quot;&amp;amp;lt; egrep &#039;desiredTemperature&#039; &amp;amp;lt;IN&amp;amp;gt;&amp;quot;\&lt;br /&gt;
  using 1:4 axes x1y2 title &#039;Soll-Temperatur (C)&#039; with lines lw 2 \&lt;br /&gt;
&amp;quot;&amp;amp;lt; egrep &#039;temperature&#039; &amp;amp;lt;IN&amp;amp;gt;&amp;quot;\&lt;br /&gt;
  using 1:4 axes x1y2 title &#039;Ist-Temperatur(ungenau)(C)&#039; with lines lw 2 \&lt;br /&gt;
&amp;quot;&amp;amp;lt; egrep &#039;valveposition&#039; &amp;amp;lt;IN&amp;amp;gt;&amp;quot;\&lt;br /&gt;
  using 1:4 axes x1y1 title &#039;Ventil (%)&#039; with lines lw 2&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Einbinden eines Plots in der fhem.cgf&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#Werte plotten&lt;br /&gt;
define MAX_017840_weblink weblink fileplot FileLog_MAX_017840:max_temp:CURRENT&lt;br /&gt;
attr MAX_017840_weblink label &amp;quot;Kueche Soll-Temperatur Min $data{min1}, Max $data{max1}, Last $data{currval1}&amp;quot;&lt;br /&gt;
attr MAX_017840_weblink room MAX&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
=== Nützliche kleine Erweiterungen ===&lt;br /&gt;
&#039;&#039;&#039;Einen Alias-Namen vergeben für eine bessere Lesbarkeit im Webinterface&#039;&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr MAX_018d3f alias Kueche&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Die Anzeigen für die einzelnen File-Logs füllen das Webinterface schnell und machen es unübersichtlich.&#039;&#039;&#039; Die File-Logs können einfach in einen separaten Raum verbannt werden.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr FileLog_MAX_018d3f room LOG&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Einstellmöglichkeit für die Soll-Temperatur direkt in der „Raum-Seite“ schaffen.&#039;&#039;&#039; Die Temperatur wird dauerhaft auf einen bestimmten Wert gestellt. Das Wochenprogramm in dem Thermostat wird deaktiviert.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr MAX_018d3f webCmd desiredTemperature&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Soll-Temperatur setzen, ohne das automatische Programm des Thermostates abzuschalten.&#039;&#039;&#039;&lt;br /&gt;
Es besteht die Möglichkeit eine Soll-Temperatur bis zum nächsten Schaltzeitpunkt zu setzen. Zum Beispiel kann das automatische Wochenprogramm in den Thermostaten dazu genutzt werden, nur abends die Soll-Temperatur zu senken. So läuft die Heizung nachts nicht voll durch. Wenn jedoch die Temperatur im Web-Interface von Fhem verändert wird, wird auch der Thermostat auf manuell gesetzt. So greift das Wochenprogramm nicht mehr. Abhilfe schafft der Befehl &amp;lt;code&amp;gt;set MAX_04711 desiredTemperature auto 20&amp;lt;/code&amp;gt;. Damit die Eingabe komfortabel aus Fhem möglich ist, kann ein Dummy-Device erstellt werden:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#Dummy für die Schnell-Einstellung der Temperatur bis zum nächsten automatischen Schaltzeitpunkt&lt;br /&gt;
 define HeizkoerperBad dummy&lt;br /&gt;
 attr HeizkoerperBad room MAX,Heizungen&lt;br /&gt;
 attr HeizkoerperBad setList state:eco,auto,14.0,16.0,17.0,18.0,19.0,20.0,21.0,22.0,23.0&lt;br /&gt;
 attr HeizkoerperBad webCmd state&lt;br /&gt;
 define HeizkoerperBad.ntfy notify HeizkoerperBad.* {\&lt;br /&gt;
  my $valtemp = &amp;quot;%&amp;quot;;;\&lt;br /&gt;
  my $device = &amp;quot;MAX_04711&amp;quot;;;\&lt;br /&gt;
  my $cmd = &#039;set &#039;.$device.&#039; desiredTemperature auto &#039;.$valtemp;;\&lt;br /&gt;
  fhem($cmd);;\&lt;br /&gt;
 }&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Diese Dummy-Device kann alternativ oder ergänzend zu &amp;lt;code&amp;gt;attr MAX_018d3f webCmd desiredTemperature&amp;lt;/code&amp;gt; verwendet werden.&lt;br /&gt;
&lt;br /&gt;
== Internals ==&lt;br /&gt;
=== IST-Temperaturwerte ===&lt;br /&gt;
[[File:Plot_MAX_Beispiel.png|thumb|right|Plot eines MAX Heizkörperthermostates]]&lt;br /&gt;
Diese Abbildung zeigt, dass die IST-Temperatur nicht regelmäßig dem MAX CUBE mitgeteilt wird. Im Automatikbetrieb wird beim einer Änderung der Ventilstellung die neue Ventilstellung zusammen mit der aktuellen IST-Temperatur gesendet. Bei der Abbildung war die Therme in der Nacht ausgeschaltet. Daraufhin sinkte die Temperatur soweit ab, dass das Heizungsthermostat das Ventil in Maximalstellung geöffnet hat. Gegen 08:50 wurde die Therme eingeschaltet und die Soll-Temperatur an diesem Heizungsthermostat erhöht. Während dieser ganzen Zeit erfolgt keine Aktualisierung der Ist-Temperatur. So kommt es auch gegen 10:30 zu einem sprunghaften Temperaturanstieg von 13,5°C auf 19°C (siehe Markierung *A).&lt;br /&gt;
&lt;br /&gt;
Die IST-Temperatur wird anscheinend aktualisiert bei einer Änderung der:&lt;br /&gt;
&lt;br /&gt;
* Ventilstellung&lt;br /&gt;
* Soll-Temperatur&lt;br /&gt;
* des Betriebsmodis (Auto/Manuell)&lt;br /&gt;
&lt;br /&gt;
=== MAXLAN ===&lt;br /&gt;
=== CUL_MAX ===&lt;br /&gt;
The Max devices use a CC1100 chip. For parameters see rf_moritz.c in culfw.&lt;br /&gt;
The thermostats use a Wake-On-Radio, thus one has to send packets at the right time.&lt;br /&gt;
&lt;br /&gt;
CC1100 initialization sequence on one of the max devices (not Cube) (format: addr value, both in hex):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;00 08&lt;br /&gt;
 02 46&lt;br /&gt;
 04 C6&lt;br /&gt;
 05 26&lt;br /&gt;
 0B 06&lt;br /&gt;
 10 C8 //MDMCFG4 DRATE_E=8&lt;br /&gt;
 11 93 //MDMCFG3 DRATE_M=147, data rate = (256+DRATE_M)*2^DRATE_E/2^28*f_xosc = (9992.599) 1kbit/s (at f_xosc=26 Mhz)&lt;br /&gt;
 12 03&lt;br /&gt;
 15 34&lt;br /&gt;
 17 00&lt;br /&gt;
 18 18&lt;br /&gt;
 19 16&lt;br /&gt;
 1B 43&lt;br /&gt;
 21 56&lt;br /&gt;
 25 00&lt;br /&gt;
 26 11&lt;br /&gt;
 0D 21&lt;br /&gt;
 0E 65&lt;br /&gt;
 0F 6A&lt;br /&gt;
 07 4C //PKTCTRL1: ADR_CHK=0 APPEND_STATUS=1 CRC_AUTOFLUSH=1 PQT=2 (preamble must have 8 toggling bits before sync word detection)&lt;br /&gt;
 16 1C //RXTIME=4&lt;br /&gt;
     RX_TIME_QUAL=1 (when rx timeout expires, keep receiving if either sync word is found or PQI is set (see PQT))&lt;br /&gt;
     RX_TIME_RSSI=1 (terminate RX if there is no carrier sense within the first 8 symbol periods)&lt;br /&gt;
 20 78 //WORCTRL, WOR_RES=00 (1.8-1.9 sec), RC_CAL=1, EVENT1=7 (48 ticks), RC_PD=0&lt;br /&gt;
 1E 87 //WOREVT1&lt;br /&gt;
 1F 6B //WOREVT0, i.e. EVENT0 = 34667&lt;br /&gt;
 29 59&lt;br /&gt;
 2C 81&lt;br /&gt;
 2D 35&lt;br /&gt;
 3E C3&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;Not set, i.e. factory defaults:&lt;br /&gt;
 13 MDMCFG1 NUM_PREAMBLE=2 (4 preamble bytes)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
From the configuration, we see that the&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;RC Oscillator: f_xosc/750 = 34666.66 Hz&lt;br /&gt;
 Event1 = Event1(=48 ticks)/RC Oscillator = 1.385 ms&lt;br /&gt;
 t_Event0 = 750/26Mhz * EVENT0 * 2^(5*WOR_RES) = 1.00 second&lt;br /&gt;
 C(RX_TIME, WOR_RES)= 0.2254&lt;br /&gt;
 rx timeout = EVENT0·C(RX_TIME, WOR_RES) ·26/X(=26) = 34667*0.2254 us = 7.8139 ms&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ShutterContact seems to always sleep. Thus it is necessary to trigger it manually (by opening/closing the window) to make it receive messages. Pushing the button may work to. It is also awake just after&lt;br /&gt;
pairing, so one may send messages right then. One can use the WakeUp message to keep it from sleeping for some time. (This is also the reason why in the official MAX software, one must trigger the ShutterContact&lt;br /&gt;
after removing it from the house. The &amp;quot;factoryReset&amp;quot; packet is sent directly after the &amp;quot;ShutterContactState&amp;quot; packet has been acked.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Probleme und Lösungen ==&lt;br /&gt;
=== Der Wandthermostat oder Heizthermostat reagieren nicht auf Änderungen über FHEM ===&lt;br /&gt;
Das Autocreate von FHEM erkennt, wenn aktiviert, die Geräte initial und legt auch Einträge an. Es fehlt aber noch das Pairing, da sonst keine Steuerung möglich ist!&lt;br /&gt;
Wenn im Log also Meldungen wie&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;2013.03.20 15:12:30 5: CUL_MAX_SendQueueHandler: 1 items in queue&lt;br /&gt;
 2013.03.20 15:12:30 5: CUL_MAX_SendQueueHandler: 1 items in queue&lt;br /&gt;
 2013.03.20 15:12:30 2: CUL_MAX_SendQueueHandler: Missing ack from 01c9bb for 0b05008212345601c9bb0000&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
auftauchen (im Verbose Modus 5), dann wurde vermutlich kein oder ein inkorrektes Paring durchgeführt.&lt;br /&gt;
Nach dem Pairing sollten diese Meldungen verschwinden und stattdessen etwas wie&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;2013.03.20 15:21:43 5: Got matching ack&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
auftauchen.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Kontaktsensor (magnetisch)]]&lt;br /&gt;
[[Kategorie:Glossary]]&lt;br /&gt;
[[Kategorie:MAX]]&lt;br /&gt;
[[Kategorie:Heizungsventile]]&lt;/div&gt;</summary>
		<author><name>Yfhem</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=DevelopmentGuidelines&amp;diff=3481</id>
		<title>DevelopmentGuidelines</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=DevelopmentGuidelines&amp;diff=3481"/>
		<updated>2013-11-10T18:34:14Z</updated>

		<summary type="html">&lt;p&gt;Yfhem: /* Bezeichnungen */ Remove dot in source.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;Wichtiger Hinweis&#039;&#039;: Diese Seite enthält die Ideen der fhem-Entwickler, wie fhem in einer künftigen Version funktionieren soll. Es beschreibt nicht den Zustand der aktuellen Umsetzung in den Release- oder den SVN-Versionen.&lt;br /&gt;
&lt;br /&gt;
==Definitionen==&lt;br /&gt;
TODO: Rudis kanonische Begriffe verwenden!&lt;br /&gt;
&lt;br /&gt;
===Allgemeines===&lt;br /&gt;
Die Version von fhem, in der diese Guidelines umgesetzt werden sollen, wird mit fhem-NEU bezeichnet. Mit fhem 4.x wird die aktuelle Architektur bezeichnet, die auch fuer fhem 5.x zutrifft. &lt;br /&gt;
&lt;br /&gt;
===Readings===&lt;br /&gt;
Ein Reading (Ablesewert) ist jeglicher Wert, Zustand, etc., der von einem Geraet ausgelesen werden kann. Beispiele dafuer sind Messtemperatur, Luftfeuchtigkeit, Schaltzustand (an/aus), Firmwareversion, Empfangsstaerke. &lt;br /&gt;
&lt;br /&gt;
=== I/O-Devices und Clients===&lt;br /&gt;
Um Readings durch fhem verarbeiten zu koennen, muessen die Daten erst ueber ein I/O-Device in den Rechner kommen. Beispiele: FHZ1300, CUL, CM11, M232.&lt;br /&gt;
&lt;br /&gt;
Ein I/O-Device ist ueber einen Port (Beispiel fuer Unix: /dev/ttyS0) oder einen Socket ansprechbar.&lt;br /&gt;
&lt;br /&gt;
Ein I/O-Device kann selbst ein Geraet sein, das Readings liefert (Beispiel: SCIVT, sowie die meisten anderen Schnittstellengeraete, wenn man die Geraeteversion oder die Uptime mit zu den Readings zaehlt), oder die Readings von anderen Geraeten (Clients) weiterleiten (Beispiel: FHZ1300).&lt;br /&gt;
&lt;br /&gt;
==Requests for Proposal==&lt;br /&gt;
===Aktualisierung der Readings===&lt;br /&gt;
====Aktive und passive Readings====&lt;br /&gt;
&lt;br /&gt;
Es sind zwei Arten von Readings zu unterscheiden:&lt;br /&gt;
# Readings, die vom Geraet aktiv mitgeteilt werden, entweder ad-hoc oder in regelmäßigen Zeitabständen (aktive Readings). Beispiele: measuredTemp bei FHT80B, wind bei KS300&lt;br /&gt;
# Readings, nach denen fhem die Geräte fragen muss (passive Readings). Beispiele: energyDay bei EM1010PC, counter bei M232, temperature bei OWTEMP&lt;br /&gt;
&lt;br /&gt;
Dasselbe Geraet kann sowohl aktive als auch passive Readings beinhalten. Bei Geraeten mit aktiven Readings sind passive Readings meist Informationen wie Versionsnummer oder Uptime (CUL, CM11).&lt;br /&gt;
&lt;br /&gt;
Geraete, die mehrere verschiedene Readings haben, senden diese haeufig im Batch an fhem (Beispiel: FHT80b, KS300). &lt;br /&gt;
&lt;br /&gt;
====Mechanismus fuer aktive Readings====&lt;br /&gt;
&#039;&#039;TODO: Mechanismus mit ParseFn, GetFn, Match usw. beschreiben (wie in fhem 4.x)!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Mechanismus fuer passive Readings====&lt;br /&gt;
Fuer passive Geräte gibt es eine Polling-Infrastruktur.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Status Quo in fhem 4.x:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In der Routine DEVICE_Define wird ein interner Timer gestartet, der die Updatefunktion aufruft. INTERVAL ist die Periode in Sekunden.&lt;br /&gt;
&lt;br /&gt;
 sub&lt;br /&gt;
 DEVICE_Define($$) {&lt;br /&gt;
 ...&lt;br /&gt;
 InternalTimer(gettimeofday()+$hash-&amp;gt;{INTERVAL}, &amp;quot;DEVICE_GetUpdate&amp;quot;, $hash, 0);&lt;br /&gt;
 ...&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
In der Routine DEVICE_GetUpdate werden dann die Readings vom Gerät geholt und der Timer wird mit dem gleichen Befehl erneut gestartet.&lt;br /&gt;
&lt;br /&gt;
 sub&lt;br /&gt;
 DEVICE_GetUpdate($$) {&lt;br /&gt;
 ...&lt;br /&gt;
 # start internal timer; do it at the beginning to achieve equal intervals no matter how long it takes to gather data&lt;br /&gt;
 InternalTimer(gettimeofday()+$hash-&amp;gt;{INTERVAL}, &amp;quot;DEVICE_GetUpdate&amp;quot;, $hash, 1);&lt;br /&gt;
 # gather data&lt;br /&gt;
 ...&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Der letzte Paramater 0 oder 1 ist waitIfInitNotDone.&lt;br /&gt;
&lt;br /&gt;
Fragen:&lt;br /&gt;
* Kann/soll dieses Verfahren in einem Modul gekapselt werden? Geraete melden sich dann an der Polling-Infrastruktur an. Wenn ja, wie?&lt;br /&gt;
* Wie wird waitIfInitNotDone korrekt eingesetzt? &lt;br /&gt;
&lt;br /&gt;
====Mechanismus fuer langsame Readings====&lt;br /&gt;
&#039;&#039;&#039;Problemstellung:&#039;&#039;&#039; Laengere Verarbeitungsprozesse in einzelnen Modulen (z.B. aufgrund von Netzwerklatenzen oder toten Geraeten) halten fhem komplett an und verhindern die Verarbeitung von Events.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Loesung:&#039;&#039;&#039; Multiprocessing&lt;br /&gt;
&lt;br /&gt;
Beim Multiprocessing wird der fhem-Prozess geforkt, wenn ein Reading vom Geraet eingelesen werden soll. Der Vaterprozess wird sofort fortgesetzt und erledigt weitere Aufgaben. Der Kindprozess holt die Readings vom Geraet, liefert sie an den Vaterprozess und verendet.&lt;br /&gt;
&lt;br /&gt;
Die Lieferung an den Vaterprozess erfolgt durch eine Verbindung zu fhem via Netzwerk und Aufruf des Befehls&lt;br /&gt;
&lt;br /&gt;
 set myDevice childupdate reading1:value1 reading2:value2 ...&lt;br /&gt;
&lt;br /&gt;
Beispielcode:&lt;br /&gt;
&lt;br /&gt;
DEVICE_StartUpdate wird periodisch aufgerufen.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sub &lt;br /&gt;
 DEVICE_StartUpdate($)&lt;br /&gt;
 {&lt;br /&gt;
      my ($hash) = @_;&lt;br /&gt;
      # %updates contains the names of the readings to be updated&lt;br /&gt;
      my %updates = (&lt;br /&gt;
            &amp;quot;reading1&amp;quot; =&amp;gt; &amp;quot;&amp;quot;,&lt;br /&gt;
            &amp;quot;reading2&amp;quot; =&amp;gt; &amp;quot;&amp;quot;,&lt;br /&gt;
            &amp;quot;reading3&amp;quot; =&amp;gt; &amp;quot;&amp;quot;,&lt;br /&gt;
      );&lt;br /&gt;
      # care for some prerequisites&lt;br /&gt;
      ...&lt;br /&gt;
      if($hash-&amp;gt;{CHILDPID}) {&lt;br /&gt;
        # there is still the child process running =&amp;gt; try again next time&lt;br /&gt;
        Log 2, &amp;quot;DEVICE: Child already forked: timeout too short?&amp;quot;;&lt;br /&gt;
        return;&lt;br /&gt;
      }&lt;br /&gt;
      # fork a child process and return if we are the parent process&lt;br /&gt;
      return if(($hash-&amp;gt;{CHILDPID} = fork));&lt;br /&gt;
      # if we are here, we are the child process&lt;br /&gt;
      my @ret;&lt;br /&gt;
      foreach my $r (sort keys %updates) {&lt;br /&gt;
        my $ret = ... # retrieve reading $r from device&lt;br /&gt;
        $ret = &amp;quot;&amp;quot; if(!defined($ret));&lt;br /&gt;
        last if($ret eq &amp;quot;&amp;quot;); # break on error&lt;br /&gt;
        push(@ret, $r . &amp;quot;:&amp;quot; . $ret); # append readingI:valueI to array&lt;br /&gt;
      }   &lt;br /&gt;
      # now connect to parent process and pass retrieved readings&lt;br /&gt;
      my @port = split(&amp;quot; &amp;quot;, $attr{global}{port});&lt;br /&gt;
      my $server = IO::Socket::INET-&amp;gt;new(PeerAddr =&amp;gt; &amp;quot;localhost:$port[0]&amp;quot;);&lt;br /&gt;
      Log 0, &amp;quot;DEVICE: Can&#039;t connect to parent\n&amp;quot; if(!$server);&lt;br /&gt;
      syswrite($server, &amp;quot;set $hash-&amp;gt;{NAME} childupdate &amp;quot;.join(&amp;quot; &amp;quot;,@ret).&amp;quot;\n&amp;quot;);&lt;br /&gt;
      exit(0);&lt;br /&gt;
  } &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aus der Routine DEVICE_Set wird DEVICE_ChildUpdate aufgerufen, wenn das Kommando &amp;quot;set childupdate ...&amp;quot; lautet:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;sub&lt;br /&gt;
 DEVICE_ChildUpdate($$) {&lt;br /&gt;
   my ($hash, @ret)= @_;&lt;br /&gt;
   delete $hash-&amp;gt;{CHILDPID};&lt;br /&gt;
   # evaluate readings&lt;br /&gt;
   ...&lt;br /&gt;
   # inform about changes&lt;br /&gt;
   ...&lt;br /&gt;
 }&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fragen&#039;&#039;&#039;:&lt;br /&gt;
* Kann dieser Mechanismus in einem Modul gekapselt werden, damit nicht jedes Geraet den o.g. Kode replizieren muss?&lt;br /&gt;
* Soll es diesen Mechanismus nur passive Readings geben oder gibt es Anwendungsfaelle fuer aktive Readings? &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Verworfene Alternative&#039;&#039;&#039;: Multithreading&lt;br /&gt;
&lt;br /&gt;
Argumente gegen Multithreading:&lt;br /&gt;
* Wird praktisch auf keiner kleinen Plattform unterstuetzt.&lt;br /&gt;
* Negative Erfahrungen (z.B. Probleme bei vielen 3rd-party-Komponenten)&lt;br /&gt;
* Kaum Programmiererfahrung mit Multithreading in Perl. &lt;br /&gt;
&lt;br /&gt;
==Verabschiedete Richtlinien==&lt;br /&gt;
===Zeichensatz===&lt;br /&gt;
Alle nach aussen sichtbaren Werte sind in der Zeichenkodierung ASCII (Codes 32..127). Dies vermeidet Konvertierungsprobleme bei der Bearbeitung des Quellkodes, bei der Ausgabe durch Perl, beim Transport in Internet-Protokollen und bei der Darstellung im Frontend/GUI. &lt;br /&gt;
&lt;br /&gt;
===Klassifizierung der Attribute===&lt;br /&gt;
Die Attribute eines Moduls werden in logische Klassen (Rubriken) eingeteilt. &lt;br /&gt;
&lt;br /&gt;
====Sinn und Zweck====&lt;br /&gt;
Die Rubriken helfen...&lt;br /&gt;
* zu sortieren, welche Attribute bei (xml)list gezeigt werden und welche nicht,&lt;br /&gt;
* zu definieren, welche Werte per save in die Sicherung kommen und welche nicht,&lt;br /&gt;
* zu vereinbaren, welche Änderungen ein notify auslösen und welche nicht,&lt;br /&gt;
* zu definieren, wie ein Attribut im $hash-&amp;gt;{} abgelegt wird (in $hash-&amp;gt;{}, $hash-&amp;gt;{READINGS}, $hash-&amp;gt;{INTERNALS}, ...),&lt;br /&gt;
* zu gliedern, welche Namenskonventionen jeweils für Attribute verwendet werden (Kleinbuchstaben, Großbuchstaben, CamelCaps, ...),&lt;br /&gt;
* abzugrenzen, wo der Entwickler sich an Vorgaben halten muß (z.B. bei System Internals) und wo er frei ist, Attribute zu erfinden oder wegzulassen, und&lt;br /&gt;
* festzulegen, wo bzgl. der Inhalte Standards notwendig sind und wo nicht (z.B. bei &amp;quot;Logical Readings&amp;quot;, wenn diese im GUI angezeigt werden sollten). &lt;br /&gt;
&lt;br /&gt;
====Logische Rubriken====&lt;br /&gt;
Die folgenden Rubriken stellen eine sehr feine Einteilung dar:&lt;br /&gt;
* System Internals: werden vom Framework (fhem.pl) benoetigt/verwendet/erkannt, z.B. NAME, NR, CHANGED &lt;br /&gt;
* Device Readings: Rohdaten, die vom physischen Geraet ausgelesen werden (nicht interpretiert), z.B. rain_raw (Wippenschlaege des Regensensors) in KS300&lt;br /&gt;
* Hilfsvariablen: z.B. rain_raw_adj (rain_raw, jedoch bereinigt um die bei einigen KS300 auftretenden erratischen Spruenge) in KS300, Zwischenergebnisse von Daten/Werten, welche zur Mittelwertberechnung benoetigt werden&lt;br /&gt;
* Logical Readings: ausgewertete Messdaten und Zustaende, z.B. Temperatur, Niederschlag (nicht als Wippenschlaege sondern in l/qm)&lt;br /&gt;
* Derived Readings: aus den Messdaten abgeleitete Werte, z.B. durchschnittliche Temperatur der laufenden Woche, Niederschlagsmenge des Tages&lt;br /&gt;
* Physical Device Parameter: z.B. Modell oder Housecode und Unitcode bei X10 oder die Sensornummer beim BS (brightness sensor)&lt;br /&gt;
* Logical Device Parameter: statische Werte, die als Grundlage für Berechnungen genutzt werden, z.B. Korrekturfaktoren bei den Energiemessgeraeten, die Tankgeometrie beim USF1000&lt;br /&gt;
* Messages: alle Nachrichten, die das Gerät betreffen, z.B. &amp;quot;AVG_Month erfolgreich berechnet&amp;quot;, &amp;quot;Script XYZ am xx.xx.xx gestartet&amp;quot;, LastIODEV, LastRAWMSG&lt;br /&gt;
* Trigger: wenn Trigger direkt am Geraet hinterlegt werden, muessen nicht mehr alle Notifies durchsucht werden, sondern es kann das Modul direkt ermitteln, ob ein Notify ausgeloest wird. &lt;br /&gt;
&lt;br /&gt;
====Ablage im Programm====&lt;br /&gt;
Programmtechnisch werden die Attribute eines Moduls so in Behaeltern abgelegt, dass folgende Kriterien erfuellt sind:&lt;br /&gt;
* Die Aufteilung ist moeglichst einfach/minimalistisch.&lt;br /&gt;
* Anhand des Behaelters laesst sich entscheiden,&lt;br /&gt;
** ob die Werte der darin enthaltene Attribute ueber das Programmende hinaus gespeichert oder nicht gespeichert werden,&lt;br /&gt;
** welchen Anzeigestandards oder Programmierstandards die darin enthaltenen Attribute entsprechen, und&lt;br /&gt;
** ob es sich um fhem-interne Attribute, Readings oder Hilfsvariablen handelt. &lt;br /&gt;
&lt;br /&gt;
Es gibt folgende Behaelter:&lt;br /&gt;
&lt;br /&gt;
readings&lt;br /&gt;
* Logische Rubrik: Device Reading, Logical Reading, Derived Reading&lt;br /&gt;
* Wird gespeichert&lt;br /&gt;
* Alle vom Geraet gelieferten bzw. berechneten Werte, die den Endanwender interessieren. Keine Rohdaten vom Geraet, die erst interpretiert werden muessen (Wippenschlaege beim Regensensor).&lt;br /&gt;
* Alle Daten haben einen Wert und ein Zeitstempel&lt;br /&gt;
* Beispiele: &lt;br /&gt;
 $defs{Lampe}{readings}{switchedTo}{value} = &amp;quot;on&amp;quot;; $defs{Lampe}{readings}{switchedTo}{time} = &amp;quot;2010-03-29 23:32:26&amp;quot;&lt;br /&gt;
 $defs{FHToben}{readings}{measuredTemp}{value} = &amp;quot;23&amp;quot;; $defs{FHToben}{readings}{switchedTo}{time} = &amp;quot;2010-03-29 21:58:36&amp;quot;&lt;br /&gt;
&lt;br /&gt;
helper&lt;br /&gt;
* Logische Rubrik: Hilfsvariable, Device Reading&lt;br /&gt;
* Wird gespeichert&lt;br /&gt;
* Alle Werte, die fuer den Endanwender nicht direkt Sinn machen, aber vom Modul fuer unterschiedliche Zwecke benoetigt werden. Kann auch rohe Readings enthalten.&lt;br /&gt;
* Beispiele: &lt;br /&gt;
&lt;br /&gt;
 $defs{ks300}{helper}{cumMonth} = &amp;quot;23 T: 131.4  H: 816  W: 775.1  R: -651.1&amp;quot;&lt;br /&gt;
 $defs{emwz}{helper}{basis} = &amp;quot;4776493&amp;quot;&lt;br /&gt;
&lt;br /&gt;
fhem&lt;br /&gt;
* Logische Rubrik: System Internals, Physical Device Parameter, Logical Device Parameter&lt;br /&gt;
* Wird nicht gespeichert&lt;br /&gt;
* Alle Geraete-Werte, die nicht gespeichert werden muessen, weil entweder berechnet, oder aus der Definition hervorgehen.&lt;br /&gt;
* Beispiele &lt;br /&gt;
&lt;br /&gt;
 $defs{emwz}{fhem}{def} = &amp;quot;1 75 900&amp;quot; &lt;br /&gt;
 $defs{emwz}{fhem}{lastIODev} = &amp;quot;CUL&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Verworfener Behaelter STATE&lt;br /&gt;
* Logische Rubrik: Device Reading, Logical Reading, Derived Reading&lt;br /&gt;
* Wird gespeichert&lt;br /&gt;
* Kurze(!) Zusammenfassung der wichtigsten Information des Geraetes. Was man in einer Uebersicht ueber die Geraete sehen moechte, z.B. eine Warnung oder die aktuelle Temperatur beim FHT80 oder der Zeitpunkt der letzten Aktivierung beim PIRI. Falls es sowas nicht gibt, dann einheitlich &amp;quot;defined&amp;quot;. GGf. ueber Attribute am Modul steuerbar. Eigentlich ist es kein Behaelter im ueblichen Sinne, da es keine Untereinheiten hat. &lt;br /&gt;
&lt;br /&gt;
Der Behaelter wurde verworfen, weil er redundant ist, an sich gar kein Behaelter, und einfacher und flexibler ueber einen Verweis auf das Reading realisiert werden kann, der per Default angezeigt werden soll. &lt;br /&gt;
&lt;br /&gt;
====Status====&lt;br /&gt;
Kurze Zusammenfassung der wichtigsten Information des Geraetes. Was man in einer Uebersicht ueber die Geraete sehen moechte, z.B. eine Warnung oder die aktuelle Temperatur beim FHT80 oder der Zeitpunkt der letzten Aktivierung beim PIRI. Falls es sowas nicht gibt, dann einheitlich &amp;quot;defined&amp;quot;. Modulseitig gibt es einen Default, der auf das relevante Reading verweist. Dieser ist ueber das Attribut defaultReading am individuellen Geraet steuerbar.&lt;br /&gt;
&lt;br /&gt;
Beispiel: Definition in der Konfigurationsdatei: attr myDevice defaultReading measuredTemp Verwendung im Code:&lt;br /&gt;
&lt;br /&gt;
 $defs{myDevice}{readings}{$attr{defaultReading}}&lt;br /&gt;
&lt;br /&gt;
Die logischen Rubriken Messages und Trigger wurden noch nicht diskutiert. &lt;br /&gt;
&lt;br /&gt;
===Bezeichnungen===&lt;br /&gt;
Verwendung von lowerCamelCaps fuer alle vom Modul nach aussen sichtbaren Bezeichner: a) die Bezeichnungen der Behaelter fuer Readings, Fhem und Helper und der Untereintraege, b) die Bezeichnungen der Readings, c) die Bezeichnungen der Attribute.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 $defs{myFHT}{readings}{measuredTemp}{time}&lt;br /&gt;
&lt;br /&gt;
===Readings===&lt;br /&gt;
====Standardisierung der Readings====&lt;br /&gt;
Die Readings werden standardisiert, indem Geraeteklassen gebildet werden wie in DevelopmentInterfaces beschrieben. Die Definition der Interfaces ist explizit nicht Gegenstand dieser Entscheidungsvorlage und wird weiterentwickelt und angepasst, wie es sich bei der Entwicklung von fhem-NEU ergibt.&lt;br /&gt;
Struktur im Code&lt;br /&gt;
&lt;br /&gt;
Zu jedem Reading gibt es die folgenden Unterbehaelter:&lt;br /&gt;
* value: Wert der Messgroesse&lt;br /&gt;
* time: Zeitpunkt, zu dem der Wert ermittelt wurde &lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
 $defs{myFHT}{readings}{measuredTemp}{time}= timestamp;&lt;br /&gt;
 $defs{myFHT}{readings}{measuredTemp}{value}= 23.5;&lt;br /&gt;
&lt;br /&gt;
Readings enthalten grundsaetzlich genau einen Wert und diesen ohne Einheit.&lt;br /&gt;
&lt;br /&gt;
====Einheitendarstellung====&lt;br /&gt;
Die verwendete Einheit fuer ein Reading ergibt sich aus der Interfacespezifikation.&lt;br /&gt;
&lt;br /&gt;
Beispiel: Gerät ist ein Thermometer =&amp;gt; es gibt ein Reading &amp;quot;temperature&amp;quot; und dessen Einheit ist immer °C oder Celsius&lt;br /&gt;
&lt;br /&gt;
Verworfene Alternative:&lt;br /&gt;
* Einheit ergibt sich aus der Dokumentation&lt;br /&gt;
* Einheit ergibt sich aus einem expliziten Untereintrag $defs{deviceName}{readings}{theReading}{unit}=&amp;quot;°C&amp;quot;&lt;br /&gt;
* Einheit ergibt sich aus Festlegung gemaess &amp;quot;FHEM-Standard&amp;quot;, z.B. immer SI-Einheiten, Temperaturen in Celsius, etc. &lt;br /&gt;
&lt;br /&gt;
===Zeitdarstellung in fhem===&lt;br /&gt;
Zeiten werden im Programm grundsaetzlich immer maschinenlesbar abgelegt, also sowohl in $defs{deviceName}{readings}{time} als auch z.B. bei der Speicherung des Zeitpunkts der Ausfuehrung des naechsten at-Kommandos.&lt;br /&gt;
&lt;br /&gt;
Es gibt uebergreifende Hilfsfunktionen, die die maschinenlesbare in eine menschenlesbare Darstellung umwandeln.&lt;br /&gt;
&lt;br /&gt;
Argumente fuer maschinenlesbar:&lt;br /&gt;
* vereinfacht Datumsarithmetik, z.B. die Berechnung der Zeitdauer zwischen zwei Ereignissen&lt;br /&gt;
* kann vom Frontend in die regionale Darstellung des Anwenders uebersetzt werden&lt;br /&gt;
* hat keine Probleme mit doppelt auftretenden Zeitpunkten bei der Umstellung von Sommer- auf Winterzeit &lt;br /&gt;
&lt;br /&gt;
Folgende Zeitdarstellungen werden ausschliesslich verwendet:&lt;br /&gt;
&lt;br /&gt;
A. Zahl der Sekunden seit der Unix-Epoche (was time liefert); auch wenn time eine Ganzzahl liefert, muss der Verwender damit rechnen, eine Gleitkommazahl vorzufinden. Das ist z.B. dann der Fall, wenn fuer die Zeibestimmung hoeheraufloesende Funktionen (z.B. Time::HiRes) zum Einsatz kamen und Sekundenbruchteile mitgespeichert wurden.&lt;br /&gt;
&lt;br /&gt;
Hinweis zu potentiellen Problemen:&lt;br /&gt;
* Ab perl 5.12 ist das Jahr-2038-Problem in Perl beseitigt.&lt;br /&gt;
* Ab MacOS X liefert time auch auf Macs die Zahl der Sekunden seit der Unix-Epoche (statt seit Anfang 1904) &lt;br /&gt;
&lt;br /&gt;
B. ISO8601 mit optionaler Zeitzonenangabe, wobei bei fehlender Zeitzone die lokale Zeitzone des fhem-Servers gilt&lt;br /&gt;
&lt;br /&gt;
Die Zeitdarstellungen werden wie folgt verwendet:&lt;br /&gt;
* Zur Programmlaufzeit in Variablen immer A&lt;br /&gt;
* In Konfigurationsdateien (fhem.conf, fhem.save) immer B&lt;br /&gt;
* In Logs, die fuer den Menschen bestimmt sind, B&lt;br /&gt;
* In Logs, die fuer die Maschine bestimmt sind, also z.B. bei Weiterverarbeitung in einem GUI, A&lt;br /&gt;
* In Listen (list, xmllist friendly), die fuer den Menschen bestimmt sind, B&lt;br /&gt;
* In Listen (xmllist), die fuer die Maschine bestimmt sind, also z.B. bei Weiterverarbeitung in einem GUI, A &lt;br /&gt;
&lt;br /&gt;
Die Unterscheidung bei den Logs ist noch zu diskutieren.&lt;br /&gt;
&lt;br /&gt;
Hinweise zu gnuplot:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set timefmt &#039;%Y-%m-%dT%H:%M:%S&#039; &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(ISO8601) funktioniert, und zwar unabhaengig davon, ob die optionale Zeitzonenangabe anhaengt oder nicht (getestet mit Gnuplot v4.2 pl3). Fuer die Sekunden seit der Unix-Epoche:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;set timefmt &#039;%s&#039; &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(nicht getestet). &lt;br /&gt;
&lt;br /&gt;
==Allgemeine Dokumentation==&lt;br /&gt;
===Events, Filter, Notify===&lt;br /&gt;
====Event====&lt;br /&gt;
Ein Event tritt ein, wenn ein oder mehrere Readings eines Geraetes aktualisiert werden, weil z.B. ein Datagramm empfangen oder zeitgesteuert Werte eingelesen wurden. Es wird durch drei Angaben&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;(device, timestamp, { reading1, ..., readingN } )&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
beschrieben:&lt;br /&gt;
* das Geraet device&lt;br /&gt;
* der Zeitpunkt der Aktualisierung timestamp&lt;br /&gt;
* die Menge der N&amp;gt;= 1 geaenderten Readings reading1, .. readingN &lt;br /&gt;
&lt;br /&gt;
Wenn N&amp;gt; 1, dann handelt es sich um ein Sammelevent, wie es z.B. von KS300 generiert wird. &lt;br /&gt;
&lt;br /&gt;
====Filter====&lt;br /&gt;
Ein Filter filtert Events. Er hat die Form&lt;br /&gt;
&lt;br /&gt;
 deviceNamePattern&lt;br /&gt;
&lt;br /&gt;
bzw.&lt;br /&gt;
&lt;br /&gt;
 deviceNamePattern:readingNamePattern &lt;br /&gt;
&lt;br /&gt;
Ein Filter passt auf ein Event, wenn deviceNamePattern den Namen des device matcht und, sofern vorhanden, readingNamePattern mindestens irgendeinen Namen von reading1 bis readingN matcht.&lt;br /&gt;
&lt;br /&gt;
====Mechanismus====&lt;br /&gt;
0. Fuer das Geraet device namens deviceName wird ein Datagramm empfangen oder es werden zeitgesteuert Werte eingelesen.&lt;br /&gt;
&lt;br /&gt;
1. Die Readings werden aktualisiert. Fuer X= 1..N:&lt;br /&gt;
&lt;br /&gt;
 $defs{deviceName}{readings}{readingX}{value}= valueX;&lt;br /&gt;
 $defs{deviceName}{readings}{readingX}{time}= timestamp;&lt;br /&gt;
&lt;br /&gt;
2. Das Event wird erstellt und an DoTrigger uebergeben.&lt;br /&gt;
&lt;br /&gt;
3. DoTrigger informiert zunaechst alle Clients mit inform-Wunsch.&lt;br /&gt;
&lt;br /&gt;
4. Das Event wird sodann von DoTrigger nacheinander an alle NotifyFn in der alphabetischen Reihenfolge der Geraetenamen gereicht. Darunter auch jene von Logs.&lt;br /&gt;
&lt;br /&gt;
5. Wenn der Filter des Logs auf das Event passt, wird ein Log-Eintrag der Form&lt;br /&gt;
&lt;br /&gt;
 timestamp deviceName reading1: value1 reading2: value2 ... readingN: valueN&lt;br /&gt;
&lt;br /&gt;
erzeugt. &lt;br /&gt;
&lt;br /&gt;
==Zurueckgestellte Entscheidungen==&lt;br /&gt;
===Attribute vs. Internals===&lt;br /&gt;
Die Unterscheidung zwischen Attributen und Internals ist nicht eindeutig. Manche define-Parameter sind optional, und man kann define-Parameter mit &amp;quot;modify&amp;quot; aendern. Insofern koennte man theoretisch einen der beiden Verfahren (modify vs. attribute) abloesen.&lt;br /&gt;
&lt;br /&gt;
1. Idee: define-Parameter duerfen nachtraeglich nicht geaendert werden, auch wenn es sich um optionale Parameter handelt =&amp;gt; nicht-modifizierbare Internals&lt;br /&gt;
&lt;br /&gt;
Pros:&lt;br /&gt;
* define-Parameter sind elementar fuer den Betrieb des Geraetes und koennen nicht sinnvoll zur Programmlaufzeit geaendert werden (z.B. Hauskode bei X10, FHTId bei FHT80b)&lt;br /&gt;
* Aus den define-Parametern werden bei der Initialisierung des Geraets weitere Helper und Internals abgeleitet und gespeichert. Eine nachtraegliche Aenderung zieht Aenderungen der Helper und Internals nach sich mit ggf. schwer durchschaubaren Nebeneffekten (z.B. corr1..corr4 bei EM, rainadjustment bei KS300). Auch die Logs aendern sich nicht nachtraeglich. &lt;br /&gt;
&lt;br /&gt;
Contras:&lt;br /&gt;
* Man will nicht ein Geraet loeschen und neu anlegen, wenn es ausgetauscht wird.&lt;br /&gt;
* modify sollte bleiben, weil es nuetzlich ist. &lt;br /&gt;
&lt;br /&gt;
2. Idee: Attribute enthalten Werte, die ohne Nebeneffekte zur Laufzeit geaendert werden koennen, weil sie z.B. ad-hoc ausgewertet werden.&lt;br /&gt;
* follow-on-for-timer&lt;br /&gt;
* retrycount&lt;br /&gt;
* lazy &lt;br /&gt;
&lt;br /&gt;
3. Idee: Attribute beinhalten geraeteunabhaengige Meta-Informationen:&lt;br /&gt;
* room&lt;br /&gt;
* defaultReading &lt;br /&gt;
&lt;br /&gt;
Contras:&lt;br /&gt;
* Nach 2. und 3. muesste &lt;br /&gt;
&lt;br /&gt;
 attr my_at disabled&lt;br /&gt;
&lt;br /&gt;
doch zu Definition gehoeren. Und &amp;quot;skip_next&amp;quot; auch.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Spezialitaeten&lt;br /&gt;
* beim FS20 bleibt alles, wie es ist, also model als Attribut, was Auswirkung auf die moeglichen set Befehle hat.&lt;br /&gt;
* 1wire setzt nach define das model Attribut, laesst aber eine Aenderung nicht zu, oder wenn doch, dann muss sich dementsprechend verhalten, es macht ja evtl. Sinn es zu aendern. Was machbar ist, entscheidet der Modul-Author. &lt;br /&gt;
&lt;br /&gt;
Damit ist &amp;quot;model&amp;quot; immer ein Attribut.&lt;br /&gt;
&lt;br /&gt;
Fazit&lt;br /&gt;
&lt;br /&gt;
Da es keine ueberzeugende Alternative zum Ist-Zustand in fhem 4.x gibt, wird b.a.w. nicht hierueber entschieden. &lt;br /&gt;
&lt;br /&gt;
===notify===&lt;br /&gt;
Die Frage, ob der notify-Mechanismus, der weiter oben dokumentiert ist, aus Performancegruenden optimiert werden sollte, ist offen.&lt;br /&gt;
&lt;br /&gt;
In fhem 4.x bekommt jedes Geraet mit NotifyFn jedes Event mit. Alternativ koennte sich ein Geraet als EventListener mit einem Filter bei fhem anmelden. Dann koennten die Events nur an die NotifyFn verteilt werden, fuer die es ein Match auf den Filter gaebe.&lt;br /&gt;
&lt;br /&gt;
Der Punkt wurde zurueckgestellt, bis nachgewiesen ist, dass sich aus dieser Vorgehensweise relevante Auswirkungen auf die Systemlast ergeben. &lt;br /&gt;
&lt;br /&gt;
==Entscheidungen==&lt;br /&gt;
;E1&lt;br /&gt;
:Es werden die Container fhem, readings und helper verwendet.&lt;br /&gt;
;E2&lt;br /&gt;
:Es wird ein Attribut defaultReading verwendet.&lt;br /&gt;
;E3&lt;br /&gt;
:Verwendung von lowerCamelCaps fuer a) die Bezeichnungen der Behaelter fuer Readings, Fhem und Helper und der Untereintraege, b) die Bezeichnungen der Readings, c) die Bezeichnungen der Attribute.&lt;br /&gt;
;E4&lt;br /&gt;
:Verwendung von value und time.&lt;br /&gt;
;E5&lt;br /&gt;
:Zeitdarstellung im Programm grundsaetzlich maschinenlesbar&lt;br /&gt;
;E6&lt;br /&gt;
:Zulaessige Zeitdarstellungen&lt;br /&gt;
* Sekunden seit der Unix-Epoche&lt;br /&gt;
* ISO8601 mit optionaler Zeitzonenangabe&lt;br /&gt;
ISO8601 mit _ statt T war nicht mehrheitsfaehig.&lt;br /&gt;
;E7&lt;br /&gt;
:Verwendung der Zeitdarstellungen&lt;br /&gt;
;E8&lt;br /&gt;
:Readings enthalten grundsaetzlich genau einen Wert und diesen ohne Einheit.&lt;br /&gt;
;E9&lt;br /&gt;
:Einheiten ergeben sich aus der Interfacespezifikation.&lt;br /&gt;
;E10&lt;br /&gt;
:Entscheidung fuer ASCII&lt;br /&gt;
;E11&lt;br /&gt;
:Die Readings werden standardisiert, indem Geraeteklassen gebildet werden wie in DevelopmentInterfaces beschrieben. Die Definition der Interfaces ist explizit nicht Gegenstand dieser Entscheidungsvorlage und wird weiterentwickelt und angepasst, wie es sich bei der Entwicklung von fhem-NEU ergibt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Development]]&lt;/div&gt;</summary>
		<author><name>Yfhem</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=DevelopmentIntroduction&amp;diff=3480</id>
		<title>DevelopmentIntroduction</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=DevelopmentIntroduction&amp;diff=3480"/>
		<updated>2013-11-10T18:31:18Z</updated>

		<summary type="html">&lt;p&gt;Yfhem: /* STATE */ Added space.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Developer&#039;s Introduction to FHEM =&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This page is intended to give an introduction to the FHEM application from a developer&#039;s perspective. If you&#039;re interested in extending, modifying or reusing the FHEM code, then hopefully you will find this a useful document. Note that this document is a work in progress! I myself at the time of writing this have only a few hours of experience under my belt, but I&#039;m documenting things I learn as I learn them.&lt;br /&gt;
&lt;br /&gt;
== Application Lifecycle ==&lt;br /&gt;
When you first launch the FHEM server, the following activities take place:&lt;br /&gt;
&lt;br /&gt;
# Application variables are initialised&lt;br /&gt;
# The valid application commands are loaded into a structure (%cmds) with the corresponding function name to call&lt;br /&gt;
# Do the job, either act as client or server. One of the following applies:&lt;br /&gt;
## If the application has been called as a FHEM client (eg perl fhem.pl 127.0.0.1:7072 commandToExecute)&lt;br /&gt;
### Connect to the FHEM server&lt;br /&gt;
### Execute the command&lt;br /&gt;
### Exit the program&lt;br /&gt;
## Otherwise (the application has been started as a server)&lt;br /&gt;
### Execute each of the commands listed in the configuration file to initialise the server (see the CommandInclude and then the AnalyzeCommandChain methods)&lt;br /&gt;
### Execute each of the commands in the state file if configured to restore the devices to the last state recorded when the server last ran&lt;br /&gt;
### Start the main application loop&lt;br /&gt;
&lt;br /&gt;
== Main Application Loop ==&lt;br /&gt;
The following code is repeated until the application ends:&lt;br /&gt;
&lt;br /&gt;
# For each input device (eg FHZ1000 / FHZ1300 / CUL):&lt;br /&gt;
## Use that device module&#039;s Ready and Read functions to read data from the device&lt;br /&gt;
## For CUL devices, the data is read and parsed at this point&lt;br /&gt;
## For FHZ devices, the FHZ_CheckCRC method is used to validate the received data&lt;br /&gt;
## Call the Dispatch method in FHEM.pl to pass the message onto the correct device and corresponding module (Parse function)&lt;br /&gt;
$server-&amp;amp;gt;fileno() is used to check for and accept new connections to the server&lt;br /&gt;
For each connected client:&lt;br /&gt;
# Read data from the client using sysread&lt;br /&gt;
# Pass the received input into the AnalyzeInput method to execute the command&lt;br /&gt;
&lt;br /&gt;
== Configuration and State Files ==&lt;br /&gt;
Note that these are just lists of commands to execute in a text file! So anything in these files will be interpreted by FHEM in the exact same way if a user keys the commands manually into a client application, eg a telnet connection.&lt;br /&gt;
&lt;br /&gt;
== Readings ==&lt;br /&gt;
The following mechanism is recommended for updating readings. It saves lines of codes and automatically makes your module honor the event-on-update-reading and event-on-change-reading attributes.&lt;br /&gt;
&lt;br /&gt;
Before you start updating readings, write (in case $hash = $defs{&amp;amp;lt;device&amp;amp;gt;})&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;readingsBeginUpdate($hash);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
For every reading you update, write&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;readingsBulkUpdate($hash,$reading,$value);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Terminate with&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;readingsEndUpdate($hash, $dotrigger);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
The $dotrigger parameter should be 0 for updates initiated by fhem message dispatcher as the dispatcher already calls DoTrigger on its behalf. $dotrigger should be 1 for updates initiated by internal timers, e.g. for polling devices.&lt;br /&gt;
&lt;br /&gt;
As a shorthand notation for updating just one reading write&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;readingsSingleUpdate($hash,$reading,$value,$dotrigger);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
which is the same as &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;readingsBeginUpdate($hash);&lt;br /&gt;
 readingsBulkUpdate($hash,$reading,$value);&lt;br /&gt;
 readingsEndUpdate($hash, $dotrigger);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
== STATE ==&lt;br /&gt;
Vorschlag zur Umsetzung, diskutiert [https://groups.google.com/forum/?hl=de&amp;amp;amp;fromgroups#!topic/fhem-developers/vqCx4M4X5l0 hier].&lt;br /&gt;
&lt;br /&gt;
In den [[DevelopmentGuidelines]], Kapselung, Standardisierung der Vorgehensweise.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Funktion &#039;&#039;&#039;readingsEndUpdate&#039;&#039;&#039; aktualisiert $hash-&amp;amp;gt;{STATE} grundsätzlich immer bei jedem Aufruf nach folgendem Algorithmus:&lt;br /&gt;
&lt;br /&gt;
Falls $sr= $attr{$name}{stateReading} gesetzt ist:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Fall 1: wenn $sr =~ &amp;quot;^{.*}$&amp;quot; dann eval &amp;quot;\$hash-&amp;amp;gt;{STATE} = $sr&amp;quot;;&lt;br /&gt;
  Fall 2: sonst $hash-&amp;amp;gt;{STATE}= $hash-&amp;amp;gt;{READINGS}{$sr}{VAL}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
sonst&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Falls es $hash-&amp;amp;gt;{READINGS}{state} gibt, $hash-&amp;amp;gt;{STATE}= $hash-&amp;amp;gt;{READINGS}{state}{VAL}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
sonst&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Tue nichts (das Modul hat sich gekuemmert).&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Ausserdem wird&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ReplaceEventMap()&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
losgelassen, um die EventMaps des Anwenders auch im STATE zur Anwendung zu bringen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aus &#039;&#039;&#039;DoTrigger&#039;&#039;&#039; werden&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;$defs{$dev}{STATE} = ReplaceEventMap($dev, $defs{$dev}{STATE}, 1);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
und&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# STATE &amp;amp;amp;&amp;amp;amp; {READINGS}{state} should be the same&lt;br /&gt;
  my $r = $defs{$dev}{READINGS};&lt;br /&gt;
  $r-&amp;amp;gt;{state}{VAL} = $defs{$dev}{STATE} if($r &amp;amp;amp;&amp;amp;amp; $r-&amp;amp;gt;{state});&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
entfernt.&lt;br /&gt;
&lt;br /&gt;
== Global Attributes ==&lt;br /&gt;
In fhem.pl existiert ein&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;my $AttrList = &amp;quot;room comment alias ...&amp;quot;;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Weiterhin kann jedes Modul im Initialize mit addToAttrList eigene Attribute zu&lt;br /&gt;
global userattr hinzufuegen.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Development]]&lt;/div&gt;</summary>
		<author><name>Yfhem</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=DevelopmentIntroduction&amp;diff=3478</id>
		<title>DevelopmentIntroduction</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=DevelopmentIntroduction&amp;diff=3478"/>
		<updated>2013-11-10T16:32:05Z</updated>

		<summary type="html">&lt;p&gt;Yfhem: /* Main Application Loop */ Clean up.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Developer&#039;s Introduction to FHEM =&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This page is intended to give an introduction to the FHEM application from a developer&#039;s perspective. If you&#039;re interested in extending, modifying or reusing the FHEM code, then hopefully you will find this a useful document. Note that this document is a work in progress! I myself at the time of writing this have only a few hours of experience under my belt, but I&#039;m documenting things I learn as I learn them.&lt;br /&gt;
&lt;br /&gt;
== Application Lifecycle ==&lt;br /&gt;
When you first launch the FHEM server, the following activities take place:&lt;br /&gt;
&lt;br /&gt;
# Application variables are initialised&lt;br /&gt;
# The valid application commands are loaded into a structure (%cmds) with the corresponding function name to call&lt;br /&gt;
# Do the job, either act as client or server. One of the following applies:&lt;br /&gt;
## If the application has been called as a FHEM client (eg perl fhem.pl 127.0.0.1:7072 commandToExecute)&lt;br /&gt;
### Connect to the FHEM server&lt;br /&gt;
### Execute the command&lt;br /&gt;
### Exit the program&lt;br /&gt;
## Otherwise (the application has been started as a server)&lt;br /&gt;
### Execute each of the commands listed in the configuration file to initialise the server (see the CommandInclude and then the AnalyzeCommandChain methods)&lt;br /&gt;
### Execute each of the commands in the state file if configured to restore the devices to the last state recorded when the server last ran&lt;br /&gt;
### Start the main application loop&lt;br /&gt;
&lt;br /&gt;
== Main Application Loop ==&lt;br /&gt;
The following code is repeated until the application ends:&lt;br /&gt;
&lt;br /&gt;
# For each input device (eg FHZ1000 / FHZ1300 / CUL):&lt;br /&gt;
## Use that device module&#039;s Ready and Read functions to read data from the device&lt;br /&gt;
## For CUL devices, the data is read and parsed at this point&lt;br /&gt;
## For FHZ devices, the FHZ_CheckCRC method is used to validate the received data&lt;br /&gt;
## Call the Dispatch method in FHEM.pl to pass the message onto the correct device and corresponding module (Parse function)&lt;br /&gt;
$server-&amp;amp;gt;fileno() is used to check for and accept new connections to the server&lt;br /&gt;
For each connected client:&lt;br /&gt;
# Read data from the client using sysread&lt;br /&gt;
# Pass the received input into the AnalyzeInput method to execute the command&lt;br /&gt;
&lt;br /&gt;
== Configuration and State Files ==&lt;br /&gt;
Note that these are just lists of commands to execute in a text file! So anything in these files will be interpreted by FHEM in the exact same way if a user keys the commands manually into a client application, eg a telnet connection.&lt;br /&gt;
&lt;br /&gt;
== Readings ==&lt;br /&gt;
The following mechanism is recommended for updating readings. It saves lines of codes and automatically makes your module honor the event-on-update-reading and event-on-change-reading attributes.&lt;br /&gt;
&lt;br /&gt;
Before you start updating readings, write (in case $hash = $defs{&amp;amp;lt;device&amp;amp;gt;})&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;readingsBeginUpdate($hash);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
For every reading you update, write&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;readingsBulkUpdate($hash,$reading,$value);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Terminate with&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;readingsEndUpdate($hash, $dotrigger);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
The $dotrigger parameter should be 0 for updates initiated by fhem message dispatcher as the dispatcher already calls DoTrigger on its behalf. $dotrigger should be 1 for updates initiated by internal timers, e.g. for polling devices.&lt;br /&gt;
&lt;br /&gt;
As a shorthand notation for updating just one reading write&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;readingsSingleUpdate($hash,$reading,$value,$dotrigger);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
which is the same as &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;readingsBeginUpdate($hash);&lt;br /&gt;
 readingsBulkUpdate($hash,$reading,$value);&lt;br /&gt;
 readingsEndUpdate($hash, $dotrigger);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
== STATE ==&lt;br /&gt;
Vorschlag zur Umsetzung, diskutiert [https://groups.google.com/forum/?hl=de&amp;amp;amp;fromgroups#!topic/fhem-developers/vqCx4M4X5l0 hier].&lt;br /&gt;
&lt;br /&gt;
In den [[DevelopmentGuidelines]], Kapselung, Standardisierung der Vorgehensweise.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Funktion &#039;&#039;&#039;readingsEndUpdate&#039;&#039;&#039;aktualisiert $hash-&amp;amp;gt;{STATE} grundsätzlich immer bei jedem Aufruf nach folgendem Algorithmus:&lt;br /&gt;
&lt;br /&gt;
Falls $sr= $attr{$name}{stateReading} gesetzt ist:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Fall 1: wenn $sr =~ &amp;quot;^{.*}$&amp;quot; dann eval &amp;quot;\$hash-&amp;amp;gt;{STATE} = $sr&amp;quot;;&lt;br /&gt;
  Fall 2: sonst $hash-&amp;amp;gt;{STATE}= $hash-&amp;amp;gt;{READINGS}{$sr}{VAL}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
sonst&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Falls es $hash-&amp;amp;gt;{READINGS}{state} gibt, $hash-&amp;amp;gt;{STATE}= $hash-&amp;amp;gt;{READINGS}{state}{VAL}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
sonst&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Tue nichts (das Modul hat sich gekuemmert).&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Ausserdem wird&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ReplaceEventMap()&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
losgelassen, um die EventMaps des Anwenders auch im STATE zur Anwendung zu bringen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aus &#039;&#039;&#039;DoTrigger&#039;&#039;&#039;werden&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;$defs{$dev}{STATE} = ReplaceEventMap($dev, $defs{$dev}{STATE}, 1);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
und&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# STATE &amp;amp;amp;&amp;amp;amp; {READINGS}{state} should be the same&lt;br /&gt;
  my $r = $defs{$dev}{READINGS};&lt;br /&gt;
  $r-&amp;amp;gt;{state}{VAL} = $defs{$dev}{STATE} if($r &amp;amp;amp;&amp;amp;amp; $r-&amp;amp;gt;{state});&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
entfernt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Global Attributes ==&lt;br /&gt;
In fhem.pl existiert ein&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;my $AttrList = &amp;quot;room comment alias ...&amp;quot;;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Weiterhin kann jedes Modul im Initialize mit addToAttrList eigene Attribute zu&lt;br /&gt;
global userattr hinzufuegen.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Development]]&lt;/div&gt;</summary>
		<author><name>Yfhem</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=SUNRISE_EL&amp;diff=3389</id>
		<title>SUNRISE EL</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=SUNRISE_EL&amp;diff=3389"/>
		<updated>2013-11-06T15:18:37Z</updated>

		<summary type="html">&lt;p&gt;Yfhem: Added link to commandref.html.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Lichtsteuerung per sunset / sunrise&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Siehe auch: [http://fhem.de/commandref.html#SUNRISE_EL commandref.html]&lt;br /&gt;
== Voraussetzungen ==&lt;br /&gt;
In der &#039;&#039;fhem.cfg&#039;&#039; müssen Sie vorher Ihren Wohnsitz definieren, da der Sonnenauf- und -untergang ja nicht nur vom Datum, sondern auch vom Längen- und Breitengrad Ihres Standortes abhängig ist. Hierzu tragen Sie folgende Zeilen in die &#039;&#039;fhem.cfg&#039;&#039; ein:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr global latitude 5X.XYZ&lt;br /&gt;
attr global longitude 6.XYZ&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
und zwar in genau dieser Schreibweise. Entweder benutzen Sie zur Bestimmung ein GPS-System oder sie befragen einen entsprechenden Internet-Dienst.&lt;br /&gt;
&lt;br /&gt;
Als Internet-Dienst eignet sich beipielsweise [http://www.openstreetmap.org/#map=12/52.4994/13.4960 OpenStreetMap]. Die Werte latitude und longitude können aus der URL abgelesen werden. In diesem Beispiel latitude 52.4994 und longitude 13.4960.&lt;br /&gt;
&lt;br /&gt;
== Steuerung ==&lt;br /&gt;
Mittels folgender Skriptzeilen in der &#039;&#039;fhem.cfg&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Außenlampe - Steuerung An-/Ausschaltzeit&lt;br /&gt;
define AussenlampeAn1 at *{sunset(0,&amp;quot;17:00&amp;quot;,&amp;quot;22:00&amp;quot;)} set EG.Diele.Aussenlampe on&lt;br /&gt;
define AussenlampeAus1 at *{sunrise(0,&amp;quot;05:00&amp;quot;,&amp;quot;07:30&amp;quot;)} set EG.Diele.Aussenlampe off&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
wird der Funk-Lichtschalter für die Außenbeleuchtung (hier das FHEM-Gerät mit dem Namen &#039;&#039;EG.Diele.Aussenlampe&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
* morgens zum Sonnenaufgang, aber nicht vor 05:00 und nicht nach 07:30 Uhr ausgeschaltet&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
&lt;br /&gt;
* abends zum Sonnenuntergang eingeschaltet, aber nicht vor 17:00 Uhr und nicht nach 22:00 Uhr.&lt;br /&gt;
&lt;br /&gt;
Im FHEM-Standard wird der sogenannte bürgerliche Sonnenuntergang/-aufgang genutzt. &lt;br /&gt;
&lt;br /&gt;
Bis bzw. ab dieser Zeit ist das Lesen ohne zusätzliche Beleuchtung möglich.&lt;br /&gt;
Da dies nicht immer gewünscht ist, ist es möglich bei den sunrise/sunset-Funktionen *optional* als ersten Parameter vorne REAL, CIVIL, NAUTIC, ASTRONOMIC oder z.B. HORIZON=-6.0 oder &amp;quot;HORIZON -6.0&amp;quot; anzustellen: &lt;br /&gt;
&lt;br /&gt;
  # Normales Verhalten wie im obigen Beispiel: &lt;br /&gt;
  {sunset(0,&amp;quot;17:00&amp;quot;,&amp;quot;22:00&amp;quot;)}&lt;br /&gt;
  Ergebnis (als Beispiel): 19:59:22 &lt;br /&gt;
&lt;br /&gt;
  # Gleiches Beispiel mit CIVIL als 1. Parameter:  &lt;br /&gt;
  {sunset(&amp;quot;CIVIL&amp;quot;,0,&amp;quot;17:00&amp;quot;,&amp;quot;22:00&amp;quot;)} &lt;br /&gt;
  Ergebnis (als Beispiel):   19:59:22 &lt;br /&gt;
&lt;br /&gt;
  # Gleiches Beispiel mit Eingabe der Höhe über Horizont als 1. Parameter: &lt;br /&gt;
  {sunset(&amp;quot;HORIZON=-6.0&amp;quot;,0,&amp;quot;17:00&amp;quot;,&amp;quot;22:00&amp;quot;)} &lt;br /&gt;
  Ergebnis (als Beispiel):   19:59:22 &lt;br /&gt;
&lt;br /&gt;
  # Gleiches Beispiel mit dem realen Sonnenuntergang auf 0 Grad als 1. Parameter: &lt;br /&gt;
  {sunset(&amp;quot;REAL&amp;quot;,0,&amp;quot;17:00&amp;quot;,&amp;quot;22:00&amp;quot;);;} &lt;br /&gt;
  Ergebnis (als Beispiel):   19:22:07&lt;br /&gt;
&lt;br /&gt;
== Kontrolle ==&lt;br /&gt;
Um die Zeiten zu kontrollieren können Sie in der FHEM-Befehlszeile den Befehl&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
list AussenlampeAn1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
eingeben und mit der &amp;amp;lt;Enter&amp;amp;gt;-Taste (nicht &amp;quot;save-Button&amp;quot;) bestätigen. Sie sehen dann (hier eine Ausgabe vom 17.01.2013) z.B. folgendes:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Internals:&lt;br /&gt;
  DEF    *{sunset(0,&amp;amp;quot;17:00&amp;amp;quot;,&amp;amp;quot;22:00&amp;amp;quot;)} set EG.Diele.Aussenlampe on&lt;br /&gt;
  NAME    AussenlampeAn1&lt;br /&gt;
  NR     225&lt;br /&gt;
  NTM    17:37:09&lt;br /&gt;
  REP    -1&lt;br /&gt;
  STATE   Next: 17:37:09&lt;br /&gt;
  TRIGGERTIME 1358527029&lt;br /&gt;
  TYPE    at&lt;br /&gt;
Attributes:&lt;br /&gt;
  room    Diele&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Der Sonnenuntergang liegt am genannten Tag &#039;&#039;&#039;innerhalb&#039;&#039;&#039; des Start-/Ende-Zeitraums, so dass die Lampe um 17:37 Uhr eingeschaltet wird.&lt;br /&gt;
&lt;br /&gt;
Die Ausgabe (gleiches Datum) von&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
list AussenlampeAus1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lautet:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Internals:&lt;br /&gt;
  DEF    *{sunrise(0,&amp;amp;quot;05:00&amp;amp;quot;,&amp;amp;quot;07:30&amp;amp;quot;)} set EG.Diele.Aussenlampe off&lt;br /&gt;
  NAME    AussenlampeAus1&lt;br /&gt;
  NR     228&lt;br /&gt;
  NTM    07:30:00&lt;br /&gt;
  REP    -1&lt;br /&gt;
  STATE   Next: 07:30:00&lt;br /&gt;
  TRIGGERTIME 1358490600&lt;br /&gt;
  TYPE    at&lt;br /&gt;
Attributes:&lt;br /&gt;
  room    Diele&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Hier liegt der Sonnenaufgang noch &#039;&#039;&#039;außerhalb&#039;&#039;&#039; des Start-/Ende-Zeitraums, so dass die Lampe um 07:30 Uhr ausgeschaltet wird.&lt;br /&gt;
&lt;br /&gt;
== Hinweise ==&lt;br /&gt;
* Da es [https://groups.google.com/forum/?fromgroups=#!topic/fhem-users/y2CbOQmTVsg Eintrag in der ehemaligen FHEM-Google-Group] entnehmen.&lt;br /&gt;
* Die &#039;&#039;sunset / sunrise&#039;&#039; Einstellungen arbeiten meist erst &#039;&#039;&#039;am nächsten Tag&#039;&#039;&#039; richtig. Das hängt zusammen mit einer Falschberechnung beim setzen dieses &#039;&#039;defines&#039;&#039;. An einer Korrektur wird gearbeitet (Stand Januar 2013).&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Yfhem</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Bekannte_HomeMatic_Ger%C3%A4te&amp;diff=3377</id>
		<title>Bekannte HomeMatic Geräte</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Bekannte_HomeMatic_Ger%C3%A4te&amp;diff=3377"/>
		<updated>2013-11-05T12:44:48Z</updated>

		<summary type="html">&lt;p&gt;Yfhem: Updated link.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die folgenden Geräte sind in der CUL_HM.pm vorhanden. (03.06.12, [http://sourceforge.net/p/fhem/code/HEAD/tree/trunk/fhem/FHEM/10_CUL_HM.pm?revision=1603 Rev. 1603])&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;amp;quot;0001&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-LC-SW1-PL-OM54&amp;amp;quot;,&lt;br /&gt;
 &amp;amp;quot;0002&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-LC-SW1-SM&amp;amp;quot;,&lt;br /&gt;
 &amp;amp;quot;0003&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-LC-SW4-SM&amp;amp;quot;,&lt;br /&gt;
 &amp;amp;quot;0004&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-LC-SW1-FM&amp;amp;quot;, # Tested&lt;br /&gt;
 &amp;amp;quot;0005&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-LC-BL1-FM&amp;amp;quot;, # Tested by ruebezahl (2011-09-22)&lt;br /&gt;
 &amp;amp;quot;0006&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-LC-BL1-SM&amp;amp;quot;,&lt;br /&gt;
 &amp;amp;quot;0007&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;KS550&amp;amp;quot;,     # Tested&lt;br /&gt;
 &amp;amp;quot;0008&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-RC-4&amp;amp;quot;,    # cant pair(AES)-&amp;amp;gt; broadcast only&lt;br /&gt;
 &amp;amp;quot;0009&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-LC-SW2-FM&amp;amp;quot;,&lt;br /&gt;
 &amp;amp;quot;000A&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-LC-SW2-SM&amp;amp;quot;,&lt;br /&gt;
 &amp;amp;quot;000B&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-WDC7000&amp;amp;quot;,  # Tested by elanter (2011-09-22)&lt;br /&gt;
 &amp;amp;quot;000D&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;ASH550&amp;amp;quot;,&lt;br /&gt;
 &amp;amp;quot;000E&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;ASH550I&amp;amp;quot;,&lt;br /&gt;
 &amp;amp;quot;000F&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;S550IA&amp;amp;quot;,&lt;br /&gt;
 &amp;amp;quot;0011&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-LC-SW1-PL&amp;amp;quot;,  # Tested&lt;br /&gt;
 &amp;amp;quot;0012&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-LC-DIM1L-CV&amp;amp;quot;,&lt;br /&gt;
 &amp;amp;quot;0013&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-LC-DIM1L-PL&amp;amp;quot;,&lt;br /&gt;
 &amp;amp;quot;0014&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-LC-SW1-SM-ATMEGA168&amp;amp;quot;,&lt;br /&gt;
 &amp;amp;quot;0015&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-LC-SW4-SM-ATMEGA168&amp;amp;quot;,&lt;br /&gt;
 &amp;amp;quot;0016&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-LC-DIM2L-CV&amp;amp;quot;,&lt;br /&gt;
 &amp;amp;quot;0018&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;CMM&amp;amp;quot;,&lt;br /&gt;
 &amp;amp;quot;0019&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-SEC-KEY&amp;amp;quot;,&lt;br /&gt;
 &amp;amp;quot;001A&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-RC-P1&amp;amp;quot;,&lt;br /&gt;
 &amp;amp;quot;001B&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-RC-SEC3&amp;amp;quot;,&lt;br /&gt;
 &amp;amp;quot;001C&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-RC-SEC3-B&amp;amp;quot;,&lt;br /&gt;
 &amp;amp;quot;001D&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-RC-KEY3&amp;amp;quot;,&lt;br /&gt;
 &amp;amp;quot;001E&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-RC-KEY3-B&amp;amp;quot;,&lt;br /&gt;
 &amp;amp;quot;0022&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;WS888&amp;amp;quot;,&lt;br /&gt;
 &amp;amp;quot;0026&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-SEC-KEY-S&amp;amp;quot;,&lt;br /&gt;
 &amp;amp;quot;0027&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-SEC-KEY-O&amp;amp;quot;,&lt;br /&gt;
 &amp;amp;quot;0028&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-SEC-WIN&amp;amp;quot;,   # some experiments&lt;br /&gt;
 &amp;amp;quot;0029&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-RC-12&amp;amp;quot;,&lt;br /&gt;
 &amp;amp;quot;002A&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-RC-12-B&amp;amp;quot;,&lt;br /&gt;
 &amp;amp;quot;002D&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-LC-SW4-PCB&amp;amp;quot;,&lt;br /&gt;
 &amp;amp;quot;002E&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-LC-DIM2L-SM&amp;amp;quot;,&lt;br /&gt;
 &amp;amp;quot;002F&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-SEC-SC&amp;amp;quot;,&lt;br /&gt;
 &amp;amp;quot;0030&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-SEC-RHS&amp;amp;quot;,   # Tested&lt;br /&gt;
 &amp;amp;quot;0034&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-PBI-4-FM&amp;amp;quot;,&lt;br /&gt;
 &amp;amp;quot;0035&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-PB-4-WM&amp;amp;quot;,   # Tested&lt;br /&gt;
 &amp;amp;quot;0036&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-PB-2-WM&amp;amp;quot;,&lt;br /&gt;
 &amp;amp;quot;0037&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-RC-19&amp;amp;quot;,&lt;br /&gt;
 &amp;amp;quot;0038&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-RC-19-B&amp;amp;quot;,&lt;br /&gt;
 &amp;amp;quot;0039&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-CC-TC&amp;amp;quot;,    # Selected commands&lt;br /&gt;
 &amp;amp;quot;003A&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-CC-VD&amp;amp;quot;,    # Actuator, battery/etc missing&lt;br /&gt;
 &amp;amp;quot;003B&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-RC-4-B&amp;amp;quot;,&lt;br /&gt;
 &amp;amp;quot;003C&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-WDS20-TH-O&amp;amp;quot;,&lt;br /&gt;
 &amp;amp;quot;003D&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-WDS10-TH-O&amp;amp;quot;, # Reported to work (2011-07-26)&lt;br /&gt;
 &amp;amp;quot;003E&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-WDS30-T-O&amp;amp;quot;,&lt;br /&gt;
 &amp;amp;quot;003F&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-WDS40-TH-I&amp;amp;quot;, # Tested by peterp&lt;br /&gt;
 &amp;amp;quot;0040&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-WDS100-C6-O&amp;amp;quot;, # Identical to KS550?&lt;br /&gt;
 &amp;amp;quot;0041&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-WDC7000&amp;amp;quot;,   # Tested by elanter (2011-09-22)&lt;br /&gt;
 &amp;amp;quot;0042&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-SEC-SD&amp;amp;quot;,   # Tested&lt;br /&gt;
 &amp;amp;quot;0043&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-SEC-TIS&amp;amp;quot;,&lt;br /&gt;
 &amp;amp;quot;0044&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-SEN-EP&amp;amp;quot;,&lt;br /&gt;
 &amp;amp;quot;0045&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-SEC-WDS&amp;amp;quot;,   # Tested by peterp&lt;br /&gt;
 &amp;amp;quot;0046&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-SWI-3-FM&amp;amp;quot;,  # Tested by NorbertW&lt;br /&gt;
 &amp;amp;quot;0047&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;KFM-Display&amp;amp;quot;,&lt;br /&gt;
 &amp;amp;quot;0048&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;IS-WDS-TH-OD-S-R3&amp;amp;quot;,&lt;br /&gt;
 &amp;amp;quot;0049&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;KFM-Sensor&amp;amp;quot;,&lt;br /&gt;
 &amp;amp;quot;004A&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-SEC-MDIR&amp;amp;quot;,   # Tested&lt;br /&gt;
 &amp;amp;quot;004B&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-Sec-Cen&amp;amp;quot;,   # by peterp&lt;br /&gt;
 &amp;amp;quot;004C&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-RC-12-SW&amp;amp;quot;,&lt;br /&gt;
 &amp;amp;quot;004D&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-RC-19-SW&amp;amp;quot;,&lt;br /&gt;
 &amp;amp;quot;004E&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-LC-DDC1-PCB&amp;amp;quot;,&lt;br /&gt;
 &amp;amp;quot;004F&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-SEN-MDIR-SM&amp;amp;quot;,&lt;br /&gt;
 &amp;amp;quot;0050&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-SEC-SFA-SM&amp;amp;quot;,&lt;br /&gt;
 &amp;amp;quot;0051&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-LC-SW1-PB-FM&amp;amp;quot;,&lt;br /&gt;
 &amp;amp;quot;0052&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-LC-SW2-PB-FM&amp;amp;quot;, # Tested&lt;br /&gt;
 &amp;amp;quot;0053&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-LC-BL1-PB-FM&amp;amp;quot;, # Tested by ruebezahl (2011-09-22)&lt;br /&gt;
 &amp;amp;quot;0056&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-CC-SCD&amp;amp;quot;,	  &lt;br /&gt;
 &amp;amp;quot;0057&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-LC-DIM1T-PL&amp;amp;quot;,&lt;br /&gt;
 &amp;amp;quot;0058&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-LC-DIM1T-CV&amp;amp;quot;,&lt;br /&gt;
 &amp;amp;quot;0059&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-LC-DIM1T-FM&amp;amp;quot;,&lt;br /&gt;
 &amp;amp;quot;005A&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-LC-DIM2T-SM&amp;amp;quot;,&lt;br /&gt;
 &amp;amp;quot;005C&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-OU-CF-PL&amp;amp;quot;,&lt;br /&gt;
 &amp;amp;quot;005F&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-SCI-3-FM&amp;amp;quot;,   # Tested by fhem-hm-knecht&lt;br /&gt;
 &amp;amp;quot;0060&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-PB-4DIS-WM&amp;amp;quot;,  # Tested&lt;br /&gt;
 &amp;amp;quot;0061&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-LC-SW4-DR&amp;amp;quot;,  # Tested by fhem-hm-knecht&lt;br /&gt;
 &amp;amp;quot;0062&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-LC-SW2-DR&amp;amp;quot;,&lt;br /&gt;
 &amp;amp;quot;0066&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM_LC_Sw4-WM&amp;amp;quot;,   # Tested by peterp&lt;br /&gt;
 &amp;amp;quot;0067&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-LC_Dim1PWM-CV&amp;amp;quot;, # Tested by peterp&lt;br /&gt;
 &amp;amp;quot;006C&amp;amp;quot; =&amp;amp;gt; &amp;amp;quot;HM-LC-SW1-BA-PCB&amp;amp;quot;, # Tested by MartiMcFly&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HomeMatic Components]]&lt;/div&gt;</summary>
		<author><name>Yfhem</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=SUNRISE_EL&amp;diff=3376</id>
		<title>SUNRISE EL</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=SUNRISE_EL&amp;diff=3376"/>
		<updated>2013-11-05T10:41:57Z</updated>

		<summary type="html">&lt;p&gt;Yfhem: /* Kontrolle */ Added space.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Lichtsteuerung per sunset / sunrise&#039;&#039;&#039;&lt;br /&gt;
== Voraussetzungen ==&lt;br /&gt;
In der &#039;&#039;fhem.cfg&#039;&#039; müssen Sie vorher Ihren Wohnsitz definieren, da der Sonnenauf- und -untergang ja nicht nur vom Datum, sondern auch vom Längen- und Breitengrad Ihres Standortes abhängig ist. Hierzu tragen Sie folgende Zeilen in die &#039;&#039;fhem.cfg&#039;&#039; ein:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr global latitude 5X.XYZ&lt;br /&gt;
attr global longitude 6.XYZ&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
und zwar in genau dieser Schreibweise. Entweder benutzen Sie zur Bestimmung ein GPS-System oder sie befragen einen entsprechenden Internet-Dienst.&lt;br /&gt;
&lt;br /&gt;
Als Internet-Dienst eignet sich beipielsweise [http://www.openstreetmap.org/#map=12/52.4994/13.4960 OpenStreetMap]. Die Werte latitude und longitude können aus der URL abgelesen werden. In diesem Beispiel latitude 52.4994 und longitude 13.4960.&lt;br /&gt;
&lt;br /&gt;
== Steuerung ==&lt;br /&gt;
Mittels folgender Skriptzeilen in der &#039;&#039;fhem.cfg&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Außenlampe - Steuerung An-/Ausschaltzeit&lt;br /&gt;
define AussenlampeAn1 at *{sunset(0,&amp;quot;17:00&amp;quot;,&amp;quot;22:00&amp;quot;)} set EG.Diele.Aussenlampe on&lt;br /&gt;
define AussenlampeAus1 at *{sunrise(0,&amp;quot;05:00&amp;quot;,&amp;quot;07:30&amp;quot;)} set EG.Diele.Aussenlampe off&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
wird der Funk-Lichtschalter für die Außenbeleuchtung (hier das FHEM-Gerät mit dem Namen &#039;&#039;EG.Diele.Aussenlampe&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
* morgens zum Sonnenaufgang, aber nicht vor 05:00 und nicht nach 07:30 Uhr ausgeschaltet&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
&lt;br /&gt;
* abends zum Sonnenuntergang eingeschaltet, aber nicht vor 17:00 Uhr und nicht nach 22:00 Uhr.&lt;br /&gt;
&lt;br /&gt;
Im FHEM-Standard wird der sogenannte bürgerliche Sonnenuntergang/-aufgang genutzt. &lt;br /&gt;
&lt;br /&gt;
Bis bzw. ab dieser Zeit ist das Lesen ohne zusätzliche Beleuchtung möglich.&lt;br /&gt;
Da dies nicht immer gewünscht ist, ist es möglich bei den sunrise/sunset-Funktionen *optional* als ersten Parameter vorne REAL, CIVIL, NAUTIC, ASTRONOMIC oder z.B. HORIZON=-6.0 oder &amp;quot;HORIZON -6.0&amp;quot; anzustellen: &lt;br /&gt;
&lt;br /&gt;
  # Normales Verhalten wie im obigen Beispiel: &lt;br /&gt;
  {sunset(0,&amp;quot;17:00&amp;quot;,&amp;quot;22:00&amp;quot;)}&lt;br /&gt;
  Ergebnis (als Beispiel): 19:59:22 &lt;br /&gt;
&lt;br /&gt;
  # Gleiches Beispiel mit CIVIL als 1. Parameter:  &lt;br /&gt;
  {sunset(&amp;quot;CIVIL&amp;quot;,0,&amp;quot;17:00&amp;quot;,&amp;quot;22:00&amp;quot;)} &lt;br /&gt;
  Ergebnis (als Beispiel):   19:59:22 &lt;br /&gt;
&lt;br /&gt;
  # Gleiches Beispiel mit Eingabe der Höhe über Horizont als 1. Parameter: &lt;br /&gt;
  {sunset(&amp;quot;HORIZON=-6.0&amp;quot;,0,&amp;quot;17:00&amp;quot;,&amp;quot;22:00&amp;quot;)} &lt;br /&gt;
  Ergebnis (als Beispiel):   19:59:22 &lt;br /&gt;
&lt;br /&gt;
  # Gleiches Beispiel mit dem realen Sonnenuntergang auf 0 Grad als 1. Parameter: &lt;br /&gt;
  {sunset(&amp;quot;REAL&amp;quot;,0,&amp;quot;17:00&amp;quot;,&amp;quot;22:00&amp;quot;);;} &lt;br /&gt;
  Ergebnis (als Beispiel):   19:22:07&lt;br /&gt;
&lt;br /&gt;
== Kontrolle ==&lt;br /&gt;
Um die Zeiten zu kontrollieren können Sie in der FHEM-Befehlszeile den Befehl&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
list AussenlampeAn1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
eingeben und mit der &amp;amp;lt;Enter&amp;amp;gt;-Taste (nicht &amp;quot;save-Button&amp;quot;) bestätigen. Sie sehen dann (hier eine Ausgabe vom 17.01.2013) z.B. folgendes:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Internals:&lt;br /&gt;
  DEF    *{sunset(0,&amp;amp;quot;17:00&amp;amp;quot;,&amp;amp;quot;22:00&amp;amp;quot;)} set EG.Diele.Aussenlampe on&lt;br /&gt;
  NAME    AussenlampeAn1&lt;br /&gt;
  NR     225&lt;br /&gt;
  NTM    17:37:09&lt;br /&gt;
  REP    -1&lt;br /&gt;
  STATE   Next: 17:37:09&lt;br /&gt;
  TRIGGERTIME 1358527029&lt;br /&gt;
  TYPE    at&lt;br /&gt;
Attributes:&lt;br /&gt;
  room    Diele&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Der Sonnenuntergang liegt am genannten Tag &#039;&#039;&#039;innerhalb&#039;&#039;&#039; des Start-/Ende-Zeitraums, so dass die Lampe um 17:37 Uhr eingeschaltet wird.&lt;br /&gt;
&lt;br /&gt;
Die Ausgabe (gleiches Datum) von&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
list AussenlampeAus1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lautet:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Internals:&lt;br /&gt;
  DEF    *{sunrise(0,&amp;amp;quot;05:00&amp;amp;quot;,&amp;amp;quot;07:30&amp;amp;quot;)} set EG.Diele.Aussenlampe off&lt;br /&gt;
  NAME    AussenlampeAus1&lt;br /&gt;
  NR     228&lt;br /&gt;
  NTM    07:30:00&lt;br /&gt;
  REP    -1&lt;br /&gt;
  STATE   Next: 07:30:00&lt;br /&gt;
  TRIGGERTIME 1358490600&lt;br /&gt;
  TYPE    at&lt;br /&gt;
Attributes:&lt;br /&gt;
  room    Diele&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Hier liegt der Sonnenaufgang noch &#039;&#039;&#039;außerhalb&#039;&#039;&#039; des Start-/Ende-Zeitraums, so dass die Lampe um 07:30 Uhr ausgeschaltet wird.&lt;br /&gt;
&lt;br /&gt;
== Hinweise ==&lt;br /&gt;
* Da es [https://groups.google.com/forum/?fromgroups=#!topic/fhem-users/y2CbOQmTVsg Eintrag in der ehemaligen FHEM-Google-Group] entnehmen.&lt;br /&gt;
* Die &#039;&#039;sunset / sunrise&#039;&#039; Einstellungen arbeiten meist erst &#039;&#039;&#039;am nächsten Tag&#039;&#039;&#039; richtig. Das hängt zusammen mit einer Falschberechnung beim setzen dieses &#039;&#039;defines&#039;&#039;. An einer Korrektur wird gearbeitet (Stand Januar 2013).&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Yfhem</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=SUNRISE_EL&amp;diff=3375</id>
		<title>SUNRISE EL</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=SUNRISE_EL&amp;diff=3375"/>
		<updated>2013-11-05T10:41:26Z</updated>

		<summary type="html">&lt;p&gt;Yfhem: /* Kontrolle */ Added space.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Lichtsteuerung per sunset / sunrise&#039;&#039;&#039;&lt;br /&gt;
== Voraussetzungen ==&lt;br /&gt;
In der &#039;&#039;fhem.cfg&#039;&#039; müssen Sie vorher Ihren Wohnsitz definieren, da der Sonnenauf- und -untergang ja nicht nur vom Datum, sondern auch vom Längen- und Breitengrad Ihres Standortes abhängig ist. Hierzu tragen Sie folgende Zeilen in die &#039;&#039;fhem.cfg&#039;&#039; ein:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr global latitude 5X.XYZ&lt;br /&gt;
attr global longitude 6.XYZ&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
und zwar in genau dieser Schreibweise. Entweder benutzen Sie zur Bestimmung ein GPS-System oder sie befragen einen entsprechenden Internet-Dienst.&lt;br /&gt;
&lt;br /&gt;
Als Internet-Dienst eignet sich beipielsweise [http://www.openstreetmap.org/#map=12/52.4994/13.4960 OpenStreetMap]. Die Werte latitude und longitude können aus der URL abgelesen werden. In diesem Beispiel latitude 52.4994 und longitude 13.4960.&lt;br /&gt;
&lt;br /&gt;
== Steuerung ==&lt;br /&gt;
Mittels folgender Skriptzeilen in der &#039;&#039;fhem.cfg&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Außenlampe - Steuerung An-/Ausschaltzeit&lt;br /&gt;
define AussenlampeAn1 at *{sunset(0,&amp;quot;17:00&amp;quot;,&amp;quot;22:00&amp;quot;)} set EG.Diele.Aussenlampe on&lt;br /&gt;
define AussenlampeAus1 at *{sunrise(0,&amp;quot;05:00&amp;quot;,&amp;quot;07:30&amp;quot;)} set EG.Diele.Aussenlampe off&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
wird der Funk-Lichtschalter für die Außenbeleuchtung (hier das FHEM-Gerät mit dem Namen &#039;&#039;EG.Diele.Aussenlampe&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
* morgens zum Sonnenaufgang, aber nicht vor 05:00 und nicht nach 07:30 Uhr ausgeschaltet&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
&lt;br /&gt;
* abends zum Sonnenuntergang eingeschaltet, aber nicht vor 17:00 Uhr und nicht nach 22:00 Uhr.&lt;br /&gt;
&lt;br /&gt;
Im FHEM-Standard wird der sogenannte bürgerliche Sonnenuntergang/-aufgang genutzt. &lt;br /&gt;
&lt;br /&gt;
Bis bzw. ab dieser Zeit ist das Lesen ohne zusätzliche Beleuchtung möglich.&lt;br /&gt;
Da dies nicht immer gewünscht ist, ist es möglich bei den sunrise/sunset-Funktionen *optional* als ersten Parameter vorne REAL, CIVIL, NAUTIC, ASTRONOMIC oder z.B. HORIZON=-6.0 oder &amp;quot;HORIZON -6.0&amp;quot; anzustellen: &lt;br /&gt;
&lt;br /&gt;
  # Normales Verhalten wie im obigen Beispiel: &lt;br /&gt;
  {sunset(0,&amp;quot;17:00&amp;quot;,&amp;quot;22:00&amp;quot;)}&lt;br /&gt;
  Ergebnis (als Beispiel): 19:59:22 &lt;br /&gt;
&lt;br /&gt;
  # Gleiches Beispiel mit CIVIL als 1. Parameter:  &lt;br /&gt;
  {sunset(&amp;quot;CIVIL&amp;quot;,0,&amp;quot;17:00&amp;quot;,&amp;quot;22:00&amp;quot;)} &lt;br /&gt;
  Ergebnis (als Beispiel):   19:59:22 &lt;br /&gt;
&lt;br /&gt;
  # Gleiches Beispiel mit Eingabe der Höhe über Horizont als 1. Parameter: &lt;br /&gt;
  {sunset(&amp;quot;HORIZON=-6.0&amp;quot;,0,&amp;quot;17:00&amp;quot;,&amp;quot;22:00&amp;quot;)} &lt;br /&gt;
  Ergebnis (als Beispiel):   19:59:22 &lt;br /&gt;
&lt;br /&gt;
  # Gleiches Beispiel mit dem realen Sonnenuntergang auf 0 Grad als 1. Parameter: &lt;br /&gt;
  {sunset(&amp;quot;REAL&amp;quot;,0,&amp;quot;17:00&amp;quot;,&amp;quot;22:00&amp;quot;);;} &lt;br /&gt;
  Ergebnis (als Beispiel):   19:22:07&lt;br /&gt;
&lt;br /&gt;
== Kontrolle ==&lt;br /&gt;
Um die Zeiten zu kontrollieren können Sie in der FHEM-Befehlszeile den Befehl&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
list AussenlampeAn1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
eingeben und mit der &amp;amp;lt;Enter&amp;amp;gt;-Taste (nicht &amp;quot;save-Button&amp;quot;) bestätigen. Sie sehen dann (hier eine Ausgabe vom 17.01.2013) z.B. folgendes:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Internals:&lt;br /&gt;
  DEF    *{sunset(0,&amp;amp;quot;17:00&amp;amp;quot;,&amp;amp;quot;22:00&amp;amp;quot;)} set EG.Diele.Aussenlampe on&lt;br /&gt;
  NAME    AussenlampeAn1&lt;br /&gt;
  NR     225&lt;br /&gt;
  NTM    17:37:09&lt;br /&gt;
  REP    -1&lt;br /&gt;
  STATE   Next: 17:37:09&lt;br /&gt;
  TRIGGERTIME 1358527029&lt;br /&gt;
  TYPE    at&lt;br /&gt;
Attributes:&lt;br /&gt;
  room    Diele&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Der Sonnenuntergang liegt am genannten Tag &#039;&#039;&#039;innerhalb&#039;&#039;&#039; des Start-/Ende-Zeitraums, so dass die Lampe um 17:37 Uhr eingeschaltet wird.&lt;br /&gt;
&lt;br /&gt;
Die Ausgabe (gleiches Datum) von&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
list AussenlampeAus1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lautet:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Internals:&lt;br /&gt;
  DEF    *{sunrise(0,&amp;amp;quot;05:00&amp;amp;quot;,&amp;amp;quot;07:30&amp;amp;quot;)} set EG.Diele.Aussenlampe off&lt;br /&gt;
  NAME    AussenlampeAus1&lt;br /&gt;
  NR     228&lt;br /&gt;
  NTM    07:30:00&lt;br /&gt;
  REP    -1&lt;br /&gt;
  STATE   Next: 07:30:00&lt;br /&gt;
  TRIGGERTIME 1358490600&lt;br /&gt;
  TYPE    at&lt;br /&gt;
Attributes:&lt;br /&gt;
  room    Diele&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Hier liegt der Sonnenaufgang noch &#039;&#039;&#039;außerhalb&#039;&#039;&#039;des Start-/Ende-Zeitraums, so dass die Lampe um 07:30 Uhr ausgeschaltet wird.&lt;br /&gt;
&lt;br /&gt;
== Hinweise ==&lt;br /&gt;
* Da es [https://groups.google.com/forum/?fromgroups=#!topic/fhem-users/y2CbOQmTVsg Eintrag in der ehemaligen FHEM-Google-Group] entnehmen.&lt;br /&gt;
* Die &#039;&#039;sunset / sunrise&#039;&#039; Einstellungen arbeiten meist erst &#039;&#039;&#039;am nächsten Tag&#039;&#039;&#039; richtig. Das hängt zusammen mit einer Falschberechnung beim setzen dieses &#039;&#039;defines&#039;&#039;. An einer Korrektur wird gearbeitet (Stand Januar 2013).&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Yfhem</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=SUNRISE_EL&amp;diff=3374</id>
		<title>SUNRISE EL</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=SUNRISE_EL&amp;diff=3374"/>
		<updated>2013-11-05T10:33:07Z</updated>

		<summary type="html">&lt;p&gt;Yfhem: /* Voraussetzungen */ Added ref to OSM.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Lichtsteuerung per sunset / sunrise&#039;&#039;&#039;&lt;br /&gt;
== Voraussetzungen ==&lt;br /&gt;
In der &#039;&#039;fhem.cfg&#039;&#039; müssen Sie vorher Ihren Wohnsitz definieren, da der Sonnenauf- und -untergang ja nicht nur vom Datum, sondern auch vom Längen- und Breitengrad Ihres Standortes abhängig ist. Hierzu tragen Sie folgende Zeilen in die &#039;&#039;fhem.cfg&#039;&#039; ein:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr global latitude 5X.XYZ&lt;br /&gt;
attr global longitude 6.XYZ&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
und zwar in genau dieser Schreibweise. Entweder benutzen Sie zur Bestimmung ein GPS-System oder sie befragen einen entsprechenden Internet-Dienst.&lt;br /&gt;
&lt;br /&gt;
Als Internet-Dienst eignet sich beipielsweise [http://www.openstreetmap.org/#map=12/52.4994/13.4960 OpenStreetMap]. Die Werte latitude und longitude können aus der URL abgelesen werden. In diesem Beispiel latitude 52.4994 und longitude 13.4960.&lt;br /&gt;
&lt;br /&gt;
== Steuerung ==&lt;br /&gt;
Mittels folgender Skriptzeilen in der &#039;&#039;fhem.cfg&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Außenlampe - Steuerung An-/Ausschaltzeit&lt;br /&gt;
define AussenlampeAn1 at *{sunset(0,&amp;quot;17:00&amp;quot;,&amp;quot;22:00&amp;quot;)} set EG.Diele.Aussenlampe on&lt;br /&gt;
define AussenlampeAus1 at *{sunrise(0,&amp;quot;05:00&amp;quot;,&amp;quot;07:30&amp;quot;)} set EG.Diele.Aussenlampe off&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
wird der Funk-Lichtschalter für die Außenbeleuchtung (hier das FHEM-Gerät mit dem Namen &#039;&#039;EG.Diele.Aussenlampe&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
* morgens zum Sonnenaufgang, aber nicht vor 05:00 und nicht nach 07:30 Uhr ausgeschaltet&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
&lt;br /&gt;
* abends zum Sonnenuntergang eingeschaltet, aber nicht vor 17:00 Uhr und nicht nach 22:00 Uhr.&lt;br /&gt;
&lt;br /&gt;
Im FHEM-Standard wird der sogenannte bürgerliche Sonnenuntergang/-aufgang genutzt. &lt;br /&gt;
&lt;br /&gt;
Bis bzw. ab dieser Zeit ist das Lesen ohne zusätzliche Beleuchtung möglich.&lt;br /&gt;
Da dies nicht immer gewünscht ist, ist es möglich bei den sunrise/sunset-Funktionen *optional* als ersten Parameter vorne REAL, CIVIL, NAUTIC, ASTRONOMIC oder z.B. HORIZON=-6.0 oder &amp;quot;HORIZON -6.0&amp;quot; anzustellen: &lt;br /&gt;
&lt;br /&gt;
  # Normales Verhalten wie im obigen Beispiel: &lt;br /&gt;
  {sunset(0,&amp;quot;17:00&amp;quot;,&amp;quot;22:00&amp;quot;)}&lt;br /&gt;
  Ergebnis (als Beispiel): 19:59:22 &lt;br /&gt;
&lt;br /&gt;
  # Gleiches Beispiel mit CIVIL als 1. Parameter:  &lt;br /&gt;
  {sunset(&amp;quot;CIVIL&amp;quot;,0,&amp;quot;17:00&amp;quot;,&amp;quot;22:00&amp;quot;)} &lt;br /&gt;
  Ergebnis (als Beispiel):   19:59:22 &lt;br /&gt;
&lt;br /&gt;
  # Gleiches Beispiel mit Eingabe der Höhe über Horizont als 1. Parameter: &lt;br /&gt;
  {sunset(&amp;quot;HORIZON=-6.0&amp;quot;,0,&amp;quot;17:00&amp;quot;,&amp;quot;22:00&amp;quot;)} &lt;br /&gt;
  Ergebnis (als Beispiel):   19:59:22 &lt;br /&gt;
&lt;br /&gt;
  # Gleiches Beispiel mit dem realen Sonnenuntergang auf 0 Grad als 1. Parameter: &lt;br /&gt;
  {sunset(&amp;quot;REAL&amp;quot;,0,&amp;quot;17:00&amp;quot;,&amp;quot;22:00&amp;quot;);;} &lt;br /&gt;
  Ergebnis (als Beispiel):   19:22:07&lt;br /&gt;
&lt;br /&gt;
== Kontrolle ==&lt;br /&gt;
Um die Zeiten zu kontrollieren können Sie in der FHEM-Befehlszeile den Befehl&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
list AussenlampeAn1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
eingeben und mit der &amp;amp;lt;Enter&amp;amp;gt;-Taste (nicht &amp;quot;save-Button&amp;quot;) bestätigen. Sie sehen dann (hier eine Ausgabe vom 17.01.2013) z.B. folgendes:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Internals:&lt;br /&gt;
  DEF    *{sunset(0,&amp;amp;quot;17:00&amp;amp;quot;,&amp;amp;quot;22:00&amp;amp;quot;)} set EG.Diele.Aussenlampe on&lt;br /&gt;
  NAME    AussenlampeAn1&lt;br /&gt;
  NR     225&lt;br /&gt;
  NTM    17:37:09&lt;br /&gt;
  REP    -1&lt;br /&gt;
  STATE   Next: 17:37:09&lt;br /&gt;
  TRIGGERTIME 1358527029&lt;br /&gt;
  TYPE    at&lt;br /&gt;
Attributes:&lt;br /&gt;
  room    Diele&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Der Sonnenuntergang liegt am genannten Tag &#039;&#039;&#039;innerhalb&#039;&#039;&#039;des Start-/Ende-Zeitraums, so dass die Lampe um 17:37 Uhr eingeschaltet wird.&lt;br /&gt;
&lt;br /&gt;
Die Ausgabe (gleiches Datum) von&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
list AussenlampeAus1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lautet:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Internals:&lt;br /&gt;
  DEF    *{sunrise(0,&amp;amp;quot;05:00&amp;amp;quot;,&amp;amp;quot;07:30&amp;amp;quot;)} set EG.Diele.Aussenlampe off&lt;br /&gt;
  NAME    AussenlampeAus1&lt;br /&gt;
  NR     228&lt;br /&gt;
  NTM    07:30:00&lt;br /&gt;
  REP    -1&lt;br /&gt;
  STATE   Next: 07:30:00&lt;br /&gt;
  TRIGGERTIME 1358490600&lt;br /&gt;
  TYPE    at&lt;br /&gt;
Attributes:&lt;br /&gt;
  room    Diele&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Hier liegt der Sonnenaufgang noch &#039;&#039;&#039;außerhalb&#039;&#039;&#039;des Start-/Ende-Zeitraums, so dass die Lampe um 07:30 Uhr ausgeschaltet wird.&lt;br /&gt;
&lt;br /&gt;
== Hinweise ==&lt;br /&gt;
* Da es [https://groups.google.com/forum/?fromgroups=#!topic/fhem-users/y2CbOQmTVsg Eintrag in der ehemaligen FHEM-Google-Group] entnehmen.&lt;br /&gt;
* Die &#039;&#039;sunset / sunrise&#039;&#039; Einstellungen arbeiten meist erst &#039;&#039;&#039;am nächsten Tag&#039;&#039;&#039; richtig. Das hängt zusammen mit einer Falschberechnung beim setzen dieses &#039;&#039;defines&#039;&#039;. An einer Korrektur wird gearbeitet (Stand Januar 2013).&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Yfhem</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=SUNRISE_EL&amp;diff=3373</id>
		<title>SUNRISE EL</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=SUNRISE_EL&amp;diff=3373"/>
		<updated>2013-11-05T10:29:02Z</updated>

		<summary type="html">&lt;p&gt;Yfhem: space added.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Lichtsteuerung per sunset / sunrise&#039;&#039;&#039;&lt;br /&gt;
== Voraussetzungen ==&lt;br /&gt;
In der &#039;&#039;fhem.cfg&#039;&#039; müssen Sie vorher Ihren Wohnsitz definieren, da der Sonnenauf- und -untergang ja nicht nur vom Datum, sondern auch vom Längen- und Breitengrad Ihres Standortes abhängig ist. Hierzu tragen Sie folgende Zeilen in die &#039;&#039;fhem.cfg&#039;&#039; ein:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr global latitude 5X.XYZ&lt;br /&gt;
attr global longitude 6.XYZ&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
und zwar in genau dieser Schreibweise. Entweder benutzen Sie zur Bestimmung ein GPS-System oder sie befragen einen entsprechenden Internet-Dienst.&lt;br /&gt;
&lt;br /&gt;
== Steuerung ==&lt;br /&gt;
Mittels folgender Skriptzeilen in der &#039;&#039;fhem.cfg&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Außenlampe - Steuerung An-/Ausschaltzeit&lt;br /&gt;
define AussenlampeAn1 at *{sunset(0,&amp;quot;17:00&amp;quot;,&amp;quot;22:00&amp;quot;)} set EG.Diele.Aussenlampe on&lt;br /&gt;
define AussenlampeAus1 at *{sunrise(0,&amp;quot;05:00&amp;quot;,&amp;quot;07:30&amp;quot;)} set EG.Diele.Aussenlampe off&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
wird der Funk-Lichtschalter für die Außenbeleuchtung (hier das FHEM-Gerät mit dem Namen &#039;&#039;EG.Diele.Aussenlampe&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
* morgens zum Sonnenaufgang, aber nicht vor 05:00 und nicht nach 07:30 Uhr ausgeschaltet&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
&lt;br /&gt;
* abends zum Sonnenuntergang eingeschaltet, aber nicht vor 17:00 Uhr und nicht nach 22:00 Uhr.&lt;br /&gt;
&lt;br /&gt;
Im FHEM-Standard wird der sogenannte bürgerliche Sonnenuntergang/-aufgang genutzt. &lt;br /&gt;
&lt;br /&gt;
Bis bzw. ab dieser Zeit ist das Lesen ohne zusätzliche Beleuchtung möglich.&lt;br /&gt;
Da dies nicht immer gewünscht ist, ist es möglich bei den sunrise/sunset-Funktionen *optional* als ersten Parameter vorne REAL, CIVIL, NAUTIC, ASTRONOMIC oder z.B. HORIZON=-6.0 oder &amp;quot;HORIZON -6.0&amp;quot; anzustellen: &lt;br /&gt;
&lt;br /&gt;
  # Normales Verhalten wie im obigen Beispiel: &lt;br /&gt;
  {sunset(0,&amp;quot;17:00&amp;quot;,&amp;quot;22:00&amp;quot;)}&lt;br /&gt;
  Ergebnis (als Beispiel): 19:59:22 &lt;br /&gt;
&lt;br /&gt;
  # Gleiches Beispiel mit CIVIL als 1. Parameter:  &lt;br /&gt;
  {sunset(&amp;quot;CIVIL&amp;quot;,0,&amp;quot;17:00&amp;quot;,&amp;quot;22:00&amp;quot;)} &lt;br /&gt;
  Ergebnis (als Beispiel):   19:59:22 &lt;br /&gt;
&lt;br /&gt;
  # Gleiches Beispiel mit Eingabe der Höhe über Horizont als 1. Parameter: &lt;br /&gt;
  {sunset(&amp;quot;HORIZON=-6.0&amp;quot;,0,&amp;quot;17:00&amp;quot;,&amp;quot;22:00&amp;quot;)} &lt;br /&gt;
  Ergebnis (als Beispiel):   19:59:22 &lt;br /&gt;
&lt;br /&gt;
  # Gleiches Beispiel mit dem realen Sonnenuntergang auf 0 Grad als 1. Parameter: &lt;br /&gt;
  {sunset(&amp;quot;REAL&amp;quot;,0,&amp;quot;17:00&amp;quot;,&amp;quot;22:00&amp;quot;);;} &lt;br /&gt;
  Ergebnis (als Beispiel):   19:22:07&lt;br /&gt;
&lt;br /&gt;
== Kontrolle ==&lt;br /&gt;
Um die Zeiten zu kontrollieren können Sie in der FHEM-Befehlszeile den Befehl&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
list AussenlampeAn1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
eingeben und mit der &amp;amp;lt;Enter&amp;amp;gt;-Taste (nicht &amp;quot;save-Button&amp;quot;) bestätigen. Sie sehen dann (hier eine Ausgabe vom 17.01.2013) z.B. folgendes:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Internals:&lt;br /&gt;
  DEF    *{sunset(0,&amp;amp;quot;17:00&amp;amp;quot;,&amp;amp;quot;22:00&amp;amp;quot;)} set EG.Diele.Aussenlampe on&lt;br /&gt;
  NAME    AussenlampeAn1&lt;br /&gt;
  NR     225&lt;br /&gt;
  NTM    17:37:09&lt;br /&gt;
  REP    -1&lt;br /&gt;
  STATE   Next: 17:37:09&lt;br /&gt;
  TRIGGERTIME 1358527029&lt;br /&gt;
  TYPE    at&lt;br /&gt;
Attributes:&lt;br /&gt;
  room    Diele&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Der Sonnenuntergang liegt am genannten Tag &#039;&#039;&#039;innerhalb&#039;&#039;&#039;des Start-/Ende-Zeitraums, so dass die Lampe um 17:37 Uhr eingeschaltet wird.&lt;br /&gt;
&lt;br /&gt;
Die Ausgabe (gleiches Datum) von&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
list AussenlampeAus1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lautet:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Internals:&lt;br /&gt;
  DEF    *{sunrise(0,&amp;amp;quot;05:00&amp;amp;quot;,&amp;amp;quot;07:30&amp;amp;quot;)} set EG.Diele.Aussenlampe off&lt;br /&gt;
  NAME    AussenlampeAus1&lt;br /&gt;
  NR     228&lt;br /&gt;
  NTM    07:30:00&lt;br /&gt;
  REP    -1&lt;br /&gt;
  STATE   Next: 07:30:00&lt;br /&gt;
  TRIGGERTIME 1358490600&lt;br /&gt;
  TYPE    at&lt;br /&gt;
Attributes:&lt;br /&gt;
  room    Diele&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Hier liegt der Sonnenaufgang noch &#039;&#039;&#039;außerhalb&#039;&#039;&#039;des Start-/Ende-Zeitraums, so dass die Lampe um 07:30 Uhr ausgeschaltet wird.&lt;br /&gt;
&lt;br /&gt;
== Hinweise ==&lt;br /&gt;
* Da es [https://groups.google.com/forum/?fromgroups=#!topic/fhem-users/y2CbOQmTVsg Eintrag in der ehemaligen FHEM-Google-Group] entnehmen.&lt;br /&gt;
* Die &#039;&#039;sunset / sunrise&#039;&#039; Einstellungen arbeiten meist erst &#039;&#039;&#039;am nächsten Tag&#039;&#039;&#039; richtig. Das hängt zusammen mit einer Falschberechnung beim setzen dieses &#039;&#039;defines&#039;&#039;. An einer Korrektur wird gearbeitet (Stand Januar 2013).&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Yfhem</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=SUNRISE_EL&amp;diff=3363</id>
		<title>SUNRISE EL</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=SUNRISE_EL&amp;diff=3363"/>
		<updated>2013-11-04T15:54:06Z</updated>

		<summary type="html">&lt;p&gt;Yfhem: /* Voraussetzungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Lichtsteuerung per sunset / sunrise&#039;&#039;&#039;&lt;br /&gt;
== Voraussetzungen ==&lt;br /&gt;
In der &#039;&#039;fhem.cfg&#039;&#039;müssen Sie vorher Ihren Wohnsitz definieren, da der Sonnenauf- und -untergang ja nicht nur vom Datum, sondern auch vom Längen- und Breitengrad Ihres Standortes abhängig ist. Hierzu tragen Sie folgende Zeilen in die &#039;&#039;fhem.cfg&#039;&#039; ein:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;attr global latitude 5X.XYZ&lt;br /&gt;
attr global longitude 6.XYZ&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
und zwar in genau dieser Schreibweise. Entweder benutzen Sie zur Bestimmung ein GPS-System oder sie befragen einen entsprechenden Internet-Dienst.&lt;br /&gt;
&lt;br /&gt;
== Steuerung ==&lt;br /&gt;
Mittels folgender Skriptzeilen in der &#039;&#039;fhem.cfg&#039;&#039;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# Außenlampe - Steuerung An-/Ausschaltzeit&lt;br /&gt;
define AussenlampeAn1 at *{sunset(0,&amp;quot;17:00&amp;quot;,&amp;quot;22:00&amp;quot;)} set EG.Diele.Aussenlampe on&lt;br /&gt;
define AussenlampeAus1 at *{sunrise(0,&amp;quot;05:00&amp;quot;,&amp;quot;07:30&amp;quot;)} set EG.Diele.Aussenlampe off&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
wird der Funk-Lichtschalter für die Außenbeleuchtung (hier das FHEM-Gerät mit dem Namen &#039;&#039;EG.Diele.Aussenlampe&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
* morgens zum Sonnenaufgang, aber nicht vor 05:00 und nicht nach 07:30 Uhr ausgeschaltet&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
&lt;br /&gt;
* abends zum Sonnenuntergang eingeschaltet, aber nicht vor 17:00 Uhr und nicht nach 22:00 Uhr.&lt;br /&gt;
&lt;br /&gt;
Im FHEM-Standard wird der sogenannte bürgerliche Sonnenuntergang/-aufgang genutzt. &lt;br /&gt;
&lt;br /&gt;
Bis bzw. ab dieser Zeit ist das Lesen ohne zusätzliche Beleuchtung möglich.&lt;br /&gt;
Da dies nicht immer gewünscht ist, ist es möglich bei den sunrise/sunset-Funktionen *optional* als ersten Parameter vorne REAL, CIVIL, NAUTIC, ASTRONOMIC oder z.B. HORIZON=-6.0 oder &amp;quot;HORIZON -6.0&amp;quot; anzustellen: &lt;br /&gt;
&lt;br /&gt;
  # Normales Verhalten wie im obigen Beispiel: &lt;br /&gt;
  {sunset(0,&amp;quot;17:00&amp;quot;,&amp;quot;22:00&amp;quot;)}&lt;br /&gt;
  Ergebnis (als Beispiel): 19:59:22 &lt;br /&gt;
&lt;br /&gt;
  # Gleiches Beispiel mit CIVIL als 1. Parameter:  &lt;br /&gt;
  {sunset(&amp;quot;CIVIL&amp;quot;,0,&amp;quot;17:00&amp;quot;,&amp;quot;22:00&amp;quot;)} &lt;br /&gt;
  Ergebnis (als Beispiel):   19:59:22 &lt;br /&gt;
&lt;br /&gt;
  # Gleiches Beispiel mit Eingabe der Höhe über Horizont als 1. Parameter: &lt;br /&gt;
  {sunset(&amp;quot;HORIZON=-6.0&amp;quot;,0,&amp;quot;17:00&amp;quot;,&amp;quot;22:00&amp;quot;)} &lt;br /&gt;
  Ergebnis (als Beispiel):   19:59:22 &lt;br /&gt;
&lt;br /&gt;
  # Gleiches Beispiel mit dem realen Sonnenuntergang auf 0 Grad als 1. Parameter: &lt;br /&gt;
  {sunset(&amp;quot;REAL&amp;quot;,0,&amp;quot;17:00&amp;quot;,&amp;quot;22:00&amp;quot;);;} &lt;br /&gt;
  Ergebnis (als Beispiel):   19:22:07&lt;br /&gt;
&lt;br /&gt;
== Kontrolle ==&lt;br /&gt;
Um die Zeiten zu kontrollieren können Sie in der FHEM-Befehlszeile den Befehl&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
list AussenlampeAn1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
eingeben und mit der &amp;amp;lt;Enter&amp;amp;gt;-Taste (nicht &amp;quot;save-Button&amp;quot;) bestätigen. Sie sehen dann (hier eine Ausgabe vom 17.01.2013) z.B. folgendes:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Internals:&lt;br /&gt;
  DEF    *{sunset(0,&amp;amp;quot;17:00&amp;amp;quot;,&amp;amp;quot;22:00&amp;amp;quot;)} set EG.Diele.Aussenlampe on&lt;br /&gt;
  NAME    AussenlampeAn1&lt;br /&gt;
  NR     225&lt;br /&gt;
  NTM    17:37:09&lt;br /&gt;
  REP    -1&lt;br /&gt;
  STATE   Next: 17:37:09&lt;br /&gt;
  TRIGGERTIME 1358527029&lt;br /&gt;
  TYPE    at&lt;br /&gt;
Attributes:&lt;br /&gt;
  room    Diele&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Der Sonnenuntergang liegt am genannten Tag &#039;&#039;&#039;innerhalb&#039;&#039;&#039;des Start-/Ende-Zeitraums, so dass die Lampe um 17:37 Uhr eingeschaltet wird.&lt;br /&gt;
&lt;br /&gt;
Die Ausgabe (gleiches Datum) von&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
list AussenlampeAus1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lautet:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Internals:&lt;br /&gt;
  DEF    *{sunrise(0,&amp;amp;quot;05:00&amp;amp;quot;,&amp;amp;quot;07:30&amp;amp;quot;)} set EG.Diele.Aussenlampe off&lt;br /&gt;
  NAME    AussenlampeAus1&lt;br /&gt;
  NR     228&lt;br /&gt;
  NTM    07:30:00&lt;br /&gt;
  REP    -1&lt;br /&gt;
  STATE   Next: 07:30:00&lt;br /&gt;
  TRIGGERTIME 1358490600&lt;br /&gt;
  TYPE    at&lt;br /&gt;
Attributes:&lt;br /&gt;
  room    Diele&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Hier liegt der Sonnenaufgang noch &#039;&#039;&#039;außerhalb&#039;&#039;&#039;des Start-/Ende-Zeitraums, so dass die Lampe um 07:30 Uhr ausgeschaltet wird.&lt;br /&gt;
&lt;br /&gt;
== Hinweise ==&lt;br /&gt;
* Da es [https://groups.google.com/forum/?fromgroups=#!topic/fhem-users/y2CbOQmTVsg Eintrag in der ehemaligen FHEM-Google-Group] entnehmen.&lt;br /&gt;
* Die &#039;&#039;sunset / sunrise&#039;&#039; Einstellungen arbeiten meist erst &#039;&#039;&#039;am nächsten Tag&#039;&#039;&#039; richtig. Das hängt zusammen mit einer Falschberechnung beim setzen dieses &#039;&#039;defines&#039;&#039;. An einer Korrektur wird gearbeitet (Stand Januar 2013).&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Yfhem</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=DevelopmentIntroduction&amp;diff=3267</id>
		<title>DevelopmentIntroduction</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=DevelopmentIntroduction&amp;diff=3267"/>
		<updated>2013-10-29T11:42:52Z</updated>

		<summary type="html">&lt;p&gt;Yfhem: /* Application Lifecycle */ Improved list.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Developer&#039;s Introduction to FHEM =&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This page is intended to give an introduction to the FHEM application from a developer&#039;s perspective. If you&#039;re interested in extending, modifying or reusing the FHEM code, then hopefully you will find this a useful document. Note that this document is a work in progress! I myself at the time of writing this have only a few hours of experience under my belt, but I&#039;m documenting things I learn as I learn them.&lt;br /&gt;
&lt;br /&gt;
== Application Lifecycle ==&lt;br /&gt;
When you first launch the FHEM server, the following activities take place:&lt;br /&gt;
&lt;br /&gt;
# Application variables are initialised&lt;br /&gt;
# The valid application commands are loaded into a structure (%cmds) with the corresponding function name to call&lt;br /&gt;
# Do the job, either act as client or server. One of the following applies:&lt;br /&gt;
## If the application has been called as a FHEM client (eg perl fhem.pl 127.0.0.1:7072 commandToExecute)&lt;br /&gt;
### Connect to the FHEM server&lt;br /&gt;
### Execute the command&lt;br /&gt;
### Exit the program&lt;br /&gt;
## Otherwise (the application has been started as a server)&lt;br /&gt;
### Execute each of the commands listed in the configuration file to initialise the server (see the CommandInclude and then the AnalyzeCommandChain methods)&lt;br /&gt;
### Execute each of the commands in the state file if configured to restore the devices to the last state recorded when the server last ran&lt;br /&gt;
### Start the main application loop&lt;br /&gt;
&lt;br /&gt;
== Main Application Loop ==&lt;br /&gt;
The following code is repeated until the application ends:&lt;br /&gt;
&lt;br /&gt;
# For each input device (eg FHZ1000 / FHZ1300 / CUL):&lt;br /&gt;
## Use that device module&#039;s Ready and Read functions to read data from the device&lt;br /&gt;
## For CUL devices, the data is read and parsed at this point&lt;br /&gt;
## For FHZ devices, the FHZ_CheckCRC method is used to validate the received data&lt;br /&gt;
## Call the Dispatch method in FHEM.pl to pass the message onto the correct device and corresponding module (Parse function)&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt; $server-&amp;amp;gt;fileno() is used to check for and accept new connections to the server&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt; For each connected client:&lt;br /&gt;
# Read data from the client using sysread&lt;br /&gt;
# Pass the received input into the AnalyzeInput method to execute the command&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
== Configuration and State Files ==&lt;br /&gt;
Note that these are just lists of commands to execute in a text file! So anything in these files will be interpreted by FHEM in the exact same way if a user keys the commands manually into a client application, eg a telnet connection.&lt;br /&gt;
&lt;br /&gt;
== Readings ==&lt;br /&gt;
The following mechanism is recommended for updating readings. It saves lines of codes and automatically makes your module honor the event-on-update-reading and event-on-change-reading attributes.&lt;br /&gt;
&lt;br /&gt;
Before you start updating readings, write (in case $hash = $defs{&amp;amp;lt;device&amp;amp;gt;})&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;readingsBeginUpdate($hash);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
For every reading you update, write&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;readingsBulkUpdate($hash,$reading,$value);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Terminate with&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;readingsEndUpdate($hash, $dotrigger);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
The $dotrigger parameter should be 0 for updates initiated by fhem message dispatcher as the dispatcher already calls DoTrigger on its behalf. $dotrigger should be 1 for updates initiated by internal timers, e.g. for polling devices.&lt;br /&gt;
&lt;br /&gt;
As a shorthand notation for updating just one reading write&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;readingsSingleUpdate($hash,$reading,$value,$dotrigger);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
which is the same as &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;readingsBeginUpdate($hash);&lt;br /&gt;
 readingsBulkUpdate($hash,$reading,$value);&lt;br /&gt;
 readingsEndUpdate($hash, $dotrigger);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
== STATE ==&lt;br /&gt;
Vorschlag zur Umsetzung, diskutiert [https://groups.google.com/forum/?hl=de&amp;amp;amp;fromgroups#!topic/fhem-developers/vqCx4M4X5l0 hier].&lt;br /&gt;
&lt;br /&gt;
In den [[DevelopmentGuidelines]], Kapselung, Standardisierung der Vorgehensweise.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Funktion &#039;&#039;&#039;readingsEndUpdate&#039;&#039;&#039;aktualisiert $hash-&amp;amp;gt;{STATE} grundsätzlich immer bei jedem Aufruf nach folgendem Algorithmus:&lt;br /&gt;
&lt;br /&gt;
Falls $sr= $attr{$name}{stateReading} gesetzt ist:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Fall 1: wenn $sr =~ &amp;quot;^{.*}$&amp;quot; dann eval &amp;quot;\$hash-&amp;amp;gt;{STATE} = $sr&amp;quot;;&lt;br /&gt;
  Fall 2: sonst $hash-&amp;amp;gt;{STATE}= $hash-&amp;amp;gt;{READINGS}{$sr}{VAL}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
sonst&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Falls es $hash-&amp;amp;gt;{READINGS}{state} gibt, $hash-&amp;amp;gt;{STATE}= $hash-&amp;amp;gt;{READINGS}{state}{VAL}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
sonst&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Tue nichts (das Modul hat sich gekuemmert).&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Ausserdem wird&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ReplaceEventMap()&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
losgelassen, um die EventMaps des Anwenders auch im STATE zur Anwendung zu bringen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aus &#039;&#039;&#039;DoTrigger&#039;&#039;&#039;werden&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;$defs{$dev}{STATE} = ReplaceEventMap($dev, $defs{$dev}{STATE}, 1);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
und&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# STATE &amp;amp;amp;&amp;amp;amp; {READINGS}{state} should be the same&lt;br /&gt;
  my $r = $defs{$dev}{READINGS};&lt;br /&gt;
  $r-&amp;amp;gt;{state}{VAL} = $defs{$dev}{STATE} if($r &amp;amp;amp;&amp;amp;amp; $r-&amp;amp;gt;{state});&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
entfernt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Global Attributes ==&lt;br /&gt;
In fhem.pl existiert ein&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;my $AttrList = &amp;quot;room comment alias ...&amp;quot;;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Weiterhin kann jedes Modul im Initialize mit addToAttrList eigene Attribute zu&lt;br /&gt;
global userattr hinzufuegen.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Development]]&lt;/div&gt;</summary>
		<author><name>Yfhem</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Neues_Charting_Frontend&amp;diff=3242</id>
		<title>Neues Charting Frontend</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Neues_Charting_Frontend&amp;diff=3242"/>
		<updated>2013-10-27T19:32:04Z</updated>

		<summary type="html">&lt;p&gt;Yfhem: Fixed typo.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Diese Anleitung beschreibt die Installation und Konfiguration des neuen ExtJS-Frontends, das u.a. eine auf Javascript basierende Chartingfunktion bietet.&lt;br /&gt;
&lt;br /&gt;
[[File:Frontend1.png|200px|right|thumb]]&lt;br /&gt;
[[File:Frontend_current.jpg|200px|right|thumb]]&lt;br /&gt;
[[File:Frontendtable.jpg|200px|right|thumb]]&lt;br /&gt;
&lt;br /&gt;
== Aktueller Funktionsumfang ==&lt;br /&gt;
&lt;br /&gt;
* Anzeige von Charts mit mehreren, frei wählbaren Y-Achsen (FHEM Geräte und Readings wählbar)&lt;br /&gt;
* Charts können dynamisch (z.B. heutiger Tag) oder über einen festen Zeitraum angezeigt werden&lt;br /&gt;
* Charts können generalisiert werden, um auch größere Datenmengen im Browser mit akzeptabler Geschwindigkeit darzustellen&lt;br /&gt;
* Charts können mit Statistikfunktionen erstellt werden, z.B. mit Durchschnittswerten für einen gewissen Zeitraum (Average per Hour, Max per day, ...)&lt;br /&gt;
* Charts können Solllinien hinzugefügt werden mit wählbarem Start- und Endwert&lt;br /&gt;
* Chartachsen können selektiv ein- und ausgeschaltet werden durch Klick auf die Legende&lt;br /&gt;
* Charts können eingefärbt werden mit Farbe nach Wahl, zudem ist eine Füllung möglich&lt;br /&gt;
* Charts können gezoomt werden mit Hilfe der Maus durch Aufziehen einer Box direkt im Chart&lt;br /&gt;
* Charts werden bei Bedarf in der Datenbank über DbLog abgespeichert und können im Frontend auch wieder gelöscht werden&lt;br /&gt;
* &amp;quot;Database Tables&amp;quot; ermöglicht die Anzeige des gesamten Datenbankinhalts in einer Tabelle im Browser, egal wie groß diese ist.&lt;br /&gt;
* Anzeige der verfügbaren Geräte über den linken Bereich. Nach Auswahl eines Gerätes erhält man die Übersicht zu den aktuellen Readings.&lt;br /&gt;
&lt;br /&gt;
Die Werte in dieser Ansicht werden automatisch alle 5 Sekunden aktualisiert. Zudem ist die Steuerung von &amp;quot;sets&amp;quot; möglich (on / off Button, Dropdown, etc.)&lt;br /&gt;
&lt;br /&gt;
* FHEM Kommandozeile, die mit Enter-Taste und dem Execute Button bedient werden kann.&lt;br /&gt;
* Save Button, der wie bisher bekannt die Änderungen in der fhem.cfg speichert.&lt;br /&gt;
* Shutdown und Restart Buttons, über die sich FHEM herunterfahren oder neustarten lässt. Bei einem Restart wird die Seite, sobald FHEM wieder hochgefahren ist, automatisch neugeladen&lt;br /&gt;
&lt;br /&gt;
Zwingende Voraussetzung für die Nutzung des Frontends ist eine Datenbank und das Einbinden des Moduls 93_DbLog, da u.a. für das Charting auf die geloggten Daten zugegriffen wird.&lt;br /&gt;
Daher ist eine Installation nur auf Systemen möglich, die die entsprechenden Perl Module mitbringen, bzw. nachinstallieren lassen.&lt;br /&gt;
&lt;br /&gt;
Nach derzeitigem Stand ist die Installation inzwischen sogar neben PCs, Synologys und Raspberrys auch auf Fritzboxen möglich. Dazu bitte auch die Anleitung [[Cpan auf Fritzbox]] beachten.&lt;br /&gt;
&amp;lt;!-- Danke der Hilfe von Jurij ist jetzt auch die Installation von DbLog auf einer Fritzbox mit mips-Archtiketur möglich (z.B. 7390, 7330, ..)&lt;br /&gt;
Eine Anleitung findet sich hier: [http://www.fhemwiki.de/wiki/Cpan_auf_Fritzbox http://www.fhemwiki.de/wiki/Cpan_auf_Fritzbox] &lt;br /&gt;
.... --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
=== Basisinstallation ===&lt;br /&gt;
&lt;br /&gt;
#FHEM auf den neuesten Stand bringen mit dem Befehl &amp;quot;update&amp;quot;.&lt;br /&gt;
#In FHEM oder über telnet den folgenden Befehl aufrufen und ein paar Minuten warten:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;update thirdparty http://svn.code.sf.net/p/fhem/code/trunk/fhem/www/frontend frontend&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== DbLog installieren und konfigurieren ===&lt;br /&gt;
[http://fhem.de/commandref_DE.html#DbLog DbLog] muss, falls noch nicht geschehen, konfiguriert werden. Dazu wie folgt vorgehen:&lt;br /&gt;
&lt;br /&gt;
* Eine Datenbank sollte installiert sein. MySQL, Postgres, SQLite oder Oracle.&lt;br /&gt;
* Unter Umständen müssen fehlende Perl Module nachinstalliert werden.&lt;br /&gt;
&lt;br /&gt;
Ob dies nötig ist fällt spätestens auf, wenn im übernächsten Schritt die fhem.cfg angepasst und fhem neu gestartet wurde.&lt;br /&gt;
Dann sollten sich bei Problemen im Log von fhem entsprechnde Hinweise finden.&lt;br /&gt;
Unter Linux installiert man die Module z.B. für SQLite mit &amp;lt;code&amp;gt;apt-get install libdbi-perl libdbd-sqlite3-perl&amp;lt;/code&amp;gt;. Alternativ auch direkt über Perl möglich mit cpan ([http://fhem.de/commandref_DE.html#DbLog DbLog commandref]). Auf einer Synology kann der folgende Beitrag helfen: [http://forum.fhem.de/index.php/topic,11071.0.html DBLog auf Synology]&lt;br /&gt;
&lt;br /&gt;
* Die Datenbank muss nun vorbereitet werden, sprich es müssen zumindest 2 Tabellen erstellt werden.&lt;br /&gt;
&lt;br /&gt;
Beispielscripte findet man z.B. bei [http://fhem.svn.sourceforge.net/viewvc/fhem/trunk/fhem/contrib/dblog/ sourceforge].&lt;br /&gt;
Es muss also eine Tabelle &#039;&#039;&#039;history&#039;&#039;&#039; und eine Tabelle &#039;&#039;&#039;current&#039;&#039;&#039; erstellt werden, wie in den Beispiel SQLs zu sehen ist. &lt;br /&gt;
Anschließend muss die Datei db.conf angepasst werden.&lt;br /&gt;
Dort müssen der Datenbankname, der Benutzer und das Passwort für die Datenbank eingetragen werden. Beispiele dazu findet man auch in dem vorigen Link.&lt;br /&gt;
&lt;br /&gt;
* In die fhem.cfg muss eine Zeile eingefügt werden, die definiert, was alles über DbLog gespeichert werden soll.&lt;br /&gt;
&lt;br /&gt;
Diese Zeile kann z.B. so aussehen (loggt alles in die Datenbank):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define myDbLog DbLog /etc/fhem/db.conf .*:.*&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
oder, für ein konkretes Gerät (Groß/Kleinschreibung beachten!):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define logdb DbLog db.conf ESA2000_LED_011e&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* FHEM neu starten und ins FHEM-Log schauen. FHEM sollte hochfahren und auch loggen, dass es zur Datenbank verbunden ist.&lt;br /&gt;
&lt;br /&gt;
Tut es das nicht oder FHEM startet gar nicht, liegt eine Fehlkonfiguration vor. Dann nochmals die vorherigen Schritte prüfen und das Logfile nach dem Problem befragen.&lt;br /&gt;
&lt;br /&gt;
=== Datenbank vorbereiten ===&lt;br /&gt;
Zuletzt muss in der Datenbank eine Tabelle für das Frontend erstellt werden. &lt;br /&gt;
&lt;br /&gt;
Für MySQL kann folgendes SQL in der Datenbank abgesetzt werden: &lt;br /&gt;
:&amp;lt;code&amp;gt;CREATE TABLE frontend (ID int NOT NULL UNIQUE AUTO_INCREMENT, TIMESTAMP TIMESTAMP DEFAULT CURRENT_TIMESTAMP, TYPE varchar(64), NAME varchar(64), VALUE TEXT)&amp;lt;/code&amp;gt;&lt;br /&gt;
Für SQLite3 kann folgendes SQL in der Datenbank abgesetzt werden: &lt;br /&gt;
:&amp;lt;code&amp;gt;CREATE TABLE frontend (ID INTEGER PRIMARY KEY, TIMESTAMP TIMESTAMP DEFAULT CURRENT_TIMESTAMP, TYPE TEXT, NAME TEXT, VALUE TEXT);&amp;lt;/code&amp;gt;&lt;br /&gt;
Für Postgres kann folgendes SQL in der Datenbank abgesetzt werden: &lt;br /&gt;
:&amp;lt;code&amp;gt;CREATE TABLE frontend (ID SERIAL, TIMESTAMP TIMESTAMP (0) DEFAULT LOCALTIMESTAMP, TYPE TEXT, NAME TEXT, VALUE TEXT);&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sollte DbLog nun laufen, kann das Frontend über &amp;lt;code&amp;gt;Adresse_des_Servers:8083/fhem/frontend/index.html&amp;lt;/code&amp;gt; aufgerufen werden, z.B.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;http://192.168.0.100:8083/fhem/frontend/index.html&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Sollte DbLog noch nicht entsprechend konfiguriert sein, so bekommt man hier entsprechendes Feedback.&lt;br /&gt;
Ansonsten ist das Frontend nun einsatzbereit. Für eine Bedienungsanleitung siehe im unteren Abschnitt &amp;quot;Bedienung&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Das Frontend Updaten ==&lt;br /&gt;
In FHEM oder über telnet den folgenden Befehl aufrufen und ein paar Minuten warten:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;update thirdparty http://svn.code.sf.net/p/fhem/code/trunk/fhem/www/frontend frontend&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bedienung ==&lt;br /&gt;
Ziel des Frontends ist eine möglichst selbsterklärende Bedienung. Fragen und Probleme können jederzeit im Forum, am besten in [http://forum.fhem.de/index.php/topic,10439.0.html diesem Beitrag] gestellt werden. Eine Anleitung folgt, sobald ich mehr Zeit dazu finde...&lt;br /&gt;
&lt;br /&gt;
== Installation auf einem Raspberry Pi (Anleitung von &amp;quot;Puschel&amp;quot;) ==&lt;br /&gt;
Diese Anleitung funktioniert auch auf einem BeagleBone Black mit Debian.&lt;br /&gt;
&lt;br /&gt;
===Hardwarevoraussetzungen===&lt;br /&gt;
* RasPi Model B&lt;br /&gt;
* Funktionierende Internetanbindung&lt;br /&gt;
===Softwarevoraussetzungen===&lt;br /&gt;
* Deutsches Tastaturlayout (j für Ja)&lt;br /&gt;
* Funktionsfähige FHEM-Installation auf RPi Wheezy, welche mittels update auf den letzten Stand gebracht wurde (siehe auch: [[:Kategorie:Raspberry_Pi|Raspberry Pi]])&lt;br /&gt;
* Das Frontend wurde installiert mittels&lt;br /&gt;
:&amp;lt;code&amp;gt;update thirdparty &amp;lt;nowiki&amp;gt;http://svn.code.sf.net/p/fhem/code/trunk/fhem/www/frontend&amp;lt;/nowiki&amp;gt; frontend&amp;lt;/code&amp;gt;&lt;br /&gt;
* Zugriff auf den RPi mittels Putty ist gegeben.&lt;br /&gt;
* Zugriffsberechtigungen der Ordner sind auch gegeben (Schreiben in /opt/fhem)&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;amp;lt;Befehl&amp;amp;gt;&amp;lt;/code&amp;gt; = diese Zeile wird am Putty-Prompt eingegeben (ohne &amp;amp;lt;&amp;amp;gt;)&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;amp;lt;IP_des_RPi&amp;amp;gt;&amp;lt;/code&amp;gt; = IP-Adresse über der der RPi erreichbar ist&lt;br /&gt;
&lt;br /&gt;
Was wird gemacht?&lt;br /&gt;
&lt;br /&gt;
Wir werden das neue Chart-Frontend mittels SQLite3 und allen benötigten Bibliotheken auf dem RPi einrichten.&lt;br /&gt;
&lt;br /&gt;
# Wir verbinden uns per Putty mit unserem RPi und loggen uns ein. &lt;br /&gt;
# Um uns das ständige sudo zu ersparen geben wir als erstes ein &amp;amp;lt;sudo bash&amp;amp;gt; ein.&lt;br /&gt;
# &amp;amp;lt;apt-get update&amp;amp;gt;&lt;br /&gt;
# &amp;amp;lt;apt-get upgrade&amp;amp;gt; und die Nachfrage mit „j“ beantworten&lt;br /&gt;
# &amp;amp;lt;apt-get install sqlite3&amp;amp;gt;&lt;br /&gt;
# &amp;amp;lt;apt-get install libdbi-perl libdbd-sqlite3-perl&amp;amp;gt;&lt;br /&gt;
# &amp;amp;lt;apt-get install –f&amp;amp;gt; (das &amp;quot;-&amp;quot; hier ggf. in der Putty-Sitzung überschreiben; unter Umständen stimmt der Hex-Code des Zeichens nach Copy/Paste nicht)&lt;br /&gt;
&lt;br /&gt;
Was haben wir bis hierher gemacht?&lt;br /&gt;
&lt;br /&gt;
* Wir haben die Pakete für unser RPi neu eingelesen.&lt;br /&gt;
* Wir haben unsere RPi-Paketinstallation auf den neuesten Stand gebracht.&lt;br /&gt;
* Wir haben sqlite3 installiert.&lt;br /&gt;
* Wir haben die benötigten Bibliotheken installiert.&lt;br /&gt;
* Wir haben alle Abhängigkeiten aufgelöst und fehlende Pakete nachinstallieren lassen.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun bereiten wir unsere Datenbank vor.&lt;br /&gt;
&lt;br /&gt;
In Putty geben wir als erstes ein &amp;amp;lt;cd /opt/fhem&amp;amp;gt; ein.&lt;br /&gt;
&lt;br /&gt;
Nun werden alle Dateien in diesem Ordner erstellt – wer will kann das natürlich anpassen.&lt;br /&gt;
&lt;br /&gt;
Anschliessend geben wir am Putty-Promt &amp;amp;lt;sqlite3 fhem.db&amp;amp;gt; ein.&lt;br /&gt;
&lt;br /&gt;
Damit haben wir unsere Datenbank angelegt und diese fhem.db genannt. Nun zeigt unser Prompt in Putty sqlite3&amp;amp;gt; an. Wir befinden uns also in unserer Datenbank.&lt;br /&gt;
&lt;br /&gt;
In dieser Datenbank werden wir noch 2 TABLES anlegen – einmal current und einmal history. Dies könnt ihr einfach per copy&amp;amp;amp;paste übernehmen.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;CREATE TABLE `history` (TIMESTAMP TIMESTAMP, DEVICE varchar(32), TYPE varchar(32), EVENT varchar(512), READING varchar(32), VALUE varchar(32), UNIT varchar(32));&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;CREATE TABLE `current` (TIMESTAMP TIMESTAMP, DEVICE varchar(32), TYPE varchar(32), EVENT varchar(512), READING varchar(32), VALUE varchar(32), UNIT varchar(32));&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und noch eine für das Frontend:&lt;br /&gt;
:&amp;lt;code&amp;gt;CREATE TABLE frontend (ID INTEGER PRIMARY KEY, TIMESTAMP TIMESTAMP DEFAULT CURRENT_TIMESTAMP, TYPE TEXT, NAME TEXT, VALUE TEXT);&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun können wir&lt;br /&gt;
* mit &amp;lt;code&amp;gt;&amp;amp;lt;.tables&amp;amp;gt;&amp;lt;/code&amp;gt; schauen, ob 3 Einträge auftauchen (current, history, frontend)&lt;br /&gt;
* mit &amp;lt;code&amp;gt;&amp;amp;lt;.exit&amp;amp;gt;&amp;lt;/code&amp;gt; verlassen wir SQLite3 und kehren wieder auf unseren Putty-Prompt zurück.&lt;br /&gt;
&lt;br /&gt;
Bevor wir nun in fhem DBLog definieren, müssen wir erst unsere db.conf anlegen. Dies geschieht mittels &amp;lt;code&amp;gt;&amp;amp;lt;nano db.conf&amp;amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Gefüllt wird diese Konfigurationsdatei mit&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;amp;#160;%dbconfig= (&lt;br /&gt;
 connection =&amp;amp;gt; &amp;quot;SQLite:dbname=/opt/fhem/fhem.db&amp;quot;,&lt;br /&gt;
 user =&amp;amp;gt; &amp;quot;&amp;quot;,&lt;br /&gt;
 password =&amp;amp;gt; &amp;quot;&amp;quot;&lt;br /&gt;
 );&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Mit STRG+X und „j“ abspeichern und nano wieder verlassen.&lt;br /&gt;
&lt;br /&gt;
Im Ordner /opt/fhem sollten nun also zusätzlich die Dateien db.conf und fhem.db liegen.&lt;br /&gt;
&lt;br /&gt;
Ist das der Fall und die fhem.db hat die benötigten Rechte, können wir in fhem unser DBLog definieren. Ich habe der Einfachheit halber der Gruppe und jedem Benutzer Schreibzugriff gewährt.&lt;br /&gt;
&lt;br /&gt;
Dies geschieht mittels&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;chmod -R g+w fhem.db&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;chmod -R o+w fhem.db&amp;amp;gt;&lt;br /&gt;
in der Putty-Eingabe, da fhem gemeckert hat, dass es nicht in die Datei schreiben kann (&amp;quot;-&amp;quot; ggf wieder überschreiben nach Copy/Paste).&lt;br /&gt;
&lt;br /&gt;
Nun also noch unser&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;define myDbLog DbLog /opt/fhem/db.conf .*:.*&amp;lt;/code&amp;gt;&lt;br /&gt;
in fhem eingetragen und ab hier wird nun ALLES in die Datenbank geschrieben.&lt;br /&gt;
&lt;br /&gt;
Nun können wir in unserem Browser (getestet mit Firefox 19.0.2) auf unser Frontend zugreifen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;http://&amp;amp;lt;IP-des_RPi&amp;amp;gt;:8083/fhem/frontend/index.html&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Achtung! Nicht erschrecken, wenn beim ersten Zugriff nur eine leere Seite erscheint. Einfach den Browser aktualisieren und am neuen Frontend erfreuen.&lt;br /&gt;
&lt;br /&gt;
Getestet: 26.03.2013&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
* [http://forum.fhem.de/index.php/topic,10439.0.html Forumsdiskussion über dieses Frontend]; bei Problemen, Fragen oder Wünschen am besten dort eine Frage oder Nachricht hinterlassen.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Glossary]]&lt;br /&gt;
[[Kategorie:FHEM Frontends]]&lt;/div&gt;</summary>
		<author><name>Yfhem</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Junkers_Therme_Stetigregelung&amp;diff=3222</id>
		<title>Junkers Therme Stetigregelung</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Junkers_Therme_Stetigregelung&amp;diff=3222"/>
		<updated>2013-10-23T20:09:12Z</updated>

		<summary type="html">&lt;p&gt;Yfhem: /* Ansteuerung einer Junkerstherme mit einer Steuerspannung von 3-22V (0-32V möglich) */ Improved understanding, fixed typo.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Examples]]&lt;br /&gt;
&lt;br /&gt;
=Ansteuerung einer Junkerstherme mit einer Steuerspannung von 3-22V (0-32V möglich)=&lt;br /&gt;
&lt;br /&gt;
Viele Heizungsthermen haben eine Regelung über einen Kontakt an dem eine feste Spannung anliegt oder eben nicht anliegt. Also als Beispiel: 0V Heizung aus – 12V Heizung an, es gibt keine weiteren Zwischenstufen. Für diese Thermen ist diese Anleitung unzweckmäßig.&lt;br /&gt;
Bei einigen Junkersthermen ist dies jedoch anders 3V =&amp;gt; 0% bis 22V =&amp;gt; 100%. Es sind beliebige Zwischenwerte möglich. Ob man eine solche Heizung hat, kann man einfach feststellen in dem man die Steuerspannung bei angeschlossenem Regler misst. Junkers nennt diese Regler auch Raumtemperaturregler mit Stetigausgang.&lt;br /&gt;
Beobachtung (kein Wissen): Über diese Steuerspannung wird der Brenner in Abhängigkeit der Rücklauf gesteuert. Umso niedriger die Steuerspannung desto später (tiefere Rücklauftemperatur) beginnt die Therme zu heißen. Bei der vorhandenen Junkertherme kann die Vorlauftemperatur nicht über die Steuerspannung eingestellt werden. &lt;br /&gt;
&lt;br /&gt;
==Ziel dieses Projektes==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Keine Veränderung der Therme (Sicherheits-, Versicherungs- ,Garantie-Gründe)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Sicher: Für den Fall eines Defekts der automatischen Steuerung soll der alte Regler soll erhalten&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Erzeugen einer Spannung von 3-22Volt (Simulation des bisherigen Raumtemperaturreglers)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Messung der Vorlauf und Rücklauftemperatur&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Günstig&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Geringe Energieaufnahme&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Ansteuerung mittels Netzwerk&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Integration in FHEM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Umsetzung==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Pollin AVR-NET-IO-Board&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Software: Ethersex&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;kleine Zusatzplatine für die Spannungserzeugung (wird einfach parallel zu dem bestehenden Regler angeschlossen)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Messung der Vorlauf und Rücklauftemperatur mittels OneWire&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Vorbereitung 1==&lt;br /&gt;
[[File:Junkers_Therme_Stetigregelung_analoge_Anzeige.JPG|120px|right|thumb|Steuersignal]]&lt;br /&gt;
Da die Heizungsregelung eine sehr sensible Sache ist besonders bezüglich Frostschäden (beim Ausfall der automatischen Steuerung) und persönlicher Befindlichkeiten musste eine einfache und extrem ausfallsichere Kontrolleinheit her. Hierfür wird einfaches Drehspulmessinstrument verwendet. Anzeigewerte: 0V=Fehler, 3V=Heizung aus, 22V=Therme 100%.&lt;br /&gt;
Der alte Raumtemperaturregler ist weiterhin aktiv, momentan ist er auf 12°C Solltemperatur gestellt. Das bedeutet:&lt;br /&gt;
&amp;lt;ol&amp;gt; &lt;br /&gt;
  &amp;lt;li&amp;gt;Wenn die automatische Reglung ausfällt, aktiviert der alte Raumtemperaturregler die Heizung bevor Frostschäden entstehen können.&amp;lt;/li&amp;gt; &lt;br /&gt;
  &amp;lt;li&amp;gt;Wenn die automatische Reglung ausfällt, kann die Therme einfach durch einstellen einer neuen Solltemperatur aktiviert werden.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
Beide Fälle sind auf Grund von Ausfällen eines anderen FHEM-Systems im ersten Winter aufgetreten.&lt;br /&gt;
&lt;br /&gt;
==Vorbereitung 2==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[File:Junkers Therme Stetigregelung Signalverteiler.JPG|80px|right|thumb|Steuersignal]]&lt;br /&gt;
Die Leitung zu dem bisherigen Regler muss gesplittet werden. Hierfür die Heizung ausschalten (Sicherung auslösen) die Leitung auftrennen und einen Abzweig für die neue Regelung einfügen. Das Ganze kann mit einer Schmelzsicherung (für die 24V VCC Leitung) und einem 3poligem-Schalter (vollständiges Wegschalten der automatischen Regelung) versehen werden.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Vorbereitung 3==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Netzwerk zu der Therme oder das Steuersignal zum Netzwerk ziehen. Das AVR-NET-IO-Board kann irgendwo in die Steuersignal-Leitung eingesetzt werden. Theoretisch kann auch die 24V Spannungsversorgung für den ursprünglichen Raumtemperaturregler  verwendet werden. Hier muss einfach ein DC/DC-Wandler eingesetzt werden. (Bitte Leistungsabgabe der Heizung und Leistungsaufnahme des AVR-NET-IO-Board  überprüfen)&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Digital-to-Analog-Converter==&lt;br /&gt;
&lt;br /&gt;
Die Schaltung besteht aus einem DAC (LTC1257) und einem Operationsverstärker (LM358). Der LTC1257 wandelt (bei interner Referenzspannung) einen digital übermittelten Wert (über die Eingänge CLK, DIN und LOAD) in eine Spannung von 0-2,048V. Diese Spannung wird anschließend von dem LM358 erhöht. Die Elemente R1,R2, C1 und C2 gehören zur Grundbeschaltung des LTC1257. Mittels der Widerstände R3 und R4 wird der Verstärkungsfaktor der Operationsverstärkerschaltung eingestellt. Der OP ist als nicht invertierender Verstärker ausgeführt. Mit zwei Widerständen könnte aus dem LM358 eine doppelte invertierende Verstärkerschaltung (in Reihe geschaltete) aufgebaut werden. Das würde die Genauigkeit erhöhen. Die Schaltung funktioniert jedoch einwandfrei und eine höhere Genauigkeit wird vermutlich nur selten einen Vorteil bieten.&lt;br /&gt;
In diesem Fall ist hat VCC_Therme eine Spannung von 24V. Der LM358 kann bis 32V arbeiten, dann muss jedoch der Widerstandswert von R4 erhöht werden. An dem Steuersignal_Therme liegt je nach dem welchen Wert der LTC1257 gerade in einen anlogen Wert umsetzt eine Spannung von 0-24V. Diese Schaltung kann eingesetzt werden um Junkers-Thermen mit „Stetigeingang“ anzusteuern. &lt;br /&gt;
&lt;br /&gt;
[[File:Junkers_Therme_Stetigregelung_0MP.png|center|alt=Variante 1 - keine Messpunkte]]&lt;br /&gt;
&lt;br /&gt;
Variant 2: Die Ausgangsspannung der Schaltung kann zwischen dem Widerstand R3 und R4 von einem ADC gemessen werden. Da an R4 über 90% der Spannung abfällt, kann die Messung problemlos mittels eines 5V ADCs erfolgen.&lt;br /&gt;
&lt;br /&gt;
[[File:Junkers_Therme_Stetigregelung_1MP.jpg|center|alt=Variante 2 - ein Messpunkt]]&lt;br /&gt;
&lt;br /&gt;
In der Varianten 3 ist eine Sicherheitsfunktion eingebaut, welche durchaus sinnvoll ist. Die Diode D1 verhindert, dass diese Schaltung die Spannung unter einem Wert des alten externen Reglers zieht. Diese Schaltung ist so dimensioniert, dass bei Verwendung eines Junkers TRQ 21 Raumtemperaturreglers, die Therme von dieser Ansteuerung oder von dem TRQ 21 eingeschaltet werden kann. Wenn die Diode entfällt, kann diese Steuerung die Spannung von 0V ziehen und die Therme ausschalten. Im Fehlerfall und starkem Frost kann das unschön sein. Da an der Diode eine Spannung abfällt ist die Messung von Messpunkt 1 immer um diesen Wert geringer als an Messpunkt 2. Das ist aber kein Problem. &lt;br /&gt;
&lt;br /&gt;
[[File:Junkers_Therme_Stetigregelung_2MP.png|center|alt=Variante 2 - ein Messpunkt]]&lt;br /&gt;
&lt;br /&gt;
==Prototyp der Schaltung==&lt;br /&gt;
&lt;br /&gt;
Der Aufbau des Prototypen erfolgte auf einer Punkt-Streifenrasterplatine (Immer drei Punkte einer Reihe sind miteinander verbunden (s. blaue Markierungen)). Um die Schaltung nachzubauen sind keine besonderen Lötkenntnisse  erforderlich. Da nur wenige Brücken eingelötet werden müssen, lohnt sich eine fertige Platine nicht. Die Widerstände R4 und R6 sind jeweils als zwei Widerstände ausgeführt.&lt;br /&gt;
&lt;br /&gt;
[[File:Junkers_Therme_Stetigregelung_Prototyp.jpg|center|alt=Variante 2 - ein Messpunkt]]&lt;br /&gt;
&lt;br /&gt;
==Pinzuordnung==&lt;br /&gt;
&lt;br /&gt;
Die Verbindung zu dem AVR-NET-IO-Board erfolgt über die Pins der SUB-D Anschlussplatine (Kx):&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CLK -&amp;gt; K12 -&amp;gt; PA2&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;DIN -&amp;gt; K11 -&amp;gt; PA1&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;LOAD -&amp;gt; K9 -&amp;gt; PC7&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Messpunkt1 -&amp;gt; K10 -&amp;gt; PA0&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Messpunkt2 -&amp;gt; K13 -&amp;gt; PA3&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Onewire -&amp;gt; KK3 -&amp;gt; PC1&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ethersex==&lt;br /&gt;
&lt;br /&gt;
Die Firmware der AVR-NET-IO-Boards wird durch eine erweiterte Firmware ausgetauscht.&lt;br /&gt;
&lt;br /&gt;
Der Vorgang ist hier beschrieben: [[AVR-NET-IO#Konfiguration_und_Flashen_von_ethersex]]&lt;br /&gt;
&lt;br /&gt;
===Ethersex-Bauen===&lt;br /&gt;
Als Buildumgebung kann freetz-linux 1.1.1 verwendet werden. freetz-linux läuft sehr gut als Virtuelle Maschine in Virtual Box (unter Windows). Der AVR-ISP-Programmer lässt sich in die VM durchreichen. Eine Programmierung des ATMega kann so aus der VM erfolgen. Bei einem Test mit einer neueren freetz-linux Version schlug der Build-Vorgang fehl. In der Datei pinning/hardware/netio.m4 sind die PIN-Zuordnungen. Mittels „make menuconfig“ kann alles Mögliche eingestellt werden und mittels „make“ wird Ethersex für das AVR-NET-IO-Board erstellt.&lt;br /&gt;
&lt;br /&gt;
===Ethersex-Flashen===&lt;br /&gt;
Die Datei ethersex.hex aus dem tar Archive auf den Atmega 644 flashen. Hierfür eignet sich der AVRISP aus Hongkong von eBay (unter 4€ incl. Porto). Nicht vergessen die Fuses zu setzten.&lt;br /&gt;
&lt;br /&gt;
==Teileliste==&lt;br /&gt;
Preise sind grob gerundet&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;eBay&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;ul&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;AVRISP-Programmer um Ethersex auf den AVR zu flashen 4€ (wenn nicht schon vorhanden)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Pollin&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;ul&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;AVR-NET-IO - Fertigmodul 28€ (als Bausatz 8€ günstiger)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;ATmega644-20PU 7€ (optional)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;2x Temperatur-Sensor DS18S20 5€&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;5V-Netzteil EcoFriendly 5€ (ein einfaches USB-Ladegerät reicht)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Bausatz SUB-D Anschlussplatine 4€&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Versandkosten 5€&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Reichelt&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;ul&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;LTC 1257 CN8 7€&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Platine+Kleinteile &amp;lt; 10€&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Versandkosten 6€&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zusammen ca. 55-85€&lt;br /&gt;
&lt;br /&gt;
==Erste Inbetriebnahme==&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Versuchen das AVR-NET-IO-Board per Ping zu erreichen. &amp;lt;br&amp;gt;(Die Datei aus dem tar-Archive sollte in dem Netz 192.168.178.0/24 sein) &lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Versuchen auf die Konsole des AVR-NET-IO-Board zuzugreifen Port: 2701 (Mit Putty, TerraTerm, netcat, ...)&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Verfügbare Befehle ansehen:&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: help&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    OneWire Geräte auf Konsole scannen: 1w list&amp;lt;br&amp;gt;&lt;br /&gt;
    Es sollten zwei Geräte (Vorlauftemperatur, Rücklauftemperatur) gefunden werden.&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: 1w list&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: 1069ad4d020800d8&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: 10884e5b0208002d&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: OK&amp;lt;br&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Temperatur einlesen:&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: 1w get 1069ad4d020800d8&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: 26.4&amp;lt;br&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Steuersignal der Heizung abfragen&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: adc get 0&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: 04D&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: adc get 3&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: 04F&amp;lt;br&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Steuersignal auf Maximum stellen&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: ltc1257_set 2000&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: OK&amp;lt;br&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Steuersignal der Heizung erneut abfragen&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: adc get 0&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: 0BF&amp;lt;br&amp;gt;&lt;br /&gt;
    Befehl: adc get 3&amp;lt;br&amp;gt;&lt;br /&gt;
    Ausgabe: 0C9&amp;lt;br&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ermittlung der Betriebspunkte==&lt;br /&gt;
&lt;br /&gt;
Wichtig sind vier Werte:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Messwert (ADC) für den Betriebspunkt Therme 0%&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Messwert (ADC) für den Betriebspunkt Therme 100%&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Stellwert (DAC) für den Betriebspunkt Therme 0%&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Stellwert (DAC) für den Betriebspunkt Therme 100%&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Ermitteln der Messwerte===&lt;br /&gt;
Vorbereitung den Operationsverstärker (LM358) aus der Schaltung entfernen.&lt;br /&gt;
Minimalwert: Messwert wenn der Raumtemperaturregler die Therme ausschaltet. Hierfür den Raumtemperaturregler auf minimale Temperatur einstellen. Die Steuersignalspannung sollte ca. 3V betragen. Mittels „adc get“ den Wert ermitteln und ausschreiben.&lt;br /&gt;
Maximalwert: Messwert wenn der Raumtemperaturregler die Therme auf 100%. Hierfür den Raumtemperaturregler auf maximale Temperatur einstellen. Die Steuersignalspannung sollte ca. 18-22V betragen. Mittels „adc get“ den Wert ermitteln und ausschreiben.&lt;br /&gt;
&lt;br /&gt;
===Ermitteln der Stellwerte===&lt;br /&gt;
Vorbereitung den Operationsverstärker (LM358) wieder in die Schaltung einsetzen. Und den Raumtemperaturregler auf minimale Raumtemperatur einstellen.&lt;br /&gt;
Jetzt werden die Stellwerte ermittelt. Der Sollwert des LTC1257 langsam erhöht und der aktuelle Wert mittels des ADC gemessen.  Hierfür werden abwechselnd die Befehle: „ltc1257_set SOLLWERT“ und „adc get“ verwendet. Beide Werte auschreiben.&lt;br /&gt;
&lt;br /&gt;
==Integration in FHEM==&lt;br /&gt;
&lt;br /&gt;
In FHEM muss das Setzen der Sollwerte und die Erfassung der aktuellen Sollwerte/Istwerte integriert werden. Wenn der alt Raumtemperaturregler entfällt kann zweites auch entfallen.&lt;br /&gt;
&lt;br /&gt;
===Setzen der Sollwerte===&lt;br /&gt;
&lt;br /&gt;
Der LTC1257 bekommt den Sollwert mittels des Befehls ltc1257_set SOLLWERT (0 &amp;lt;= SOLLWERT &amp;gt;= 2048) zugewiesen. Hierfür wird eine classdef Datei erstellt, z.B.:  &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
# Umsetzung in ECMD Befehle&lt;br /&gt;
# Ein Uebergabeparameter -&amp;gt; Sollwert&lt;br /&gt;
set setDacValue params dacValue&lt;br /&gt;
set setDacValue cmd {&amp;quot;ltc1257_set %dacValue&amp;quot;}&lt;br /&gt;
# Keine Uebergabeparameter&lt;br /&gt;
set init cmd {&amp;quot;ltc1257_init&amp;quot;}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach kann der LTC1257 als ECMD Device in FHEM (fhem.cfg) angelegt werden. Hierfür wird eine möglicherweise bestehende „NETIO classdefs“ erweitert:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
attr NETIO_01 classdefs [Andere ECMD Geräte]:LTC1257=/opt/fhem/ltc1257.classdef&lt;br /&gt;
&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Anschließend den DAC(/LTC1257) als ECMDDevice definieren&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
define MEINDAC ECMDDevice LTC1257&lt;br /&gt;
attr MEINDAC room MEINRAUM&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Befehl zum Setzen eines neuen Spannungswertes lautet:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
my $dacValue = 1345;;\&lt;br /&gt;
fhem(&amp;quot;set MEINDAC setDacValue &amp;quot;.$dacValue);;\&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Ermitteln der Istwerte===&lt;br /&gt;
&lt;br /&gt;
Der ADC ermittelt den aktuellen Sollwert über einen Spannungsteiler. Dieser Wert wird in einen Prozentwert (0-100) umgerechnet. Hierfür wird eine classdef Datei (adc.classdef)erstellt, z.B.:  &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
# Umsetzung in ECMD Befehle&lt;br /&gt;
# Ein Uebergabeparameter -&amp;gt; Sollwert&lt;br /&gt;
set setDacValue params dacValue&lt;br /&gt;
set setDacValue cmd {&amp;quot;ltc1257_set %dacValue&amp;quot;}&lt;br /&gt;
set setDacValue postproc {\&lt;br /&gt;
	Log 3, &amp;quot;Setze Wert&amp;quot;;;\&lt;br /&gt;
}&lt;br /&gt;
# Keine Uebergabeparameter&lt;br /&gt;
set init cmd {&amp;quot;ltc1257_init&amp;quot;}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach kann der ADC als ECMD Device in FHEM (fhem.cfg) angelegt werden. Hierfür wird eine möglicherweise bestehende „NETIO classdefs“ erweitert:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
attr NETIO_01 classdefs [Andere ECMD Geräte]:LTC1257=/opt/fhem/adc.classdef&lt;br /&gt;
&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Anschließend den ADC als ECMDDevice definieren&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
define MEINADC ECMDDevice LTC1257&lt;br /&gt;
attr MEINADC room MEINRAUM&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Möglichkeiten==&lt;br /&gt;
&lt;br /&gt;
Ein Bild sagt mehr als tausend Worte&lt;br /&gt;
[[File:ScreenshotFHEMTherme.png|center|thumb|alt=Screenshot FHEM Therme]]&lt;br /&gt;
&lt;br /&gt;
==Kritische Nachbetrachtung==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Anschluss der Zusatzplatine nicht über die SUB-D Anschlussplatine sondern über den 10poligen Pfostenstecker. Das würde viel sauberer/professioneller aussehen und ist bei dem verwendeten Platinentyp sehr einfach zu relaisieren.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Spannungsversorgung des AVR-NET-IO-Boards über die 24V Spannung der Therme (irgendwie cooler)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Eventuell ist es auch bei diesen Junkersthermen sinnvoller die Steuerspannung mittels eines Relais/Transistors zwischen 3-22V zu schalten. Unter Verwendung von 2 Relais/Transistoren wären auch 4 Schaltstufen möglich (0%, 25%, 50% und 100%). &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Die Zusatzplatine trennt das AVR-NET-IO-Board/Netzwerk und die Heizung nicht. Wenn keine Messung der Steuersignalspannung gewünscht ist, würde ich den LTC1257 galvanisch trennen. Bislang gab es aber keine Probleme diesbezüglich. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Yfhem</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=FHT80b_Einstellungen&amp;diff=3219</id>
		<title>FHT80b Einstellungen</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=FHT80b_Einstellungen&amp;diff=3219"/>
		<updated>2013-10-21T19:48:00Z</updated>

		<summary type="html">&lt;p&gt;Yfhem: /* FHT80b Programme auf Knopfdruck ändern */ Fixed link.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Um an einem &#039;&#039;&#039;[[FHT80b]] Einstellungen&#039;&#039;&#039; vonzunehmen, können die im folgenden aufgeführten Beispielanweisungen verwendet werden.&lt;br /&gt;
&lt;br /&gt;
== FHT80b Programme auf Knopfdruck ändern ==&lt;br /&gt;
Update 26-05-2013: Anstelle der aufgeführten Routinen empfiehlt es sich mittlerweile, das neue [[Heizungskontrolle Einfach|Heizungskontrolle]] Modul für [[:Kategorie:FHT Components|FHTs]] zu verwenden. Der hier dargestellte Code kann ggf. dazu dienen, die Grundeinstellungen für die Automatikfunktion der FHTs zu übertragen.&lt;br /&gt;
&lt;br /&gt;
Die Funktionen des Heating Control Moduls sind für die hier dargestellte Lösung wesentlich besser zu verwenden.&lt;br /&gt;
&lt;br /&gt;
Um verschiedene Programme (&amp;quot;Gästezimmer heizen&amp;quot;, &amp;quot;abwesend&amp;quot;, &amp;quot;auch tagsüber heizen, da Urlaub&amp;quot; zu realisieren, bedarf es üblicherweise vieler Parametereinstellungen für die einzelnen Tage. Das lässt sich über ein paar Dummy [[:Kategorie:FS20 Components|FS20]] Devices vereinfachen.&lt;br /&gt;
&lt;br /&gt;
== Vorgehen ==&lt;br /&gt;
Für die verschiedenen Modi werden FS20 Dummies angelegt. Diese Dummies können als Schalter über das Standard Fhem [[:Kategorie:Frontends|Frontend]] ([[PGM2]]) gesetzt werden. Über einen zusätzlichen FS20 Dummy --&amp;amp;gt; _OK (OK, &amp;quot;_&amp;quot; vorgestellt, damit er in der Ansicht als unterster Schalter erscheint) werden dann die Daten übernommen und von FHEM auf die einzelnen FHTs nacheinander übertragen. Dadurch eignet sich diese Möglichkeit zur Einstellung besonders gut für die Kontrolle z.&amp;amp;nbsp;B. über ein Smartphone.&lt;br /&gt;
&lt;br /&gt;
Wichtig für die Anfänger unter den Script Programmierern: innerhalb der Routine dürfen keine Leerzeilen vorhanden, sein, dies würde umgehend zu Fehlermeldungen führen.&lt;br /&gt;
&lt;br /&gt;
Damit die fhem.cfg lesbar bleibt, integriert man diesen Teil idealerweise in eine separate Datei (z.&amp;amp;nbsp;B. 99_myFHTsettings.conf) und integriert diese Datei in der fhem.cfg dann über das Kommando: include ./FHEM/99_myFHTsettings.conf&lt;br /&gt;
&lt;br /&gt;
== Beispiel Code ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define Gaeste FS20 1233 1233&lt;br /&gt;
attr Gaest room FHT_Settings&lt;br /&gt;
set Gaeste off&lt;br /&gt;
define Athome FS20 1232 1232&lt;br /&gt;
attr Athome room FHT_Settings&lt;br /&gt;
set Athome off&lt;br /&gt;
define Urlaub FS20 1231 1231&lt;br /&gt;
attr Urlaub room FHT_Settings&lt;br /&gt;
set Urlaub off&lt;br /&gt;
define _OK FS20 1311 1311&lt;br /&gt;
attr _OK room FHT_Settings&lt;br /&gt;
set _OK off&lt;br /&gt;
define checkprogram at +*00:02:00 {\&lt;br /&gt;
 if(&amp;amp;quot;$value{_OK}&amp;amp;quot; eq &amp;amp;quot;on&amp;amp;quot;){\&lt;br /&gt;
   my $hm = sprintf(&amp;amp;quot;%%02d:%%02d&amp;amp;quot;, $hour, $min);;\&lt;br /&gt;
   my ($wz_dt, $wz_nt, $wz_ct, $wz_wdf1, $wz_wdt1, $wz_wdf2, $wz_wdt2, $wz_wef1, $wz_wet1, $wz_wef2, $wz_wet2);;\&lt;br /&gt;
   my ($ku_dt, $ku_nt, $ku_ct, $ku_wdf1, $ku_wdt1, $ku_wdf2, $ku_wdt2, $ku_wef1, $ku_wet1, $ku_wef2, $ku_wet2);;\&lt;br /&gt;
   my ($sz_dt, $sz_nt, $sz_ct, $sz_wdf1, $sz_wdt1, $sz_wdf2, $sz_wdt2, $sz_wef1, $sz_wet1, $sz_wef2, $sz_wet2);;\&lt;br /&gt;
   my ($kz_dt, $kz_nt, $kz_ct, $kz_wdf1, $kz_wdt1, $kz_wdf2, $kz_wdt2, $kz_wef1, $kz_wet1, $kz_wef2, $kz_wet2);;\&lt;br /&gt;
   my ($ba_dt, $ba_nt, $ba_ct, $ba_wdf1, $ba_wdt1, $ba_wdf2, $ba_wdt2, $ba_wef1, $ba_wet1, $ba_wef2, $ba_wet2);;\&lt;br /&gt;
   my ($so_dt, $so_nt, $so_ct, $so_wdf1, $so_wdt1, $so_wdf2, $so_wdt2, $so_wef1, $so_wet1, $so_wef2, $so_wet2);;\&lt;br /&gt;
   my ($bo_dt, $bo_nt, $bo_ct, $bo_wdf1, $bo_wdt1, $bo_wdf2, $bo_wdt2, $bo_wef1, $bo_wet1, $bo_wef2, $bo_wet2);;\&lt;br /&gt;
   my ($tempstr1, $tempstr2, $tempstr3, $tempstr4, $tempstr5, $tempstr6, $tempstr7, $tempstr8);;\&lt;br /&gt;
   if($value{Urlaub}&amp;amp;quot; eq &amp;amp;quot;off&amp;amp;quot;){\&lt;br /&gt;
    $wz_dt = 21.0;; $wz_nt = 18.0;; $wz_ct = 18.0;;\&lt;br /&gt;
    $wz_wdf1= &amp;amp;quot;06:00&amp;amp;quot;;; $wz_wdt1 = &amp;amp;quot;08:30&amp;amp;quot;;; $wz_wdf2 = &amp;amp;quot;16:00&amp;amp;quot;;; $wz_wdt2 = &amp;amp;quot;23:00&amp;amp;quot;;;\&lt;br /&gt;
    $wz_wef1 = &amp;amp;quot;06:30;; $wz_wet1 = &amp;amp;quot;23:00&amp;amp;quot;;;\&lt;br /&gt;
    $ku_dt = 20.0;; $ku_nt = 17.0;; $ku_ct = 17.0;;\&lt;br /&gt;
    $ku_wdf1 = &amp;amp;quot;06:00&amp;amp;quot;;; $ku_wdt1 = &amp;amp;quot;07:30&amp;amp;quot;;; $ku_wdf2 = &amp;amp;quot;17:00&amp;amp;quot;;; $ku_wdt2 = &amp;amp;quot;20:30&amp;amp;quot;;;\&lt;br /&gt;
    $ku_wef1 = &amp;amp;quot;06:30&amp;amp;quot;;; $ku_wet1 = &amp;amp;quot;22:00&amp;amp;quot;;;\&lt;br /&gt;
    $sz_dt = 20.0;; $sz_nt = 18.0;; $sz_ct = 18.0;;\&lt;br /&gt;
    $sz_wdf1 = &amp;amp;quot;06:00&amp;amp;quot;;; $sz_wdt1 = &amp;amp;quot;08:00&amp;amp;quot;;; $sz_wdf2 = &amp;amp;quot;18:30&amp;amp;quot;;; $sz_wdt2 = &amp;amp;quot;21:00&amp;amp;quot;;;\&lt;br /&gt;
    $sz_wef1 = &amp;amp;quot;06:30&amp;amp;quot;;; $sz_wet1 = &amp;amp;quot;08:30&amp;amp;quot;;; $sz_wef2 = &amp;amp;quot;19:30&amp;amp;quot;;; $sz_wet2 = &amp;amp;quot;21:00&amp;amp;quot;;;\&lt;br /&gt;
    $kz_dt = 15.0;; $kz_nt = 13.0;; $kz_ct = 13.0;;\&lt;br /&gt;
    $kz_wdf1 = &amp;amp;quot;07:00&amp;amp;quot;;; $kz_wdt1 = &amp;amp;quot;07:05&amp;amp;quot;;; $kz_wdf2 = &amp;amp;quot;07:06&amp;amp;quot;;; $kz_wdt2 = &amp;amp;quot;07:10&amp;amp;quot;;;\&lt;br /&gt;
    $kz_wef1 = &amp;amp;quot;07:00&amp;amp;quot;;; $kz_wet1 = &amp;amp;quot;07:05&amp;amp;quot;;; $kz_wef2 = &amp;amp;quot;07:06&amp;amp;quot;;;$kz_wet2 = &amp;amp;quot;07:10&amp;amp;quot;;;\&lt;br /&gt;
    $ba_dt = 20.5;; $ba_nt = 18.0;; $ba_ct = 18.0;;\&lt;br /&gt;
    $ba_wdf1 = &amp;amp;quot;06:00&amp;amp;quot;;; $ba_wdt1 = &amp;amp;quot;07:30&amp;amp;quot;;; $ba_wdf2 = &amp;amp;quot;18:00&amp;amp;quot;;; $ba_wdt2 = &amp;amp;quot;19:30&amp;amp;quot;;;\&lt;br /&gt;
    $ba_wef1 = &amp;amp;quot;06:30&amp;amp;quot;;; $ba_wet1 = &amp;amp;quot;08:30&amp;amp;quot;;; $ba_wef2 = &amp;amp;quot;19:30&amp;amp;quot;;; $ba_wet2 = &amp;amp;quot;21:00&amp;amp;quot;;;\&lt;br /&gt;
    $so_dt = 15.0;; $so_nt = 13.0;; $so_ct = 13.0;;\&lt;br /&gt;
    $so_wdf1 = &amp;amp;quot;08:00&amp;amp;quot;;; $so_wdt1 = &amp;amp;quot;08:05&amp;amp;quot;;; $so_wdf2 = &amp;amp;quot;08:06&amp;amp;quot;;; $so_wdt2 = &amp;amp;quot;08:10&amp;amp;quot;;;\&lt;br /&gt;
    $so_wef1 = &amp;amp;quot;08:00&amp;amp;quot;;; $so_wet1 = &amp;amp;quot;08:05&amp;amp;quot;;; $so_wef2 = &amp;amp;quot;08:06&amp;amp;quot;;; $so_wet2 = &amp;amp;quot;08:10&amp;amp;quot;;;\&lt;br /&gt;
    $bo_dt = 15.0;; $bo_nt = 13.0;; $bo_ct = 13.0;;\&lt;br /&gt;
    $bo_wdf1 = &amp;amp;quot;08:00&amp;amp;quot;;; $bo_wdt1 = &amp;amp;quot;08:05&amp;amp;quot;;; $bo_wdf2 = &amp;amp;quot;08:06&amp;amp;quot;;; $bo_wdt2 = &amp;amp;quot;08:10&amp;amp;quot;;;\&lt;br /&gt;
    $bo_wef1 = &amp;amp;quot;08:00&amp;amp;quot;;; $bo_wet1 = &amp;amp;quot;08:05&amp;amp;quot;;; $bo_wef2 = &amp;amp;quot;08:06&amp;amp;quot;;; $bo_wet2 = &amp;amp;quot;08:10&amp;amp;quot;;;\&lt;br /&gt;
    if(&amp;amp;quot;$value{Gaeste}&amp;amp;quot; eq &amp;amp;quot;on&amp;amp;quot;){\&lt;br /&gt;
     $so_dt = 20.5;; $so_nt = 18.0;; $so_ct = 18.0;;\&lt;br /&gt;
     $so_wdf1 = &amp;amp;quot;06:30&amp;amp;quot;;; $so_wdt1 = &amp;amp;quot;08:30&amp;amp;quot;;; $so_wdf2 = &amp;amp;quot;20:30&amp;amp;quot;;; $so_wdt2 = &amp;amp;quot;22:00&amp;amp;quot;;;\&lt;br /&gt;
     $so_wef1 = &amp;amp;quot;06:30&amp;amp;quot;;; $so_wet1 = &amp;amp;quot;08:30&amp;amp;quot;;; $so_wef2 = &amp;amp;quot;21:00&amp;amp;quot;;; $so_wet2 = &amp;amp;quot;22:30&amp;amp;quot;;;\&lt;br /&gt;
     $bo_dt = 20.5;; $bo_nt = 18.0;; $bo_ct = 18.0;;\&lt;br /&gt;
     $bo_wdf1 = &amp;amp;quot;06:30&amp;amp;quot;;; $bo_wdt1 = &amp;amp;quot;08:30&amp;amp;quot;;; $bo_wdf2 = &amp;amp;quot;20:30&amp;amp;quot;;; $bo_wdt2 = &amp;amp;quot;22:00&amp;amp;quot;;;\&lt;br /&gt;
     $bo_wef1 = &amp;amp;quot;06:30&amp;amp;quot;;; $bo_wet1 = &amp;amp;quot;08:30&amp;amp;quot;;;$bo_wef2 = &amp;amp;quot;21:00&amp;amp;quot;;; $bo_wet2 = &amp;amp;quot;22:30&amp;amp;quot;;;\&lt;br /&gt;
    }\&lt;br /&gt;
    if(&amp;amp;quot;$value{Athome}&amp;amp;quot; eq &amp;amp;quot;on&amp;amp;quot;){\&lt;br /&gt;
     $wz_wdf1 = &amp;amp;quot;06:30&amp;amp;quot;;; $wz_wdt1 = &amp;amp;quot;23:00&amp;amp;quot;;; $ku_wdf1 = &amp;amp;quot;06:30&amp;amp;quot;;; $ku_wdt1 = &amp;amp;quot;22:00&amp;amp;quot;;;\&lt;br /&gt;
    }\&lt;br /&gt;
   }\&lt;br /&gt;
   if(&amp;amp;quot;$value{Urlaub}&amp;amp;quot; eq &amp;amp;quot;on&amp;amp;quot;){\&lt;br /&gt;
    $wz_dt = 15.0;; $wz_nt = 13.0;; $wz_ct = 13.0;; $ku_dt = 15.0;; $ku_nt = 13.0;; $ku_ct = 13.0;;\&lt;br /&gt;
    $sz_dt = 15.0;; $sz_nt = 13.0;; $sz_ct = 13.0;; $kz_dt = 15.0;; $kz_nt = 13.0;; $kz_ct = 13.0;;\&lt;br /&gt;
    $ba_dt = 15.0;; $ba_nt = 15.0;; $ba_ct = 13.0;; $so_dt = 15.0;; $so_nt = 13.0;; $so_ct = 13.0;;\&lt;br /&gt;
    $bo_dt = 15.0;; $bo_nt = 13.0;; $bo_ct = 13.0;;\&lt;br /&gt;
   }\&lt;br /&gt;
   $tempstr1 = ReadingsVal(&amp;amp;quot;FHT_Kueche&amp;amp;quot;, &amp;amp;quot;day-temp&amp;amp;quot;, $ku_dt);;\&lt;br /&gt;
   $tempstr2 = ReadingsVal(&amp;amp;quot;FHT_Kueche&amp;amp;quot;, &amp;amp;quot;night-temp&amp;amp;quot;, $ku_nt);;\&lt;br /&gt;
   if($tempstr1 ne $ku_dt || $tempstr2 ne $ku_nt){\&lt;br /&gt;
    fhem (&amp;amp;quot;set FHT_Kueche day-temp $ku_dt night-temp $ku_nt&amp;amp;quot;);;\&lt;br /&gt;
    fb_mail(&#039;deineemail@googlemail.com&#039;,&amp;amp;quot;FHEM-Status: Aenderung FHT_Kueche DayTemp $tempstr1 -&amp;amp;gt; $ku_dt, NightTemp $tempstr2 -&amp;amp;gt; $ku_nt&amp;amp;quot;,&#039;&#039;);;\ &lt;br /&gt;
   }\   &lt;br /&gt;
   else{\&lt;br /&gt;
    fb_mail(&#039;deineemail@googlemail.com&#039;,&amp;amp;quot;FHEM-Status: Keine Aenderung FHT_Kueche DayTemp $ku_dt, NightTemp $ku_nt&amp;amp;quot;,&#039;&#039;);;\ &lt;br /&gt;
   }\ &lt;br /&gt;
  …… dieser Code fuer Day-Tem, Night-Temp wird sinngemaess fuer alle FHTs kopiert (FHT_Kueche, FHT_WohnZ, FHT_Bad, FHT_Kinderzimmer, FHT_Schlafzimmer, FHT_GaesteSchlafZ, FHT_GaesteBad)&lt;br /&gt;
  &lt;br /&gt;
   $tempstr1 = ReadingsVal(&amp;amp;quot;FHT_Kueche&amp;amp;quot;, &amp;amp;quot;mon-from1&amp;amp;quot;, $ku_wdf1);;\&lt;br /&gt;
   $tempstr2 = ReadingsVal(&amp;amp;quot;FHT_Kueche&amp;amp;quot;, &amp;amp;quot;mon-to1&amp;amp;quot;, $ku_wdt1);;\&lt;br /&gt;
   $tempstr3 = ReadingsVal(&amp;amp;quot;FHT_Kueche&amp;amp;quot;, &amp;amp;quot;mon-from2&amp;amp;quot;, $ku_wdf2);;\&lt;br /&gt;
   $tempstr4 = ReadingsVal(&amp;amp;quot;FHT_Kueche&amp;amp;quot;, &amp;amp;quot;mon-to2&amp;amp;quot;, $ku_wdt2);;\&lt;br /&gt;
   $tempstr5 = ReadingsVal(&amp;amp;quot;FHT_Kueche&amp;amp;quot;, &amp;amp;quot;sun-from1&amp;amp;quot;, $ku_wef1);;\&lt;br /&gt;
   $tempstr6 = ReadingsVal(&amp;amp;quot;FHT_Kueche&amp;amp;quot;, &amp;amp;quot;sun-to1&amp;amp;quot;, $ku_wet1);;\&lt;br /&gt;
   $tempstr7 = ReadingsVal(&amp;amp;quot;FHT_Kueche&amp;amp;quot;, &amp;amp;quot;sun-from2&amp;amp;quot;, $ku_wef2);;\&lt;br /&gt;
   $tempstr8 = ReadingsVal(&amp;amp;quot;FHT_Kueche&amp;amp;quot;, &amp;amp;quot;sun-to2&amp;amp;quot;, $ku_wet2);;\&lt;br /&gt;
   if($tempstr1 ne $ku_wdf1 || $tempstr2 ne $ku_wdt1 || $tempstr3 ne $ku_wdf2 || $tempstr4 ne $ku_wdt2){\&lt;br /&gt;
     fhem (&amp;amp;quot;set FHT_Kueche mon-from1 $ku_wdf1 mon-to1 $ku_wdt1 mon-from2 $ku_wdf2 mon-to2 $ku_wdt2&amp;amp;quot;);;\&lt;br /&gt;
     fhem (&amp;amp;quot;set FHT_Kueche tue-from1 $ku_wdf1 tue-to1 $ku_wdt1 tue-from2 $ku_wdf2 tue-to2 $ku_wdt2&amp;amp;quot;);;\&lt;br /&gt;
     fhem (&amp;amp;quot;set FHT_Kueche wed-from1 $ku_wdf1 wed-to1 $ku_wdt1 wed-from2 $ku_wdf2 wed-to2 $ku_wdt2&amp;amp;quot;);;\&lt;br /&gt;
     fhem (&amp;amp;quot;set FHT_Kueche thu-from1 $ku_wdf1 thu-to1 $ku_wdt1 thu-from2 $ku_wdf2 thu-to2 $ku_wdt2&amp;amp;quot;);;\&lt;br /&gt;
     fhem (&amp;amp;quot;set FHT_Kueche fri-from1 $ku_wdf1 fri-to1 $ku_wdt1 fri-from2 $ku_wdf2 fri-to2 $ku_wdt2&amp;amp;quot;);;\&lt;br /&gt;
     fb_mail(&#039;deineemail@googlemail.com&#039;,&amp;amp;quot;FHEM-Status: Aenderung FHT_Kueche Wochentag From1 $tempstr1 -&amp;amp;gt; $ku_wdf1, To1 $tempstr2 -&amp;amp;gt; $ku_wdt1, From2 $tempstr3 -&amp;amp;gt; $ku_wdf2, To2 $tempstr4 -&amp;amp;gt; $ku_wdt2&amp;amp;quot;,&#039;&#039;);;\ &lt;br /&gt;
   }\      &lt;br /&gt;
   else{\&lt;br /&gt;
    fb_mail(&#039;deineemail@googlemail.com&#039;,&amp;amp;quot;FHEM-Status: Keine Aenderung FHT_Kueche Wochentag From1 $ku_wdf1, To1 $ku_wdt1, From2 $ku_wdf2, To2 $ku_wdt2&amp;amp;quot;,&#039;&#039;);;\&lt;br /&gt;
   }\   &lt;br /&gt;
   if($tempstr5 ne $ku_wef1 || $tempstr6 ne $ku_wet1 || $tempstr7 ne $ku_wef2 || $tempstr8 ne $ku_wet2){\&lt;br /&gt;
     fhem (&amp;amp;quot;set FHT_Kueche sat-from1 $ku_wef1 sat-to1 $ku_wet1 sat-from2 $ku_wef2 sat-to2 $ku_wet2&amp;amp;quot;);;\&lt;br /&gt;
     fhem (&amp;amp;quot;set FHT_Kueche sun-from1 $ku_wef1 sun-to1 $ku_wet1 sun-from2 $ku_wef2 sut-to2 $ku_wet2&amp;amp;quot;);;\&lt;br /&gt;
     fb_mail(&#039;deineemail@googlemail.com&#039;,&amp;amp;quot;FHEM-Status: Aenderung FHT_Kueche Wochenend From1 $tempstr5 -&amp;amp;gt; $ku_wef1, To1 $tempstr6 -&amp;amp;gt; $ku_wet1, From2 $tempstr7 -&amp;amp;gt; $ku_wef2, To2 $tempstr8 -&amp;amp;gt; $ku_wet2&amp;amp;quot;,&#039;&#039;);;\ &lt;br /&gt;
   }\   &lt;br /&gt;
   else{\&lt;br /&gt;
    fb_mail(&#039;deineemail@googlemail.com&#039;,&amp;amp;quot;FHEM-Status: Keine Aenderung FHT_Kueche Wochenend From1 $ku_wef1, To1 $ku_wet1, From2 $ku_wef2, To2 $ku_wet2&amp;amp;quot;,&#039;&#039;);;\&lt;br /&gt;
   }\   &lt;br /&gt;
 &lt;br /&gt;
  ….. dieser Code für from1 to1, from2, to2 wird sinngemaess fuer alle FHTs kopiert (FHT_Kueche, FHT_WohnZ, FHT_Bad, FHT_Kinderzimmer, FHT_Schlafzimmer, FHT_GaesteSchlafZ, FHT_GaesteBad)&lt;br /&gt;
  &lt;br /&gt;
   fhem(&amp;amp;quot;set _OK off&amp;amp;quot;);;\&lt;br /&gt;
 }\&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Code Snippets]]&lt;br /&gt;
[[Kategorie:FHT Components]]&lt;/div&gt;</summary>
		<author><name>Yfhem</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Grundriss_mit_FHEM-Buttons&amp;diff=3192</id>
		<title>Grundriss mit FHEM-Buttons</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Grundriss_mit_FHEM-Buttons&amp;diff=3192"/>
		<updated>2013-10-20T18:51:48Z</updated>

		<summary type="html">&lt;p&gt;Yfhem: /* Lösungsalternativen */ Not clickable links. Fixed.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ziel ist, auf einem Hintergrundbild (z.B. einem Grundriss) fhem-&#039;buttons&#039; zu platzieren, mit denen fhem-devices geschaltet werden können. Im Weiteren wird durchweg der Begriff &#039;Grundriss&#039; verwendet, es kann aber jedes beliebige Bild/Szenario verwendet werden, z.B. ein Foto der eigenen Stereoanlage mit entsprechenden Schaltern darauf.&lt;br /&gt;
== Lösungsalternativen ==&lt;br /&gt;
Um das o.g. Ziel zu erreichen, gibt es drei Lösungsvarianten:&lt;br /&gt;
&lt;br /&gt;
# Seit 03/2012 das in fhem integrierte FLOORPLAN. Das Programms sowie die zugehörigen css-Dateien sind seit 04/2012 Bestandteil von updatefhem, befinden sich also auf allen aktualisierten fhem-Installationen. Die (sehr guten) [http://fhem.de/commandref.html#FLOORPLAN commandref-Eintrag] verlinkt.&lt;br /&gt;
# Die in diesem Wiki-Eintrag beschriebene HTML-Lösung&lt;br /&gt;
# Eine php-basierte Lösung unter folgenden Links: [http://heimserver.nendzig.net/projekte/HomeMini/homemini.tar Download]&lt;br /&gt;
# SVG-basierte Lösung [http://fhzctrl.sourceforge.net Homepage]&lt;br /&gt;
&lt;br /&gt;
== Lösungsansatz über HTML ==&lt;br /&gt;
HINWEIS&lt;br /&gt;
&lt;br /&gt;
* Die erzeugte html-Datei ist lokal. Sie kann also von einem PC oder Mac aus angezeigt werden, für die Anzeige auf dem iPad o.ä. ist ein Webserver erforderlich.&lt;br /&gt;
&lt;br /&gt;
Dieser Lösungsansatz stammt von Boris Neubert:&lt;br /&gt;
&lt;br /&gt;
* Zum Steuern werden die URLs von den im fhem-webfrontend angezeigten &#039;on/off&#039;-Links genutzt&lt;br /&gt;
* Es gibt eine GrundrissStart.html, die zwei Frames erzeugt:&lt;br /&gt;
# einen sichtbaren Bereich für die Darstellung von &#039;Grundriss.html&#039;,&lt;br /&gt;
# einen unsichtbaren Bereich für die Rückmeldungen von der fhem-webpage&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorgehensweise ==&lt;br /&gt;
=== Erstellen der Startdatei ===&lt;br /&gt;
Erzeugen Sie eine Datei &#039;GrundrissStart.html&#039; mit folgendem Inhalt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;amp;lt;HTML&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;HEAD&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;TITLE&amp;amp;gt;Meine kleine Schaltzentrale&amp;amp;lt;/TITLE&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/HEAD&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;FRAMESET ROWS=&amp;quot;*,0&amp;quot; BORDER=0 FRAMEBORDER=0 FRAMESPACING=0&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;FRAME SRC=&amp;quot;Grundriss.html&amp;quot; NAME=&amp;quot;control&amp;quot; NORESIZE&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;FRAME           NAME=&amp;quot;log&amp;quot;&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/FRAMESET&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/HTML&amp;amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
=== Erstellen des Hintergrundbilds ===&lt;br /&gt;
Es kann jedes beliebige Internetformat verwendet werden, also z.B. .jpg , .png&lt;br /&gt;
Der Grundriss kann z.B. in Powerpoint erstellt und als Hintergrundbild.png gespeichert werden.&lt;br /&gt;
&lt;br /&gt;
=== Hinzufügen der fhem-Schalt-Links ===&lt;br /&gt;
Dem Bild übergelagert platzieren Sie nun die Schaltflächen. Diese rufen einen Link folgenden Formats:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;amp;lt;A HREF=&amp;quot;[http:// http://]&amp;amp;lt;ip&amp;amp;gt;:8083/fhem?cmd=set%20Lampe1%20on&amp;quot; target=&amp;quot;log&amp;quot;&amp;amp;gt;Lampe1 an&amp;amp;lt;/A&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;A HREF=&amp;quot;[http:// http://]&amp;amp;lt;ip&amp;amp;gt;:8083/fhem?cmd=set%20Lampe1%20off&amp;quot; target=&amp;quot;log&amp;quot;&amp;amp;gt;Lampe1 aus&amp;amp;lt;/A&amp;amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Der in href angegebene link lässt sich der Einfachheit halber per Copy/Paste aus dem fhem-webfrontend kopieren.&lt;br /&gt;
&lt;br /&gt;
Wichtig ist der Zusatz &#039;&#039;target=&amp;quot;log&amp;quot;&#039;&#039;. Wenn dies fehlt, funktionieren zwar die Links, jedoch verlässt man nach dem Klick auf einen button die Grundriss-Seite und landet auf dem fhem-Webfrontend. Durch den Zusatz wird diese fhem-Rückantwort in den unsichtbaren frame namens &amp;quot;log&amp;quot; umgeleitet - auf dem Bildschirm bleibt also Grundriss.html .&lt;br /&gt;
&lt;br /&gt;
Hier eine Grundriss.html mit zwei Darstellungsvarianten: Lampe1 erscheint mit on/off-Schaltern, Lampe2 erscheint nur als Symbol, das selbst als toggle-button dient. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;amp;lt;html&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;head&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;meta http-equiv=&amp;amp;quot;refresh&amp;amp;quot; content=&amp;amp;quot;5; URL=Grundriss.html&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;title&amp;amp;gt;Grundriss mit fhem-Schaltern&amp;amp;lt;/title&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/head&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;body&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;img src= &amp;amp;quot;Hintergrundbild.png&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
  &amp;amp;lt;div style=&amp;amp;quot;position:absolute; top:190px; left:340px&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;a href=&amp;amp;quot;http://&amp;amp;lt;ip&amp;amp;gt;:8083/fhem?cmd.Lampe1=set%20Lampe1%20on&amp;amp;quot; target=&amp;amp;quot;log&amp;amp;quot;&amp;amp;gt;ON&amp;amp;lt;/a&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;img src=http://&amp;amp;lt;ip&amp;amp;gt;:8083/fhem/icons/Lampe1&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;a href=&amp;amp;quot;http://&amp;amp;lt;ip&amp;amp;gt;:8083/fhem?cmd.Lampe1=set%20Lampe1%20off&amp;amp;quot; target=&amp;amp;quot;log&amp;amp;quot;&amp;amp;gt;OFF&amp;amp;lt;/a&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
  &amp;amp;lt;div style=&amp;amp;quot;position:absolute; top:300px; left:340px&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;a href=&amp;amp;quot;http://&amp;amp;lt;ip&amp;amp;gt;:8083/fhem?cmd.Lampe2=set%20Lampe2%20toggle&amp;amp;quot; target=&amp;amp;quot;log&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;img src=http://&amp;amp;lt;ip&amp;amp;gt;:8083/fhem/icons/Lampe2&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;/a&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/body&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/html&amp;amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
refresh: Der screen wird alle 5 Sekunden aktualisiert.&lt;br /&gt;
HINWEIS&lt;br /&gt;
&lt;br /&gt;
* Alternativ können Sie zu der in fhem verwendeten Web-Instanz (z.B. WEB) &#039;&#039;&#039;attr WEB longpoll 1&#039;&#039;&#039; setzen. Damit werden die icons auf dem Bildschirm automatisch refreshed, sobald sich ihr Zustand ändert. Der html-Refresh wird damit hinfällig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mit &amp;amp;lt;div&amp;amp;gt;divisions&amp;amp;lt;/div&amp;amp;gt; wird die Positionierung der Schaltelemente auf dem Bildschirm erreicht.&lt;br /&gt;
&lt;br /&gt;
Die &amp;amp;lt;a&amp;amp;gt;Anchors&amp;amp;lt;/a&amp;amp;gt; tragen als Link die kopierte URL der on/off-buttons aus dem fhem webfrontend.&lt;br /&gt;
&lt;br /&gt;
Die &amp;amp;lt;img&amp;amp;gt;Images&amp;amp;lt;/img&amp;amp;gt; -URL liefert das Symbol zum genannten Gerät in dessen aktzuellem Schaltzustand zurück.&lt;br /&gt;
&lt;br /&gt;
Wenn Sie die o.g. Zeilen mehrfach kopieren und Lampe1 bzw Lampe2 durch Ihre Gerätenamen erstzen, können Sie Ihre Konfiguration recht einfach einrichten.&lt;br /&gt;
&lt;br /&gt;
== Aufruf ==&lt;br /&gt;
Öffnen Sie GrundrissStart.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Special: Anzeigen von FHT-Werten ==&lt;br /&gt;
Will man z.B. die gemessene Temperatur eines FHT auf dem Grundriss anzeigen, muss man ein wenig tricksen. Der Lösungsansatz besteht aus zwei Schritten: 1. Dem Schreiben der gemessenen Temperatur in ein .txt-File, 2. dem Anzeigen des Inhalts dieser Datei im Grundriss.&lt;br /&gt;
&lt;br /&gt;
1. Das Schreiben der Temperatur in eine Datei namens FHT-temperature.txt wird durch ein notify erreicht:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;##fhem.cfg##&lt;br /&gt;
define ez_FHT_notify notify ez_FHT { \&lt;br /&gt;
my $FHT = &amp;amp;quot;%&amp;amp;quot;;; \&lt;br /&gt;
#die Actuator-Auswertung tut hier nicht zur Sache \&lt;br /&gt;
 if ($FHT =~ &amp;amp;quot;actuator:&amp;amp;quot;) { \&lt;br /&gt;
  $FHT = (substr($FHT, 9, (length($FHT)-10)));; \&lt;br /&gt;
  fhem(&amp;amp;quot;set hzg_Actuator $FHT&amp;amp;quot;) \&lt;br /&gt;
 } \&lt;br /&gt;
#jetzt kommt&#039;s: \&lt;br /&gt;
 if ($FHT =~ &amp;amp;quot;measured-temp&amp;amp;quot;) { \&lt;br /&gt;
  $FHT = substr($FHT, 15, 4);; \&lt;br /&gt;
  system(&amp;amp;quot;(echo $FHT &amp;amp;gt; FHT-temperature.txt)&amp;amp;quot;) \&lt;br /&gt;
 } \&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Durch den system()-Befehl wird der Inhalt der Variablen $FHT, also die gemessene Temperatur, in die Datei FHT-temperature.txt geschrieben.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Anzeigen des Datei-Inhalts auf dem Grundriss - dies sind Zusatzeinträge in der Grundriss.html&amp;amp;#160;:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;amp;lt;div style= &amp;amp;quot;position:absolute; top:366px; left:130px&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;object data = &amp;amp;quot;..\fhem\FHT-temperature.txt&amp;amp;quot;&amp;amp;gt;&amp;amp;lt;/object&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;div style=&amp;amp;quot;position:absolute; top:370px; left:170px; color:grey&amp;amp;quot;&amp;amp;gt;&lt;br /&gt;
  °C&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Achten Sie darauf, die Pfadangaben korrekt zu setzen.&lt;br /&gt;
&lt;br /&gt;
=== Anzeigen von S300TH-Werten ===&lt;br /&gt;
So wie für FHTs funktioniert&#039;s auch für S300TH-Geräte:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;define ez_Aussensensor_schreiben notify S300TH:temperature:.* \&lt;br /&gt;
{ system(&amp;amp;quot; echo&amp;amp;#160;%EVTPART1 &amp;amp;gt; S300TH-temperature.txt&amp;amp;quot;) }&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Erklärung: Wann immer vom Gerät S300TH eine Meldung kommt, die mit &amp;quot;temperature&amp;quot; beginnt, schreibe den Meldungsteil zwischen der ersten und zweiten Leerstelle (%EVTPART1) in die Datei S300TH-temperature.txt .&lt;br /&gt;
Für die Darstellung auf der html-Seite muss man nun analog FHT das &amp;amp;lt;object data...&amp;amp;gt; tag einbauen. Fertig&amp;amp;#160;:-)&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;/div&gt;</summary>
		<author><name>Yfhem</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=CUL&amp;diff=3114</id>
		<title>CUL</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=CUL&amp;diff=3114"/>
		<updated>2013-10-20T06:35:33Z</updated>

		<summary type="html">&lt;p&gt;Yfhem: Updated forum link.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#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 ein RF-Gerät im Formfaktor eines USB-Dongles mit externer [[CUL Ausstattung|Antenne]]. Die über das ISM/SRD Band empfangenen Daten werden durch einen Onboard 8&amp;amp;nbsp;bit Atmel Prozessor vorverarbeitet. Mit verfügbarer quelloffener Firmware (im Umfeld von FHEM die &amp;quot;culfw&amp;quot;) kann das CUL verschiedene 868MHz [[CUL HomeMatic und FS20|Protokolle]] empfangen und senden, insbesondere die FS20/FHT/S300/EM/HMS sowie durch kurzfristiges Umschaltung auf 433&amp;amp;nbsp;MHz Intertechno (z.&amp;amp;nbsp;B. viele Baumarkt Funksteckdosen) Protokolle. &lt;br /&gt;
&lt;br /&gt;
Im Umfeld von FS20/FHT/EM/S300/HMS (&amp;quot;[[SlowRF]] - Mode&amp;quot;) wird die Dekodierung der per AM in 1&amp;amp;nbsp;kHz übertragenen Signale per culfw auf dem Atmel Prozessor direkt erledigt und dann per USB an den Hostrechner weitergegeben.&lt;br /&gt;
&lt;br /&gt;
Das CUL kann mittels des CULModuls 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.&lt;br /&gt;
&lt;br /&gt;
Ferner ist der Einsatz eines CUL als [[RFR CUL]] für den SlowRF Mode (jedoch nicht für den HM 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;
Seit Ende 2012 gibt es ausserdem ein Modul zur Ansteuerung der [[MAX]]! Heizungsteuerung. Auch hier ist ein Mischbetrieb (MAX! und z.&amp;amp;nbsp;B. FS20 gleichzeitig über ein CUL) wohl [http://forum.fhem.de/index.php/topic,10510.0.html nicht angeraten].&lt;br /&gt;
&lt;br /&gt;
Obwohl die eigentliche Betriebsfrequenz der FHT und FS20-Komponenten 868,35 MHz ist, ist bei den aktuellen CUL Firmwareversionen zum Betrieb mit FHEM die Frequenz auf 868,30 MHz eingestellt. Dies stellt einen Kompromiss zum besseren Empfang von EM1000EM (Energiemonitor) Geräten dar.&lt;br /&gt;
&lt;br /&gt;
Falls keine RP-SMA-Antenne verfügbar ist, kann (nur für erste Tests) auch die abschraubbare Antenne für 802.11b/g WLAN-Geräte (2,4 GHz) benutzt werden, so diese anschlusstechnisch auf den RP-SMA-Stecker des CUL passt (dies funktioniert zumindest mit FS20- und EM-Geräten). Besser ist auf jeden Fall eine speziell auf den Einsatzzweck (Frequenz) abgestimmte Antenne.&lt;br /&gt;
&lt;br /&gt;
Frequenz und Bandbreite können aber im SlowRF Mode frei angepasst und somit für ö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;amp;lt;Enter&amp;amp;gt; abzuschicken (nicht &amp;quot;save&amp;quot; klicken). &amp;quot;myCUL&amp;quot; ist nur ein Platzhalter und mit dem 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 soll nur bei Senden / Empfangen blinken&lt;br /&gt;
*: &amp;lt;code&amp;gt;set myCUL raw l00&amp;lt;/code&amp;gt;&lt;br /&gt;
* LED soll regelmäßig (1Hz) und beim Senden / Empfangen blinken&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;get myCUL raw B00. Andere Werte als 00 starten das CUL im Bootloader-Modus (=&amp;amp;gt; neue Firmware)&amp;lt;/code&amp;gt;&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, eine FHT Kommunikation wesentlich mehr.&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; Ergebniss 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 gross, Platz für 14 bis 31 FHT Messages)&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. Siehe auch Diskussion unter [https://groups.google.com/group/cul-fans/browse_thread/thread/683ca5c892eae1c3/c682a640f1ba863c?lnk=gst&amp;amp;amp;q=bWidth+freq#c682a640f1ba863c GoogleGroups-CUL-Fans]&lt;br /&gt;
&lt;br /&gt;
Werte x00-x04 sind &#039;&#039;&#039;mit&#039;&#039;&#039; Ramping und führen zum Verlust der Kommunikationsfähigkeit mit anderen CULs, z.&amp;amp;nbsp;B. [[RFR CUL]].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Beim CUL im HM-Modus kann man (ohne firmware-mod) die Empfangs-/Sendeparameter &#039;&#039;&#039;nicht&#039;&#039;&#039; verstellen. Die üblichen freq/x09 etc. haben hier keine Wirkung ([http://forum.fhem.de/index.php?t=msg&amp;amp;amp;th=10203&amp;amp;amp;goto=57191&amp;amp;amp;rid=417#msg_57191 Quelle]).&lt;br /&gt;
&lt;br /&gt;
Weiterhin kann man zunehmend mehr Debuggingoutput auf dem CUL einschalten mit&amp;amp;#160;:&lt;br /&gt;
&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 / Signalstaerke 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 Gross- 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 stehen hier: [http://culfw.de/commandref.html http://culfw.de/commandref.html]&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,5Kb RAM, 16Kb Flashmemory, 0,5 kByte EEPROM. Einsatzfähigkeit unbekannt (aber vermutlich wie V2). Wird nicht mehr hergestellt.&lt;br /&gt;
* CUL V2 - AT90USB162 Prozessor, 0,5Kb RAM, 16Kb Flashmemory, 0,5 kByte EEPROM. Einsatzfähig. Der Flashspeicher ist jedoch zu klein für eine culfw (CUL Firmware), die Code für SlowRF Geräte und zugleich HM 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 kByte EEPROM). Voll einsatzfähig.&lt;br /&gt;
* CUL V4 - ATMega32U2 Prozessor, 1 kB RAM 32 kB Flashmemory, 1 kByte EEPROM. Voll einsatzfähig. Genau genommen 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;
== 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 SlowRF Mode auch durch direkte Befehle aus Fhem (im HM Mode derzeit nicht unterstützt). Der wesentliche Unterschied der 868 und 433 MHz CULs ist ein auf die Frequenz richtig abgestimmter HF-Eingangskreis inklusive Antennenlänge.&lt;br /&gt;
Es ist es 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;
&lt;br /&gt;
Denkbar ist auch der Einsatz eines CUL 433 MHz im Zusammenhang mit HomeMatic. Hier wird das CUL normalerweise im HM Mode betrieben, dessen Frequenz auf 868 MHz fest eingestellt ist. Die verminderte Sendeleistung aufgrund der falschen Antenne fällt je nach örtlicher Gegebenheit eventuell nicht ins Gewicht, da HomeMatic aufgrund seiner besseren Empfänger grundsätzlich etwas bessere Reichweiten hat als die empfangsseitig simplen Intertechnomodule. Soll nun ein Intertechnomodul geschaltet werden, wird das CUL kurzzeitig auf SlowRF umgeschaltet und dann in 433 MHz betrieben, jetzt mit optimaler Antennenabstimmung zur Reichweitenoptimierung der Intertechno-Komponenten, danach wird sofort in den HM Modus zurückgeschaltet, wodurch sich die Frequenz auch automatisch wieder auf 868 MHz ändert. Theoretisch ist hierbei allerdings der Verlust von HM-ACK Meldungen möglich, wenn diese in dem Moment eintreffen, in dem das CUL gerade auf Intertechno umgeschaltet ist.&lt;br /&gt;
&lt;br /&gt;
== Bekannte Probleme ==&lt;br /&gt;
Im Gegensatz zu den original FHZ Zentralen ist das CUL recht flankensteil, 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_0 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 ([http://forum.fhem.de/index.php?t=msg&amp;amp;goto=44388&amp;amp;rid=73&amp;amp;srch=decision+boundary#msg_44388 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_0 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;
= Links =&lt;br /&gt;
* Hersteller / Bezugsquelle für CUL: [http://www.busware.de/tiki-index.php?page=CUL busware.de]&lt;br /&gt;
* [http://culfw.de/culfw.html culfw.de] - Homepage der CUL firmware&lt;br /&gt;
* [http://culfw.svn.sourceforge.net/viewvc/culfw/trunk/culfw/ Sourceforge CUL firmware]&lt;br /&gt;
* Google groups [https://groups.google.com/group/cul-fans/ CUL fans]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Interface]]&lt;br /&gt;
[[Kategorie:CUL]]&lt;/div&gt;</summary>
		<author><name>Yfhem</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Anwesenheitserkennung&amp;diff=2280</id>
		<title>Anwesenheitserkennung</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Anwesenheitserkennung&amp;diff=2280"/>
		<updated>2013-06-29T10:42:01Z</updated>

		<summary type="html">&lt;p&gt;Yfhem: Richtiges Deutsch verwendet.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Viele Benutzer führen bereits eine eigene Anwesenheitserkennung durch. Diese basiert in den meisten Fällen auf Ping Checks oder bei FritzBoxen über den Befehl &#039;&#039;ctlmgr_ctl&#039;&#039;. Diese Lösungen können aber je nach Aufbau und Funktion FHEM massiv beeinträchtigen. Aufgrund des Aufbaus vom FHEM kann dieses dadurch für mehrere Sekunden zum völligen Stillstand gebracht werden.&lt;br /&gt;
&lt;br /&gt;
Daher gibt es nun ein Modul, welches eine zuverlässige Anwesenheitserkennung bietet, ohne dabei FHEM bei der Ausführung zu beeinträchtigen.&lt;br /&gt;
&lt;br /&gt;
= Vorüberlegungen =&lt;br /&gt;
&lt;br /&gt;
Generell gibt es mehrere Ansätze um Anwesenheitserkennung mit Handys/Smartphones durchzuführen.&lt;br /&gt;
&lt;br /&gt;
* via PING Checks im gesamten WLAN&lt;br /&gt;
* Aktivitätsprüfung auf einer FritzBox&lt;br /&gt;
* Bluetooth Checks in der gesamten Wohnung&lt;br /&gt;
* eigene Perl-Funktion&lt;br /&gt;
&lt;br /&gt;
Dabei gilt bei der Auswahl der Art darauf zu achten wie sich das jeweilige Device verhält. Aufgrund der Vielfältigkeit kann man hier keine allgemeine Vorgehensweise empfehlen. Als einfacher Start eignet sich die Ping-Überprüfung und die FritzBox-Abfrage sehr gut.&lt;br /&gt;
&lt;br /&gt;
== Randbedingungen ==&lt;br /&gt;
&lt;br /&gt;
Es gibt Geräte, welche ihr WLAN/Bluetooth auch im Standby ständig an haben und auf Anfragen antworten können (fast alle Android-Geräte). Gerade bei Tests über WLAN kann sich das aber signifikant auf die Akku Leistung auswirken.&lt;br /&gt;
&lt;br /&gt;
Andere Geräte wiederum schalten WLAN im Standby Betrieb aus um Akku zu sparen. Bluetooth hingegen bleibt weiterhin aktiviert und kann auf Anfragen reagieren. (iPhone)&lt;br /&gt;
&lt;br /&gt;
Wenn man bei einem iPhone die Funktion &amp;quot;über WLAN synchronisieren&amp;quot; aktiviert hat, so ist dies auch im Standby jederzeit pingbar wenn der Recher auf dem iTunes zum synchroniseren läuft auch an ist. Ansonsten ist bei iPhone Geräten nur die Aktivitätsprüfung mit einer FritzBox oder das überwachen der DHCP lease auf einer Airport Basestation wirklich zuverlässig.&lt;br /&gt;
&lt;br /&gt;
Auch wenn man Bluetooth aktiviert hat, so bleiben einige Handys erst dann empfangsbereit, wenn sie bereits zu irgend einem Bluetoothgerät gekoppelt wurden. Sind diese Geräte noch nie gekoppelt worden, so deaktivieren diese ihren Bluetooth Empfänger beim verlassen des Bluetooth-Menüs im Gerät (iPhone).&lt;br /&gt;
&lt;br /&gt;
Hier gilt es vor allem auszuprobieren wie stark der Akku durch eine Anwesenheitserkennung beeinträchtigt wird. Entscheidend ist hier in welchem Abstand man eine Anwesenheitserkennung durchführt. Viele Abfragen wirken sich stärker auf den Akku aus als wenige. Wenige Abfragen bieten aber keine zuverlässige und zeitnahe Erkennung.&lt;br /&gt;
&lt;br /&gt;
= Das PRESENCE Modul =&lt;br /&gt;
&lt;br /&gt;
Das PRESENCE Modul bietet für die Anwesenheitserkennung mehrere Varianten an. Diese sind aktuell folgende:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;lan-ping&#039;&#039;&#039; - Das überwachen via PING Checks, welche durch den FHEM Server versandt werden.&lt;br /&gt;
* &#039;&#039;&#039;fritzbox&#039;&#039;&#039; - Das überwachen von Geräten auf einer FritzBox via ctlmgr_ctl (Nur auf einer FritzBox möglich)&lt;br /&gt;
* &#039;&#039;&#039;local-bluetooth&#039;&#039;&#039; - Das überwachen via Bluetooth Checks, welche vom FHEM Server direkt durchgeführt werden (angeschlossener Bluetooth-Stick und die Software bluez voraussgesetzt)&lt;br /&gt;
* &#039;&#039;&#039;lan-bluetooth&#039;&#039;&#039; - Das überwachen von Bluetoothgeräte, über Netzwerk. Auf einer oder mehreren Maschinen im Netzwerk (z.B. [[:Kategorie:Raspberry Pi|Raspberry Pi]]) läuft eine Presence-Daemon, welcher nach Bluetooth-Geräten sucht. Um mehrere Presence-Daemon mit FHEM zu verbinden, gibt es den Collector-Daemon, welche sich zu allen Presence-Damons im Netzwerk verbindet und das Ergebnis von allen zusammenfasst.&lt;br /&gt;
* &#039;&#039;&#039;function&#039;&#039;&#039; - Das überwachen mithilfe einer selbst geschrieben Perl-Funktion die den Anwesenheitsstatus zurück gibt (0 oder 1)&lt;br /&gt;
* &#039;&#039;&#039;shell-script&#039;&#039;&#039; - Das überwachen mithilfe eines selbst geschriebenen Shell-Programms/Skript, welches eine 0 oder 1 ausgibt um den Anwesenheitsstatus mitzuteilen.&lt;br /&gt;
&lt;br /&gt;
== Ping-Überwachung von Geräten im WLAN/LAN ==&lt;br /&gt;
Um ein Gerät via Ping zu überwachen definiert man folgendes in der fhem.cfg:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Handy PRESENCE lan-ping 192.168.0.30&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dadurch wird die IP-Addresse 192.168.0.30 aller 30 Sekunden geprüft, ob sie erreichbar ist. Wenn sie erreichbar ist, ist der Status &amp;quot;present&amp;quot; (anwesend), ansonsten &amp;quot;absent&amp;quot; (abwesend)&lt;br /&gt;
&lt;br /&gt;
Mann kann das Timeout verändern indem man es als zusätzlichen Wert hinten anhängt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Handy PRESENCE lan-ping 192.168.0.30 60&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun würde das Handy aller 60 Sekunden geprüft werden.&lt;br /&gt;
&lt;br /&gt;
Nur wenn man bei einem iPhone/iPad die Funktion &amp;quot;über WLAN synchronisieren&amp;quot; aktiviert hat, so ist dies auch im Standby zuverlässig pingbar. Standardmäßig deaktivieren Apple-Geräte ihr WLAN im Standby-Betrieb um Akku zu sparen.&lt;br /&gt;
&lt;br /&gt;
== FritzBox: direktes Abfragen der Aktivität via ctlmgr_ctl ==&lt;br /&gt;
Eine sehr häufige und auch zuverlässige Methode ist auf einer FritzBox die Abfrage mittels ctlmgr_ctl Befehl. Über diesen lassen sich alle Geräte abfragen ob sie aktiv sind. Ist ein Gerät aktiv, so gilt es als anwesend.&lt;br /&gt;
&lt;br /&gt;
Dieser Modus kann allerdings nur in FHEM Installationen direkt auf einer FritzBox verwendet werden. Desweiteren muss FHEM unter dem User root laufen.&lt;br /&gt;
Um ein Gerät zu überwachen wird lediglich der Gerätename benötigt, so wie er unter dem Menüpunkt &amp;quot;Heimnetz&amp;quot; auftaucht. In der fhem.cfg sieht dies folgendermaßen aus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Handy PRESENCE fritzbox iPhone-4S&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== FHEM Ausführung von User boxusr99/fhem zu root ändern ===&lt;br /&gt;
&lt;br /&gt;
Eine detaillierte Beschreibung um FHEM wieder unter root auf der FritzBox zu starten findet ihr in dem Artikel [[FritzBox: fhem unter root starten]]&lt;br /&gt;
&lt;br /&gt;
== Bluetooth-Überwachung von Geräten durch den FHEM Server ==&lt;br /&gt;
[[Datei:Bluetooth-Adresse-iPhone.png|thumb|Bluetooth-Adresse eines iPhones]]&lt;br /&gt;
Jenach Aufstellungsort des FHEM Servers kann es sinnvoll sein, eine Bluetooth-Überwachung direkt durch den FHEM Server durchzuführen. Hierbei gilt allerdings zu beachten, das Bluetooth nicht für große Reichweiten gedacht ist und in den meisten Fällen keine Wände überwinden können. Das heist, dass man in den meisten Fällen damit nur einen Raum überwachen kann.&lt;br /&gt;
&lt;br /&gt;
Je nach Einsatzzweck kann das auch so gewollt sein. Bluetooth USB Sticks welche bereits Bluetooth 4.0 unterstützen können höhere Reichweiten über Zimmerwände hinaus erreichen. Voraussgesetzt das Handy unterstützt Bluetooth 4.0.&lt;br /&gt;
&lt;br /&gt;
Um eine Überwachung per Bluetooth durchführen zu können benötigt man die Bluetooth-Adresse eines Gerätes. Diese ähnelt sich vom Aufbau einer MAC-Adresse. Generell wird die Adresse in den Telefon-Informationen bei Smartphones angezeigt.&lt;br /&gt;
&lt;br /&gt;
Um eine Anwesenheitserkennung via Bluetooth durchzuführen wird folgende Zeile in der fhem.cfg benötigt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;margin-right: 210px;&amp;quot;&amp;gt;&lt;br /&gt;
define Handy PRESENCE local-bluetooth XX:XX:XX:XX:XX:XX&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bluetooth-Überwachung von Geräten durch verteilte Agenten in der Wohnung (presencd/collectord) ==&lt;br /&gt;
[[Datei:Raspberry-Pi-mit-WLAN-und-Bluetooth-Stick.jpg|thumb|left|Raspberry Pi mit Bluetooth- und WLAN-USB-Stick]]&lt;br /&gt;
Um eine zuverlässige und flächendeckende Bluetooth-Anwesenheitserkennung durchzuführen, ist es unerlässlich mehrere Bluetooth-Empfänger zu verwenden, welche auf mehrere oder alle Räume verteilt sind.&lt;br /&gt;
&lt;br /&gt;
Hierführ bietet sich zum Beispiel ein Raspberry Pi mit einem Mini-Bluetooth-USB-Stick und evtl. einem WLAN-USB-Stick an. Jeder Raum wird mit solch einem Raspberry ausgestattet und ist im WLAN Netz verfügbar.&lt;br /&gt;
&lt;br /&gt;
Dieses Netz aus Raspberrys wird mit dem presenced (Download-Link ist in der [http://fhem.de/commandref_DE.html#PRESENCE Commandref] zum Modul enthalten) ausgestattet. Es stehen bereits entsprechende Pakete für das Raspberry zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
Beide Programme (presenced/collectord) sind Perl-Skripte welche als Daemon im Hintergrund laufen und auf Anfragen via Netzwerk warten. Es wird lediglich eine vollständige Perl-Grundinstallation benötigt mit Standardmodulen. Nach Installation der *.deb Paket sollten diese noch angewiesen werden, automatisch beim Rechner-Neustart gestartet zu werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo update-rc.d presenced defaults&lt;br /&gt;
sudo update-rc.d collectord defaults&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eine detaillierte Benutzung von presenced findet man in der [http://fhem.de/commandref_DE.html#PRESENCE Commandref] zum PRESENCE Modul.&lt;br /&gt;
&lt;br /&gt;
=== Jeden Raum einzeln ansprechen (presenced) ===&lt;br /&gt;
&lt;br /&gt;
Nun kann man zuallererst jeden Raum einzeln ansprechen. Dabei ist zu beachten, dass pro Definition in der FHEM.cfg nur ein Gerät in einem Raum spezifisch überwacht werden kann.&lt;br /&gt;
&lt;br /&gt;
Eine Definition sieht dabei wie folgend aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Handy_Wohnzimmer PRESENCE lan-bluetooth XX:XX:XX:XX:XX:XX 192.168.0.10:5111&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit wird nun das Handy nur im Wohnzimmer (Raspberry mit IP 192.168.0.10) überwacht.&lt;br /&gt;
&lt;br /&gt;
=== Alle Räume gemeinsam ansprechen (collectord) ===&lt;br /&gt;
&lt;br /&gt;
Um jedoch alle Räume gemeinsam zu verwenden gibt es den Collector-Daemon. Dieser kennt alle presenced-Installationen im Netzwerk und führt eine koordinierte Suche nach den gewünschten Geräten durch. Sobald ein Gerät in einem Raum erkannt wurde, meldet der collectord den Status inkl. der Angabe des Raumes, in welchem das Gerät erkannt wurde.&lt;br /&gt;
&lt;br /&gt;
Um alle Räume zu kennen, müssen diese mit einem Config-File dem collectord mitgeteilt werden. Dieses sieht folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Schlafzimmer]           # Name des Raumes (wird in FHEM als Reading angezeigt)&lt;br /&gt;
address=192.168.179.31   # IP-Adresse oder Hostname des presenced&lt;br /&gt;
port=5111                # TCP Port welcher verwendet werden soll (standardmäßig Port 5111)&lt;br /&gt;
presence_timeout=120     # Prüfinterval welches verwendet werden soll, wenn ein Gerät anwesend ist&lt;br /&gt;
absence_timeout=20       # Prüfinterval welches verwendet werden soll, wenn ein Gerät abwesend ist&lt;br /&gt;
&lt;br /&gt;
[Wohnzimmer]&lt;br /&gt;
address=192.168.179.34&lt;br /&gt;
port=5111&lt;br /&gt;
presence_timeout=180&lt;br /&gt;
absence_timeout=20&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit dieser Konfiguration kann der Collectord gestartet werden. Es empfiehlt sich diesen mit auf dem FHEM Server zu betreiben.&lt;br /&gt;
Nun kann man in der fhem.cfg folgenden Eintrag hinzufügen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Handy PRESENCE lan-bluetooth XX:XX:XX:XX:XX:XX 127.0.0.1:5222&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sobald das Handy irgendwo in der Wohnung erkannt wurde, meldet der Collectord dies sofort an FHEM und teilt den Raum mit.&lt;br /&gt;
&lt;br /&gt;
Eine detaillierte Benutzung von collectord findet man in der Commandref zum PRESENCE Modul.&lt;br /&gt;
&lt;br /&gt;
== Überwachung von Geräten mit Perl-Code ==&lt;br /&gt;
&lt;br /&gt;
Es ist möglich zum Überwachen von Geräten eine eigene Perl-Funktion zu verwenden die dann vom PRESENCE Modul im Hintergrund aufgerufen wird.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define &amp;lt;name&amp;gt; PRESENCE function {...} [ &amp;lt;check-interval&amp;gt; [ &amp;lt;present-check-interval&amp;gt; ] ]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sobald die Funktion den Rückgabewert 1 hat, ist das Gerät anwesend, bei 0 abwesend.&lt;br /&gt;
&lt;br /&gt;
=== Beispiel DHCP überwachung auf Airport Basestation ===&lt;br /&gt;
&lt;br /&gt;
Die hier vorgestellte Überwachung der DHCP Lease auf Airport Basestations per SNMP ist absolut robust gegenüber dem Ruhezustand von iOS und setzt keine weitere Konfiguration auf dem iPhone voraus.. Das abmelden beim verlassen des Empfangsbereiches der Basestation geschieht mit etwa 5-10 Minuten Verzögerung und ist somit auch vor kurzzeitigen Empfangsproblemen sicher. Das nebenstehende Bild verdeutlicht noch mal die unterschiede zwischen einer IP-Basierten Ping-Überwachung und der Überwachung auf Ebene der Basestation oder FritzBox.&lt;br /&gt;
&lt;br /&gt;
Bevor der folgende Code verwendet werden kann ist das Perl Modul Net:SNMP zu installieren. das geht z.b. mit: cpan install use Net::SNMP.&lt;br /&gt;
&lt;br /&gt;
Zuerst ist folgender Code in 99_myUtils.pl einzufügen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
use Net::SNMP;&lt;br /&gt;
sub&lt;br /&gt;
snmpCheck($$)&lt;br /&gt;
{&lt;br /&gt;
  my ($airport,$client)= @_;&lt;br /&gt;
&lt;br /&gt;
  my $community = &amp;quot;public&amp;quot;;&lt;br /&gt;
  my $host = $airport;&lt;br /&gt;
  my $oid = &amp;quot;.1.3.6.1.2.1.3.1.1.2&amp;quot;;&lt;br /&gt;
  #my $oid = &amp;quot;.1.3.6.1.2.1.3.1.1.2.25.1.10.0.1&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  my ( $session, $error ) = Net::SNMP-&amp;gt;session(&lt;br /&gt;
    -hostname =&amp;gt; $host,&lt;br /&gt;
    -community =&amp;gt; $community,&lt;br /&gt;
    -port =&amp;gt; 161,&lt;br /&gt;
    -version =&amp;gt; 1&lt;br /&gt;
  );&lt;br /&gt;
&lt;br /&gt;
  if( !defined($session) ) {&lt;br /&gt;
    return 0;&lt;br /&gt;
    return &amp;quot;Can&#039;t connect to host $host.&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  my @snmpoids = ();&lt;br /&gt;
&lt;br /&gt;
  my $response = $session-&amp;gt;get_next_request($oid);&lt;br /&gt;
  my @nextid = keys %$response;&lt;br /&gt;
  while ( $nextid[0] =~ m/^$oid/ ) {&lt;br /&gt;
    push( @snmpoids, $nextid[0] );&lt;br /&gt;
&lt;br /&gt;
    $response = $session-&amp;gt;get_next_request( $nextid[0] );&lt;br /&gt;
    @nextid = keys %$response;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if( !defined($response = $session-&amp;gt;get_request( @snmpoids ) ) ) {&lt;br /&gt;
    return 0;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  foreach my $value (values %$response) {&lt;br /&gt;
    return 1 if( $value eq $client )&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach lässt sich das Mobilgerät so überwachen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define iPhone PRESENCE function {snmpCheck(&amp;quot;10.0.1.1&amp;quot;,&amp;quot;0x44d77429f35c&amp;quot;)} 30 30&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
wobei 10.0.1.1 durch die IP-Adresse der Basestation und 0x44d77429f35c durch die MAC adresse des Geräts als HEX-Zahl ersetzt werden muss.&lt;br /&gt;
&lt;br /&gt;
= Beispiele für die Nutzung der Anwesenheitserkennung =&lt;br /&gt;
Hier sollen Beispiele für die Nutzung von PRESENCE aufgezeigt werden.&lt;br /&gt;
&lt;br /&gt;
== Abschalten aller Verbraucher (Licht, Musikanlage) beim Verlassen der Wohnung ==&lt;br /&gt;
&lt;br /&gt;
Typisches Szenario: Man geht ausser Haus, aber hat vergessen im Bad das Licht aus zu machen. Allerdings geht man heutzutage fast garnicht mehr ohne Handy aus dem Haus.&lt;br /&gt;
&lt;br /&gt;
Nun soll FHEM in der gesamten Wohnung das Licht, sowie sonstige Verbraucher ausschalten, wenn ich länger als 15 Minuten ausser Haus bin.&lt;br /&gt;
Dazu benötigt man zuerst eine structure, welche alle Verbraucher und sonstige Devices, welche das betrifft zusammenfasst.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Gesamte_Wohnung structure Gesamtes_Licht Licht_Wohnzimmer Licht_Kueche LED_Kueche Licht_Bad Licht_Schlafzimmer AV_Receiver TV_Steckdose&lt;br /&gt;
attr Gesamte_Wohnung room Wohnung&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun kann man mittels eines watchdogs eine Überwachung für sein Handy anlegen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Überwachen der gesamten Wohnung mittels collectord sowie presenced in jedem Raum&lt;br /&gt;
define Handy PRESENCE lan-bluetooth XX:XX:XX:XX:XX:XX 127.0.0.1:5222&lt;br /&gt;
&lt;br /&gt;
# Nach 15 Minuten Abwesenheit (Handy im Status &amp;quot;absent&amp;quot;) soll die gesamte Wohnung ausgeschaltet werden.&lt;br /&gt;
define watchdog_Anwesenheit watchdog Handy:absent 00:15 Handy:present set Gesamte_Wohnung off ; setstate watchdog_Anwesenheit defined&lt;br /&gt;
attr watchdog_Anwesenheit regexp1WontReactivate 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Code Snippets]]&lt;br /&gt;
[[Kategorie:Glossary]]&lt;/div&gt;</summary>
		<author><name>Yfhem</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=CUL&amp;diff=2262</id>
		<title>CUL</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=CUL&amp;diff=2262"/>
		<updated>2013-06-27T19:02:17Z</updated>

		<summary type="html">&lt;p&gt;Yfhem: e.g.: z.b. -&amp;gt; z.&amp;amp;nbsp;B.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;CUL&#039;&#039;&#039;&lt;br /&gt;
= Beschreibung =&lt;br /&gt;
CUL (&#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 ein RF-Gerät im Formfaktor eines USB-Dongles mit externer Antenne. Die über das ISM/SRD Band empfangenen Daten werden durch einen Onboard 8bit Atmel Prozessor vorverarbeitet. Mit verfügbarer quell offener Firmware (im Umfeld von FHEM die &amp;quot;culfw&amp;quot;) kann das CUL verschiedene 868MHz Protokolle empfangen und senden, insbesondere die FS20/FHT/S300/EM/HMS sowie durch kurzfristiges Umschaltung auf 433&amp;amp;nbsp;MHz Intertechno (z.&amp;amp;nbsp;B. viele Baumarkt Funksteckdosen) Protokolle. &lt;br /&gt;
&lt;br /&gt;
Im Umfeld von FS20/FHT/EM/S300/HMS (&amp;quot;[[SlowRF]] - Mode&amp;quot;) wird die Dekodierung der per AM in 1&amp;amp;nbsp;kHz übertragenen Signale per culfw auf dem Atmel Prozessor direkt erledigt und dann per USB an den Hostrechner weitergegeben.&lt;br /&gt;
&lt;br /&gt;
Das CUL kann mittels des CULModuls 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]]). Bei CULs älter als Version&amp;amp;#160;3 ist außerdem 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 Flashen der Firmware für eine Protokollfamilie entscheiden. Mit zwei CULs ist aber auch der Mischbetrieb an einem FHEM Hostrechner möglich.&lt;br /&gt;
&lt;br /&gt;
Ferner ist der Einsatz eines CUL als [[RFR CUL]] für den SlowRF Mode (jedoch nicht für den HM 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;
Seit Ende 2012 gibt es ausserdem ein Modul zur Ansteuerung der [[MAX]]! Heizungsteuerung. Auch hier ist ein Mischbetrieb (MAX! und z.&amp;amp;nbsp;B. FS20 gleichzeitig über ein CUL) wohl [http://forum.fhem.de/index.php?t=msg&amp;amp;amp;th=10510&amp;amp;amp;start=0&amp;amp;amp;rid=417 nicht angeraten].&lt;br /&gt;
&lt;br /&gt;
Obwohl die eigentliche Betriebsfrequenz der FHT und FS20-Komponenten 868,35 MHz ist, ist bei den aktuellen CUL Firmwareversionen zum Betrieb mit FHEM die Frequenz auf 868,30 MHz eingestellt. Dies stellt einen Kompromiss zum besseren Empfang von EM1000EM (Energiemonitor) Geräten dar.&lt;br /&gt;
&lt;br /&gt;
Falls keine RP-SMA-Antenne verfügbar ist, kann (nur für erste Tests) auch die abschraubbare Antenne für 802.11b/g WLAN-Geräte (2,4 GHz) benutzt werden, so diese anschlusstechnisch auf den RP-SMA-Stecker des CUL passt (dies funktioniert zumindest mit FS20- und EM-Geräten). Besser ist auf jeden Fall eine speziell auf den Einsatzzweck (Frequenz) abgestimmte Antenne.&lt;br /&gt;
&lt;br /&gt;
Frequenz und Bandbreite können aber im SlowRF Mode frei angepasst und somit für ö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;amp;lt;Enter&amp;amp;gt; abzuschicken (nicht &amp;quot;save&amp;quot; klicken). &amp;quot;myCUL&amp;quot; ist nur ein Platzhalter und mit dem 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 soll nur bei Senden / Empfangen blinken&lt;br /&gt;
*: &amp;lt;code&amp;gt;set myCUL raw l00&amp;lt;/code&amp;gt;&lt;br /&gt;
* LED soll regelmäßig (1Hz) und beim Senden / Empfangen blinken&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;get myCUL raw B00. Andere Werte als 00 starten das CUL im Bootloader-Modus (=&amp;amp;gt; neue Firmware)&amp;lt;/code&amp;gt;&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, eine FHT Kommunikation wesentlich mehr.&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; Ergebniss 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 gross, Platz für 14 bis 31 FHT Messages)&lt;br /&gt;
* Eingestellte Frequenz, Bandbreite etc. Ausgeben&lt;br /&gt;
*: &amp;lt;code&amp;gt; get myCUL ccconf&amp;lt;/code&amp;gt;. Rückgabe z.&amp;amp;nbsp;B.:&lt;br /&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;&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 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 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. Siehe auch Diskussion unter [https://groups.google.com/group/cul-fans/browse_thread/thread/683ca5c892eae1c3/c682a640f1ba863c?lnk=gst&amp;amp;amp;q=bWidth+freq#c682a640f1ba863c GoogleGroups-CUL-Fans]&lt;br /&gt;
&lt;br /&gt;
Werte x00-x04 sind MIT Ramping und führen zum Verlust der Kommunikationsfähigkeit mit anderen CULs, z.&amp;amp;nbsp;B. [[RFR CUL]].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039;Beim CUL im HM-Modus kann man (ohne firmware-mod) die Empfangs-/Sendeparameter &#039;&#039;&#039;nicht&#039;&#039;&#039;verstellen. Die üblichen freq/x09 etc. haben hier keine Wirkung ([http://forum.fhem.de/index.php?t=msg&amp;amp;amp;th=10203&amp;amp;amp;goto=57191&amp;amp;amp;rid=417#msg_57191 Quelle]).&lt;br /&gt;
&lt;br /&gt;
Weiterhin kann man zunehmend mehr Debuggingoutput auf dem CUL einschalten mit&amp;amp;#160;:&lt;br /&gt;
&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 / Signalstaerke 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 Gross- 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 stehen hier: [http://culfw.de/commandref.html http://culfw.de/commandref.html]&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,5Kb RAM, 16Kb Flashmemory, 0,5 kByte EEPROM. Einsatzfähigkeit unbekannt (aber vermutlich wie V2). Wird nicht mehr hergestellt.&lt;br /&gt;
* CUL V2 - AT90USB162 Prozessor, 0,5Kb RAM, 16Kb Flashmemory, 0,5 kByte EEPROM. Einsatzfähig. Der Flashspeicher ist jedoch zu klein für eine culfw (CUL Firmware), die Code für SlowRF Geräte und zugleich HM 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 kByte EEPROM). Voll einsatzfähig.&lt;br /&gt;
* CUL V4 - ATMega32U2 Prozessor, 1 Kb RAM 32 Kb Flashmemory, 1 kByte EEPROM. Voll einsatzfähig. Genau genommen 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;
= 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 SlowRF Mode auch durch direkte Befehle aus Fhem (im HM Mode derzeit nicht unterstützt). Der wesentliche Unterschied der 868 und 433 MHz CULs ist ein auf die Frequenz richtig abgestimmter HF-Eingangskreis inklusive Antennenlänge.&lt;br /&gt;
Es ist es 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;
&lt;br /&gt;
Denkbar ist auch der Einsatz eines CUL 433 MHz im Zusammenhang mit HomeMatic. Hier wird das CUL normalerweise im HM Mode betrieben, dessen Frequenz auf 868 MHz fest eingestellt ist. Die verminderte Sendeleistung aufgrund der falschen Antenne fällt je nach örtlicher Gegebenheit eventuell nicht ins Gewicht, da HomeMatic aufgrund seiner besseren Empfänger grundsätzlich etwas bessere Reichweiten hat als die empfangsseitig simplen Intertechnomodule. Soll nun ein Intertechnomodul geschaltet werden, wird das CUL kurzzeitig auf SlowRF umgeschaltet und dann in 433 MHz betrieben, jetzt mit optimaler Antennenabstimmung zur Reichweitenoptimierung der Intertechno-Komponenten, danach wird sofort in den HM Modus zurückgeschaltet, wodurch sich die Frequenz auch automatisch wieder auf 868 MHz ändert. Theoretisch ist hierbei allerdings der Verlust von HM-ACK Meldungen möglich, wenn diese dem Moment eintreffen, in dem das CUL gerade auf Intertechno umgeschaltet ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Bekannte Probleme =&lt;br /&gt;
Im Gegensatz zu den original FHZ Zentralen ist das CUL recht flankensteil, 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 FHTs 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,35MHz einstellen. Standardmäßig ist hier aus Kompatibelitätsgründen 868,30MHz 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_0 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 (&amp;lt;nowiki&amp;gt;[https://groups.google.com/forum/#!msg/fhem-users/HAaBri3eQgk/pqxHlN1aHkIJ%7Csie Diskussion hier]&amp;lt;/nowiki&amp;gt;). 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_0 sens 8&amp;lt;/code&amp;gt;&lt;br /&gt;
* Oft hilft auch, die Bandweite auf z.&amp;amp;nbsp;B. 464 khz aufzuweiten.&lt;br /&gt;
= Links =&lt;br /&gt;
* [[:Kategorie:CUL]] - weitere Seiten rund um CUL &lt;br /&gt;
* Hersteller / Bezugsquelle für CUL: [http://www.busware.de/tiki-index.php?page=CUL busware.de]&lt;br /&gt;
* [http://culfw.de/culfw.html culfw.de] - Homepage der CUL firmware&lt;br /&gt;
** [http://culfw.svn.sourceforge.net/viewvc/culfw/trunk/culfw/ Sourceforge CUL firmware]&lt;br /&gt;
* Google groups [https://groups.google.com/group/cul-fans/ CUL fans]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Other Components]]&lt;br /&gt;
[[Kategorie:CUL]]&lt;br /&gt;
[[Kategorie:Glossary]]&lt;/div&gt;</summary>
		<author><name>Yfhem</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Maximal_nutzbare_SlowRF_Ger%C3%A4te&amp;diff=2210</id>
		<title>Maximal nutzbare SlowRF Geräte</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Maximal_nutzbare_SlowRF_Ger%C3%A4te&amp;diff=2210"/>
		<updated>2013-06-22T15:11:05Z</updated>

		<summary type="html">&lt;p&gt;Yfhem: Wikilink eingefügt, Korrektur.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Maximal nutzbare Geräte im FS20 / FHT System mit FHEM&lt;br /&gt;
&lt;br /&gt;
Die Anzahl der mit FHEM per steuerbaren Geräte ist softwareseitig im Prinzip unbegrenzt.&lt;br /&gt;
&lt;br /&gt;
Es ergeben sich jedoch insbesondere in Funksystemen deutliche Einschränkungen. So ist die Anzahl der praktisch nutzbaren Geräte vor allem durch die [[1% Regel]] eingeschränkt. Theoretisch ist auch der Adressraum eine Beschränkung, da z.&amp;amp;nbsp;B. FS20 256 Adressen für Geräte kennt; durch Nutzung von Dummy-Geräten wird der Adressraum zudem weiter belastet. Soweit wie bei FHEM mehrere Hauscodes frei verwendet werden können (in Abhängigkeit der verwendeten Funkschnittstelle), lässt sich diese Einschränkung allerdings umgehen.&lt;br /&gt;
&lt;br /&gt;
==grundsätzliche Überlegungen==&lt;br /&gt;
&lt;br /&gt;
Wegen der 1% Regel dürfen Geräte im FS20 / FHT und ähnlichen Funksystemen basierend auf dem 868 MHz Bereich nur 1% einer Stunde mit Funkbefehlen belegt werden, dies entspricht nur 0,6 Minuten (36 Sekunden).&lt;br /&gt;
&lt;br /&gt;
Wärend die einzelnen Devices wie FS20 Aktoren oder FHT80bs diese Zeiten kaum erreichen, sind die Zentralen wie CUN, CUL oder FHZ stärker betroffen.&lt;br /&gt;
&lt;br /&gt;
Besonders problematisch ist der Einsatz von FHT80b Raumreglern:&lt;br /&gt;
&lt;br /&gt;
1. Das FHT/FS20 Funkprotokoll (&amp;quot;SlowRF&amp;quot;) ist Gegensatz zum HomeMatic Protokoll relativ langsam, sodass eine Befehl siginifikante Sendezeit verbraucht.&lt;br /&gt;
&lt;br /&gt;
2. Ist die FHT-Kommunikation mit der Zentrale bidirektional und&lt;br /&gt;
&lt;br /&gt;
3. sendet ein FHT80b alle 15 Minuten Statuswerte an eine gepairte Zentrale.&lt;br /&gt;
&lt;br /&gt;
Die Zentrale wird also quasi von aussen gezwungen, Daten an die bekannten (gepairten) FHT80bs zu senden, selbst wenn es eigentlich nichts mitzuteilen gibt. Die dadurch entstehende Funklast ist nicht unerheblich. Rechnerisch verbraucht die Kommunikation mit eine FHT80b ca. 2,1 Sekunden Sendezeit auf Seiten der Zentrale, also etwa 6% der je Stunde zur Verfügung stehenden Sendezeit. Daraus ergibt sich eine Obergrenze von 17 einsetzbaren FHT80bs je Zentrale. In realen Umgebungen wird die Kommunikation aber nicht fehlerfrei ablaufen, es wird also Wiederholungen geben. Ebenso belasten auch die ausgesendeten Telegramme an FS20 Aktoren und Temperaturänderungen an FHT80bs den Funkkanal zusätzlich. Faktisch sind daher circa ein Dutzend FHT80bs sinnvoll einsetzbar.&lt;br /&gt;
&lt;br /&gt;
==detailierte Betrachtung==&lt;br /&gt;
&lt;br /&gt;
Die bidirektionale Kommunikation kann mit FHEM bei Einsatz eines CUL/CUN(O) mitprotokolliert werden (&amp;quot;set CUL raw X61&amp;quot; vorher nicht vergessen). Hier ein beispielhafter Mitschnitt:&lt;br /&gt;
&lt;br /&gt;
 2008-09-28 13:04:18 FHT wz actuator: 0% &lt;br /&gt;
 2008-09-28 13:04:18 FHT wz actuator: 0% &lt;br /&gt;
 2008-09-28 13:04:18 FHT wz start-xmit: 17 &lt;br /&gt;
 2008-09-28 13:04:18 FHT wz FHZ:start-xmit: 17 &lt;br /&gt;
 2008-09-28 13:04:19 FHT wz measured-low: 21.9 (Celsius) &lt;br /&gt;
 2008-09-28 13:04:19 FHT wz FHZ:measured-low: 21.9 (Celsius) &lt;br /&gt;
 2008-09-28 13:04:19 FHT wz measured-high: 0 &lt;br /&gt;
 2008-09-28 13:04:19 FHT wz FHZ:measured-high: 0 &lt;br /&gt;
 2008-09-28 13:04:19 FHT wz ack: 0 &lt;br /&gt;
 2008-09-28 13:04:20 FHT wz FHZ:ack: 0 &lt;br /&gt;
 2008-09-28 13:04:20 FHT wz warnings: none &lt;br /&gt;
 2008-09-28 13:04:20 FHT wz FHZ:warnings: none &lt;br /&gt;
 2008-09-28 13:04:20 FHT wz ack: 0 &lt;br /&gt;
 2008-09-28 13:04:20 FHT wz FHZ:ack: 0 &lt;br /&gt;
 2008-09-28 13:04:20 FHT wz end-xmit: 0 &lt;br /&gt;
 2008-09-28 13:04:20 FHT wz FHZ:end-xmit: 0 &lt;br /&gt;
&lt;br /&gt;
Jede Zeile steht für ein Telegramm (und nicht für 3, wie beim FS20).&lt;br /&gt;
&lt;br /&gt;
FHZ:xxx Telegramme wurden von dem FHZ (oder CUN/CUL) gesendet, die anderen vom FHT.&lt;br /&gt;
&lt;br /&gt;
fhem fasst measured-low und measured-high zu measured-temp zusammen, es werden also im normalen log (telnet: inform timer) 2 Zeilen weniger gemeldet.&lt;br /&gt;
&lt;br /&gt;
17 ist der FHT-ID des protokollierten FHZ. Wenn das FHZ nicht mit dem richtigen FHT-ID antwortet, dann geht die Kommunikation nicht weiter.&lt;br /&gt;
&lt;br /&gt;
Wenn das FHT nicht an dem FHZ angemeldet ist (d.h. das FHT hat nicht die FHT-ID des FHZ gespeichert), werden keine Temperaturdaten uebermittelt. &lt;br /&gt;
Set Prog:Cent:N/A setzt die FHT-ID des FHT80 auf 100, dann sollte jede FHZ auf  &amp;quot;start-xmit&amp;quot; antworten, und das FHT merkt den ersten.  Noch besser dem FHT via FHEM was zu senden, dann muss man nicht auf die nächste Temperaturmeldung (bis zu 15 Minuten) warten. &lt;br /&gt;
Mehr dazu auch hier: [[FHT mit RFR CUL pairen]]&lt;br /&gt;
Falls die Gegenseite nicht wie erwartet antwortet, dann wird es nach einem Timeout das Telegramm einmal wiederholt. Falls immer noch keine korrekte Antwort vorliegt, dann wird es nach 115+x Sekunden das ganze Vorgang einmal wiederholt.&lt;br /&gt;
&lt;br /&gt;
Jedes Telegramm ist bei 1000Baud ca 75ms lang. Die Temperatur wird pro FHT 4-mal die Stunde gemeldet: 4*7*75ms = 2.1s FHZ-Sendezeit pro FHT und Stunde, und da man wg. 1% 36 Sekunden hat, entspricht das 5.833% pro FHT. Wenn das 1% erschoepft ist, dann versucht das CUL zu antworten, aber es wird bei jedem Versuch LOVF ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Falls die Kommunikation nie abbricht (also fehlerfrei stattfinden kann), und sonst auch nichts gesendet wird, kann man mit einem FHZ 17 FHTs versorgen. Faktisch wird die Menge der einsetzbaren FHTs wesentlich geringer sein. ELV geht als Hersteller offenbar von maximal 10-14 FHTs aus, so unterstützt das Wärmerelais FHT8w maximal 10 Räume, während es in der Bedienungsanleitung der FHZ1000 Standalone Zentrale heisst, es könnten bis zu 15 Räume gesteuert werden. Da die FHZ1000 einen Raum selbst bedient, ist die Kommunikation mit weiteren 14 FHT80b Geräten notwendig.&lt;br /&gt;
&lt;br /&gt;
==mögliche Abhilfe==&lt;br /&gt;
&lt;br /&gt;
Denkbar ist der Einsatz mehrerer Zentralen, also z.&amp;amp;nbsp;B. mittels Anschluss mehrerer CULs/CUNs oder Nutzung von RFR CULs. Somit könnten Geräte auf die Zentralen verteilt werden, um die jeweilige Last zu senken.&lt;br /&gt;
&lt;br /&gt;
Allerdings kann durchaus diskutiert werden, ob dies überhaupt zulässig wäre: Wenn man den FHEM-Hostrechner und angeschlossene FHZ Zentralen als ein System auffasst, könnte das Gesamtsystem rechtlich der 1% Regel unterworfen sein, auch wenn es technisch möglich ist, 2% zu senden.&lt;br /&gt;
&lt;br /&gt;
Vor allem aber steigt die Wahrscheinlichkeit, dass FS20 oder FHT Nachrichten wegen Kanalbelegung nicht mehr erfolgreich übermittelt werden deutlich an. Insbesondere bei FS20 Aktoren, die in der Regel den jeweiligen Befehl unmittelbar ausführen sollen, kann das System recht unzuverlässig werden.&lt;br /&gt;
&lt;br /&gt;
Sendefehler entstehen je nach Konfiguration sogar zwangsweise: Da wegen dem 115+x (x = 0.5sec * Low-Nibble der FHT-ID) die FHT-Sendeintervalle unterschiedlich sind, &amp;quot;kreuzen&amp;quot; sich zwei FHTs mit der FHT-ID 10 (115s Intervall) und FHT-ID 12 (116s Intervall) alle 115*115sec = 13225sec = 3.67h zwangsweise. Bei mehreren FHTs steigen die Kreuzungsmöglichkeiten.&lt;br /&gt;
&lt;br /&gt;
Da die Zentrale nach der FHT Meldung sofort mit FHT:can-xmit antworten muss, steigt zusätzlich das Risiko, das FHTs mit dem übermitteln der Daten abbrechen, nur weil die FHZ Rückmeldung gestört wurde. D.H der Wiederholungsverkehr steigt vermutlich überproportional an.&lt;br /&gt;
&lt;br /&gt;
Mehrere an einen FHEM Hostrechner angeschlossen Zentralen haben zur besseren Ausleuchtung durchaus ihre Berechtigung, zur Erhöhung der maximal nutzbaren Geräte sind sie aber nur bedingt geeignet, wenn nicht sogar unzulässig.&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
&lt;br /&gt;
[[Kommunikationsprobleme_mit_FHT]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:FS20 Components]]&lt;br /&gt;
[[Kategorie:FHT Components]]&lt;/div&gt;</summary>
		<author><name>Yfhem</name></author>
	</entry>
</feed>