<?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=Mikka</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=Mikka"/>
	<link rel="alternate" type="text/html" href="http://wiki.fhem.de/wiki/Spezial:Beitr%C3%A4ge/Mikka"/>
	<updated>2026-04-12T19:17:21Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=PRESENCE&amp;diff=27820</id>
		<title>PRESENCE</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=PRESENCE&amp;diff=27820"/>
		<updated>2018-09-10T20:56:49Z</updated>

		<summary type="html">&lt;p&gt;Mikka: /* Getestete Hardware/Software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Modul&lt;br /&gt;
|ModPurpose=Anwesenheitserkennung&lt;br /&gt;
|ModType=h&lt;br /&gt;
&amp;lt;!-- |ModCmdRef= --&amp;gt;&lt;br /&gt;
|ModTechName=73_PRESENCE.pm&lt;br /&gt;
|ModOwner=markusbloch&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Das [[PRESENCE]] Modul bietet für die Anwesenheitserkennung mehrere Varianten an: &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;lan-ping&#039;&#039;&#039; - Das Überwachen via PING Checks, die 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; Bluetooth&#039;&#039;&#039;&lt;br /&gt;
:- &#039;&#039;&#039;local-bluetooth&#039;&#039;&#039; - Das Überwachen via Bluetooth Checks, die 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äten, über Netzwerk. Auf einer oder mehreren Maschinen im Netzwerk (z.B. [[:Kategorie:Raspberry Pi|Raspberry Pi]]) läuft ein Presence-Daemon, der nach Bluetooth-Geräten sucht. Um mehrere Presence-Daemon mit FHEM zu verbinden, gibt es den Collector-Daemon, der 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ückgibt (0 oder 1)&lt;br /&gt;
* &#039;&#039;&#039;shell-script&#039;&#039;&#039; - Das Überwachen mithilfe eines selbst geschriebenen Shell-Programms/Skript, das eine 0 oder 1 ausgibt, um den Anwesenheitsstatus mitzuteilen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Überwachen mittels Ping im WLAN/LAN =&lt;br /&gt;
{{Randnotiz|RNText=Um diese Methode auf einer FritzBox nutzen zu können, muss FHEM mit root-Rechten laufen. Dies ist standardmäßig nicht der Fall. Bitte dazu den Wiki Artikel [[FritzBox: fhem unter root starten]] beachten.}}&lt;br /&gt;
Um ein Gerät via Ping zu überwachen, muss folgende Definition durchgeführt werden:&lt;br /&gt;
:&amp;lt;code&amp;gt;define Handy PRESENCE lan-ping 192.168.0.30&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dadurch wird die IP-Addresse 192.168.0.30 alle 30&amp;amp;nbsp;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;
Der Timeout kann verändert werden, indem ein Wert (in Sekunden) an das Define anhängt wird:&lt;br /&gt;
:&amp;lt;code&amp;gt;define Handy PRESENCE lan-ping 192.168.0.30 &#039;&#039;&#039;60&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun würde das Handy alle 60 Sekunden geprüft werden.&lt;br /&gt;
&lt;br /&gt;
Nur wenn bei einem iPhone/iPad die Funktion &amp;quot;über WLAN synchronisieren&amp;quot; aktiviert ist, ist es auch im Standby zuverlässig pingbar. Standardmäßig deaktivieren Apple-Geräte ihr WLAN im Standby-Betrieb um die Akkulaufzeit zu verlängern.&lt;br /&gt;
&lt;br /&gt;
Sollte die Fehlermeldung &lt;br /&gt;
:&amp;lt;code&amp;gt; PRESENCE (Handy) - ping command returned with output: ping: icmp open socket: Operation not permitted &amp;lt;/code&amp;gt; &lt;br /&gt;
im Log auftauchen und lan-ping dadurch nicht funktionieren, liegt ein Berechtigungsproblem vor. Kein Grund den User fhem zu root zu machen!&lt;br /&gt;
Prüfe zu erst als User root ob die Capabilities gesetzt sind.&lt;br /&gt;
:&amp;lt;code&amp;gt;getcap /bin/ping&amp;lt;/code&amp;gt;&lt;br /&gt;
Sollte folgendes Ergeben zu Tage fördern.&lt;br /&gt;
:&amp;lt;code&amp;gt;/bin/ping = cap_net_raw+ep&amp;lt;/code&amp;gt;&lt;br /&gt;
Ist dem nicht so, setzen wir die benötigten Capabilities&lt;br /&gt;
:&amp;lt;code&amp;gt;setcap cap_net_raw+ep /bin/ping&amp;lt;/code&amp;gt;&lt;br /&gt;
Mehr Informationen zum Thema Capabilities [https://manpages.debian.org/jessie/manpages-de/capabilities.7.de.html].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= FritzBox: direktes Abfragen der Aktivität via ctlmgr_ctl =&lt;br /&gt;
{{Randnotiz|RNText=Um diese Methode auf einer FritzBox nutzen zu können, muss FHEM mit root-Rechten laufen. Dies ist standardmäßig nicht der Fall. Bitte dazu den Wiki Artikel [[FritzBox: fhem unter root starten]] beachten.}}&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. Des weiteren muss FHEM unter dem User root laufen. 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. &lt;br /&gt;
&lt;br /&gt;
Die erforderliche Definition:&lt;br /&gt;
:&amp;lt;code&amp;gt;define Handy PRESENCE fritzbox iPhone-4S&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Überwachung mittels Perl-Code =&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;
 define &amp;lt;name&amp;gt; PRESENCE function {...} [ &amp;lt;check-interval&amp;gt; [ &amp;lt;present-check-interval&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;
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 (z.&amp;amp;nbsp;B. mit: &amp;lt;code&amp;gt;cpan install use Net::SNMP&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Zuerst ist folgender Code in 99_myUtils.pm einzufügen, sollte diese noch nicht vorhanden sein muss diese aus dem Template welches unter Edit Files zu finden ist erzeugt werden.&lt;br /&gt;
&#039;&#039;&#039;Achtung, das ist nicht der komplette Inhalt der 99_myUtils!&#039;&#039;&#039; Das ist nur die einzelne Routine&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 &amp;amp;&amp;amp; $nextid[0] &amp;amp;&amp;amp; $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;
:&amp;lt;code&amp;gt;define iPhone PRESENCE function {snmpCheck(&amp;quot;10.0.1.1&amp;quot;,&amp;quot;0x44d77429f35c&amp;quot;)} 30 30&amp;lt;/code&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;
== Beispiel Anwesenheitserkennung mittels UniFi Controller ==&lt;br /&gt;
&lt;br /&gt;
Die Anwesenheitserkennung bei Geräten in Verbindung mit UniFi-Produkten funktioniert selbst dann, wenn sich die Geräte im PowerSave-Modus befinden. &lt;br /&gt;
&lt;br /&gt;
Beachte: Die Geräte werden erst ungefähr nach 5 Minuten, nachdem das Gerät das WLAN verlassen hat als disconnected angezeigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;define &amp;lt;NAME&amp;gt; PRESENCE function {ReadingsVal(&amp;quot;&amp;lt;UniFi&amp;gt;&amp;quot;,&amp;quot;&amp;lt;NamedDevice&amp;gt;&amp;quot;,&amp;quot;&amp;quot;) eq &amp;quot;connected&amp;quot; ? 1:0}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Überwachen mittels Events =&lt;br /&gt;
Der Vorteil gegenüber der Function-Variante ist, dass diese Variante ohne Blocking.pm-Overhead direkt ausgeführt werden kann und in &amp;quot;Echtzeit&amp;quot; abläuft (siehe {{Link2Forum|Topic=40287|Message=562823}}).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;define &amp;lt;NAME&amp;gt; PRESENCE event UniFi:NamedDevice:.disconnected UniFi:NamedDevice:.connected&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Überwachen mittels Bluetooth =&lt;br /&gt;
== Vorbereitung und Informationen ==&lt;br /&gt;
=== Getestete Hardware/Software ===&lt;br /&gt;
* &#039;&#039;&#039;Raspbian System&#039;&#039;&#039; - wheezy, Jessie (interner BT-Controller)&lt;br /&gt;
* &#039;&#039;&#039;BT-Dongle&#039;&#039;&#039; - CSL NET BT USB2.0 Stick, Bluetooth V4.0, Nano &amp;lt;br /&amp;gt;&#039;&#039;&#039;Achtung&#039;&#039;&#039;: Es muss ein BT V4.0 oder höher verwendet werden. Nur dieser unterstützt &#039;&#039;LowEnergy&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;BT-TAG&#039;&#039;&#039; - Gtag von Gigaset, TrackR, UDOO Neo, PebbleBee, iTag von Unitec, X4-LIFE Multifunkti BL-Anhänger, iTag Wireless Anti, Trackr bravo, GhostyuBeacon iBc41&lt;br /&gt;
&lt;br /&gt;
=== BT-Dongle am RaspberryPI installieren ===&lt;br /&gt;
Um den BT-Dongle &#039;&#039;(hier: CSL NET BT USB2.0)&#039;&#039; am RaspberryPI verwenden zu können, müssen die notwendigen Pakete über die Paketverwaltung von debian nachinstalliert werden.&lt;br /&gt;
Wer bereits ein BT-Dongle installiert hat, kann diesen Schritt überspringen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install bluetooth&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nach erfolgreicher Installation der Pakete sollte der RaspberryPI neu gestartet werden.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nach dem erfolgten Reboot bitte das Log des RaspberryPI auf folgende Einträge prüfen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Feb 12 19:52:55 fhem kernel: [    4.773600] Bluetooth: Core ver 2.20&lt;br /&gt;
Feb 12 19:52:55 fhem kernel: [    4.773748] NET: Registered protocol family 31&lt;br /&gt;
Feb 12 19:52:55 fhem kernel: [    4.773765] Bluetooth: HCI device and connection manager initialized&lt;br /&gt;
Feb 12 19:52:55 fhem kernel: [    4.773797] Bluetooth: HCI socket layer initialized&lt;br /&gt;
Feb 12 19:52:55 fhem kernel: [    4.773821] Bluetooth: L2CAP socket layer initialized&lt;br /&gt;
Feb 12 19:52:55 fhem kernel: [    4.773890] Bluetooth: SCO socket layer initialized&lt;br /&gt;
Feb 12 19:52:55 fhem kernel: [    4.797531] usbcore: registered new interface driver btusb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Sobald der BT-Dongle erkannt wurde &#039;&#039;leuchtet&#039;&#039; (wenn vorhanden) auch die &#039;&#039;blaue/gelbe&#039;&#039; LED am Dongle auf.&lt;br /&gt;
&lt;br /&gt;
=== BT-Tags aktivieren ===&lt;br /&gt;
Jetzt kann der BT-Tag aktiviert werden. Bei einigen BT-Tags muss dafür die &#039;&#039;&#039;Batteriesicherung&#039;&#039;&#039; gezogen werden.&lt;br /&gt;
&lt;br /&gt;
Ein BT-Tag wird mit folgendem Befehl auf der Konsole gesucht:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo hcitool lescan&lt;br /&gt;
&lt;br /&gt;
Ausgabe z.B.:&lt;br /&gt;
LE Scan ...&lt;br /&gt;
7C:2F:80:A1:XA:XD (unknown)&lt;br /&gt;
7C:2F:80:A1:XA:XD Gigaset G-tag&lt;br /&gt;
7C:2F:80:A1:X4:X1 (unknown)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Eine Übersicht über die möglichen Befehle von hcitool gibt es mit der Eingabe von:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo hcitool&lt;br /&gt;
&lt;br /&gt;
Ausgabe z.B.:&lt;br /&gt;
hcitool - HCI Tool ver 5.23&lt;br /&gt;
Usage:&lt;br /&gt;
        hcitool [options] &amp;lt;command&amp;gt; [command parameters]&lt;br /&gt;
Options:&lt;br /&gt;
        --help  Display help&lt;br /&gt;
        -i dev  HCI device&lt;br /&gt;
Commands:&lt;br /&gt;
        dev     Display local devices&lt;br /&gt;
        inq     Inquire remote devices&lt;br /&gt;
        scan    Scan for remote devices&lt;br /&gt;
        name    Get name from remote device&lt;br /&gt;
        info    Get information from remote device&lt;br /&gt;
        spinq   Start periodic inquiry&lt;br /&gt;
        epinq   Exit periodic inquiry&lt;br /&gt;
        cmd     Submit arbitrary HCI commands&lt;br /&gt;
        con     Display active connections&lt;br /&gt;
        cc      Create connection to remote device&lt;br /&gt;
        dc      Disconnect from remote device&lt;br /&gt;
        sr      Switch master/slave role&lt;br /&gt;
        cpt     Change connection packet type&lt;br /&gt;
        rssi    Display connection RSSI&lt;br /&gt;
        lq      Display link quality&lt;br /&gt;
        tpl     Display transmit power level&lt;br /&gt;
        afh     Display AFH channel map&lt;br /&gt;
        lp      Set/display link policy settings&lt;br /&gt;
        lst     Set/display link supervision timeout&lt;br /&gt;
        auth    Request authentication&lt;br /&gt;
        enc     Set connection encryption&lt;br /&gt;
        key     Change connection link key&lt;br /&gt;
        clkoff  Read clock offset&lt;br /&gt;
        clock   Read local or remote clock&lt;br /&gt;
        lescan  Start LE scan&lt;br /&gt;
        lewladd Add device to LE White List&lt;br /&gt;
        lewlrm  Remove device from LE White List&lt;br /&gt;
        lewlsz  Read size of LE White List&lt;br /&gt;
        lewlclr Clear LE White list&lt;br /&gt;
        lecc    Create a LE Connection&lt;br /&gt;
        ledc    Disconnect a LE Connection&lt;br /&gt;
        lecup   LE Connection Update &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Falls beim SCAN kein BT-Tag gefunden wird, sollte das BT Interface neu gestartet werden. Dazu ist kein Reboot des RaspBerryPI notwendig.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo hciconfig hci0 down&lt;br /&gt;
sudo hciconfig hci0 up&lt;br /&gt;
sudo hcitool dev&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Überwachung durch den FHEM Server direkt ==&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, dass Bluetooth nicht für große Reichweiten gedacht ist und in den meisten Fällen keine Wände überwinden kann. Das heisst, dass in den meisten Fällen damit nur ein Raum überwacht werden kann.&lt;br /&gt;
&lt;br /&gt;
Je nach Einsatzzweck kann das auch so gewollt sein. Bluetooth USB Sticks, die bereits Bluetooth 4.0 unterstützen, können höhere Reichweiten über Zimmerwände hinaus erreichen. Vorausgesetzt, das Mobilgerät 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 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 Definition in der [[Konfiguration]] benötigt:&lt;br /&gt;
:&amp;lt;code&amp;gt;define Handy PRESENCE local-bluetooth XX:XX:XX:XX:XX:XX&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Überwachung durch verteilte Agenten in der Wohnung (presenced/lepresenced/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, die auf mehrere oder alle Räume verteilt sind.&lt;br /&gt;
&lt;br /&gt;
Hierfür 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 / lepresenced Programm ausgestattet. Beide Programme sind Perl-Skripte, die als Daemon im Hintergrund laufen und auf Anfragen via Netzwerk warten. Es wird lediglich eine vollständige Perl-Grundinstallation mit Standardmodulen benötigt.&lt;br /&gt;
&lt;br /&gt;
=== Unterschied presenced / lepresenced / collectord ===&lt;br /&gt;
presenced und lepresenced sind Programme, welche in regelmäßigen Abständen nach Bluetooth-Geräten suchen. Sobald ein Gerät, welches vorab definiert wurde, gefunden wird, wechselt der Status des Geräts in FHEM auf Anwesend. Der Unterschied zwischen presenced und lepresenced ist, dass lepresenced insbesondere für [https://de.wikipedia.org/wiki/Bluetooth_Low_Energy Bluetooth-LE-Devices] ist und presenced für &amp;quot;normale&amp;quot; Bluetooth-Geräte. &lt;br /&gt;
&lt;br /&gt;
collectord wiederum ist ein Programm, welches mehrere Pis verbindet und auf allen den aktuellen Status von presenced/lepresenced abfragt. Ist das gesuchte Bluetooth-Gerät auf einem der Pi anwesend, so wird es auch in der definierten Hauptinstanz auf anwesend gesetzt. Zusätzlich wird der Pi auf dem das Gerät gefunden wurde als Reading angegeben. Sofern alle Räume einen Empfangspegel (RSSI) ermitteln können, wird bei mehreren anwesenden Räumen der Raum mit dem besten Empfangspegel selektiert (siehe {{Link2Forum|Topic=54482}}).&lt;br /&gt;
&lt;br /&gt;
=== Installation von (le)presenced ===&lt;br /&gt;
Diese Anleitung ist sowohl für presenced, als auch für lepresenced gültig. Einfachheitshalber wird nur lepresenced erwähnt, sämtliche Schritte gehen jedoch auch mit presenced, wobei einfach die genannten Daten durch presenced ersetzt werden müssen.&lt;br /&gt;
&lt;br /&gt;
Die Software lepresenced kann aktuell über drei Varianten installiert werden. Dabei ist die bevorzugte Variante (Variante 1) die Installation über das bereitgestellte .deb-Paket.&lt;br /&gt;
Die Variante 2 setzt voraus, dass im FHEM contrib Verzeichnis (/opt/fhem/contrib) die aktuelle Version des .deb-Pakets liegt. Die Variante 3 ist dafür gedacht, wenn man keine .deb-Pakete installieren kann/will oder es aus anderen Gründen nicht funktioniert. Es wird davon abgeraten die Variante 3 zu verwenden. Vollständigkeitshalber wird sie aber aufgeführt.&lt;br /&gt;
&lt;br /&gt;
===== Installation per .deb-Paket =====&lt;br /&gt;
&lt;br /&gt;
Die bevorzugte Variante ist die Installation von lepresenced durch die passenden .deb Pakete.&lt;br /&gt;
{{Randnotiz|RNText=Bei einem Upgrade einer älteren Version reicht es, das neue .deb Paket mit&lt;br /&gt;
:&amp;lt;code&amp;gt;sudo dpkg -i lepresenced-X.XX-X.deb&amp;lt;/code&amp;gt;&lt;br /&gt;
zu aktualisieren}} &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.Variante:&#039;&#039;&#039;&lt;br /&gt;
Herunterladen der aktuellen lepresenced-0.83-3.deb (Stand August 2017) Datei über den Webbrowser &lt;br /&gt;
[https://svn.fhem.de/trac/export/HEAD/trunk/fhem/contrib/PRESENCE/deb/ SVN-Repository]. Im SVN die passende Datei auswählen und in der folgende Webseite den Link unter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Download in other formats:&lt;br /&gt;
    Original Format &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
anklicken und die Datei herunterladen.&lt;br /&gt;
Die Datei kann jetzt auf den RPi kopiert und mit folgenden Befehlen ausgeführt werden (ggf. Berechtigungen anpassen). &lt;br /&gt;
&lt;br /&gt;
Alternativ per wget Befehl direkt auf den RPi (aktuelle Versionsnummer beachten)&lt;br /&gt;
 https://svn.fhem.de/trac/export/HEAD/trunk/fhem/contrib/PRESENCE/deb/lepresenced-0.83-3.deb&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2.Variante:&#039;&#039;&#039; (zu Verwenden, wenn es Probleme bei Variante 1 gibt)&lt;br /&gt;
Herunterladen aus dem fhem contrib Verzeichnis:&lt;br /&gt;
Hierzu muss das contrib auf dem aktuellen Stand sein. Dazu wird die Installation von subversion (normal bereits vorhanden) benötigt.&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install subversion&lt;br /&gt;
&lt;br /&gt;
Danach kann per &lt;br /&gt;
 sudo svn checkout https://svn.fhem.de/fhem/trunk/fhem/contrib svnrepo&lt;br /&gt;
&lt;br /&gt;
Das aktuelle Repository auf den Pi heruntergeladen werden. Danach sollte im gewählten Verzeichnis die eingecheckten Dateien verfügbar sein.&lt;br /&gt;
 /opt/fhem/svnrepo/PRESENCE/deb  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Installation der Variante 1 oder 2 &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Egal welche Variante gewählt wurde, nun kann mit folgenden Befehlen das Paket installiert werden. Bitte Pfade ggf. anpassen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtig&#039;&#039;&#039;: Das &#039;&#039;&#039;Paket&#039;&#039;&#039; hat eine ca. Größe von &#039;&#039;&#039;6,5Kb&#039;&#039;&#039;. Ab und an gibt es wohl Probleme mit der Installation, wodurch die Datei 11,5kb groß wird.&lt;br /&gt;
Diese Datei lässt sich nicht Installieren. In diesem Fall das Paket bitte mit der Variante 1 und dem Bereich &amp;quot;Download in other formats&amp;quot; herunterladen.&lt;br /&gt;
&lt;br /&gt;
 sudo dpkg -i lepresenced-0.83-3.deb&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get -f install&lt;br /&gt;
&lt;br /&gt;
Die Ausgabe der Installation sollte am Ende ein [ ok ] Starting lepresenced (via systemctl): lepresenced.service. ausgeben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Paketlisten werden gelesen... Fertig&lt;br /&gt;
Abhängigkeitsbaum wird aufgebaut.       &lt;br /&gt;
Statusinformationen werden eingelesen.... Fertig&lt;br /&gt;
Abhängigkeiten werden korrigiert ... Fertig&lt;br /&gt;
Die folgenden zusätzlichen Pakete werden installiert:&lt;br /&gt;
  bluez-hcidump&lt;br /&gt;
Die folgenden NEUEN Pakete werden installiert:&lt;br /&gt;
  bluez-hcidump&lt;br /&gt;
0 aktualisiert, 1 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.&lt;br /&gt;
1 nicht vollständig installiert oder entfernt.&lt;br /&gt;
Es müssen 157 kB an Archiven heruntergeladen werden.&lt;br /&gt;
Nach dieser Operation werden 490 kB Plattenplatz zusätzlich benutzt.&lt;br /&gt;
Möchten Sie fortfahren? [J/n]&lt;br /&gt;
Holen: 1 http://archive.raspberrypi.org/debian/ jessie/main bluez-hcidump armhf 5.23-2+rpi2 [157 kB]&lt;br /&gt;
Es wurden 157 kB in 0 s geholt (921 kB/s).&lt;br /&gt;
Vormals nicht ausgewähltes Paket bluez-hcidump wird gewählt.&lt;br /&gt;
(Lese Datenbank ... 42033 Dateien und Verzeichnisse sind derzeit installiert.)&lt;br /&gt;
Vorbereitung zum Entpacken von .../bluez-hcidump_5.23-2+rpi2_armhf.deb ...&lt;br /&gt;
Entpacken von bluez-hcidump (5.23-2+rpi2) ...&lt;br /&gt;
Trigger für man-db (2.7.0.2-5) werden verarbeitet ...&lt;br /&gt;
bluez-hcidump (5.23-2+rpi2) wird eingerichtet ...&lt;br /&gt;
lepresenced (0.82-1) wird eingerichtet ...&lt;br /&gt;
[ ok ] Starting lepresenced (via systemctl): lepresenced.service.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3.Variante:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Bei dieser Variante wird das aktuellste lepresenced Skript aus github heruntergeladen. Das bedeutet, dass jegliche Konfiguration wie automatischer Start, Berechtigungen etc. &lt;br /&gt;
manuell konfiguriert werden muss. Diese Variante eignet sich nur für diejenigen, die keine .deb-Pakete installieren wollen/können oder die genau Wissen, was sie tun!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
https://github.com/mhop/fhem-mirror/blob/master/fhem/contrib/PRESENCE/lepresenced&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zur &amp;quot;Installation&amp;quot; des Skripts folgendermaßen vorgehen:&lt;br /&gt;
Unter /fhem manuell den Ordner „script“ anlegen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir script&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Datei lepresenced reinkopieren und ausführbar machen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo chmod +x /opt/fhem/script/lepresenced&lt;br /&gt;
sudo chgrp -cR dialout lepresenced&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Skript erstmalig starten:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo ./lepresenced --loglevel LOG_EMERG -d&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Kommt beim Starten des Skript eine Fehlermeldung, müssen die Abhängigkeiten aufgelöst werden.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Can&#039;t locate Net/Server/Daemonize.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 / usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl .) at /opt/fhem/lepresenced line 17.&lt;br /&gt;
BEGIN failed--compilation aborted at /opt/fhem/lepresenced line 17.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Um die Abhängigkeiten aufzulösen muss folgendes nachinstalliert werden und anschließend ein Reboot durchgeführt werden.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get install libnet-server-*&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Einrichtung eines Bluetooth-Geräts über FHEM =====&lt;br /&gt;
&lt;br /&gt;
Nach dem letzten Schritt sind alle Bedingungen für eine abschließende Konfiguration eines BT-Geräts in FHEM abgeschlossen worden.&lt;br /&gt;
Jetzt kann der zum Beispiel ein G-Tag dem FHEM-Server bekannt gemacht werden:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   --   Name       Modul    Modus         MAC vom Gtag  IP vom PI Port    Abfragezeit in Sekunden&lt;br /&gt;
define MeinGtAG PRESENCE lan-bluetooth xx:xx:xx:xx:xx:xx 127.0.0.1:5333    120&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtig ist den angegeben Port zu unterscheiden. Für presenced muss der Port 5111 genommen werden, für lepresenced der Port 5333.&#039;&#039;&#039;&lt;br /&gt;
Den absent und present Mode kann man einfach testen, in dem man den Gtag mit Alufolie einwickelt.&lt;br /&gt;
&lt;br /&gt;
Diese Variante sollte eingesetzt werden, wenn nur ein Pi nach Bluetooth-Geräten sucht. Möchte man mehr als ein Gerät nutzen um zum Beispiel eine größere Fläche abzudecken so muss mit collectored gearbeitet werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Alle Räume gemeinsam ansprechen mittels collectord ===&lt;br /&gt;
Um zwei presenced- oder lepresenced Installationen zu verbinden wird der collectord Daemon von Markus Bloch benötigt. 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 einschließlich der Angabe des Raumes, in dem das Gerät erkannt wurde.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:Presence_Collectord_Uebersicht.jpg|200px|thumb|left|Schematische Darstellung Presence und Collectord, Danke an dtavb]]&lt;br /&gt;
Auf Basis folgender Skizze wird die Einrichtung und der Betrieb der Anwesenheitserkennung und Überwachung &amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
mit dem PRESENCE-Modul sowie dem Skript (.deb-Paket) lepresenced beschrieben. Zusätzlich wird für die Verbindung &amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
mehrere lepresenced Instanzen der collectord verwendet.&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
Diese Skizze dient als Basis für alle genannten Konfigurationen innerhalb dieses Artikels.&lt;br /&gt;
{{NeuerTextBlock}}&lt;br /&gt;
&lt;br /&gt;
==== Aufbau ====&lt;br /&gt;
; RPi1 (Hauptinstanz): &lt;br /&gt;
: FHEM Installation&lt;br /&gt;
: presence/lepresenced Installation &lt;br /&gt;
: collectord installation&lt;br /&gt;
: Sämtliche Bluetooth-Geräte in FHEM definiert&lt;br /&gt;
; RPi2 (Zweitsystem): &lt;br /&gt;
: FHEM installation&lt;br /&gt;
: presence/lepresenced Installation&lt;br /&gt;
: Sämtliche Bluetooth-Geräte in FHEM definiert&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Installation per .deb-Paket ====&lt;br /&gt;
collectord wird heruntergeladen und installiert:&lt;br /&gt;
https://svn.fhem.de/trac/export/HEAD/trunk/fhem/contrib/PRESENCE/deb/collectord-1.8.deb (Stand Januar 2018)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo dpkg -i collectord-1.8.deb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nach der Installation befindet sich im Verzeichnis: /etc/collectord.conf die Konfigurationsdatei für das collectord. Weitere Einstellungen können unter /etc/default/collectord vorgenommen werden.&lt;br /&gt;
&lt;br /&gt;
==== Konfiguration auf Shellebene ==== &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo vi /etc/collectord.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Datei muss jetzt nach folgender Vorlage angepasst werden.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# room definition&lt;br /&gt;
#[room-name]              # name of the room&lt;br /&gt;
#address=192.168.0.10     # ip-address or hostname&lt;br /&gt;
#port=5111                # tcp port which should be used (5111 is default)&lt;br /&gt;
#presence_timeout=120     # timeout in seconds for each check when devices are present&lt;br /&gt;
#absence_timeout=20       # timeout in secondsfor each check when devices are absent&lt;br /&gt;
&lt;br /&gt;
[RPi1] 			          # Name (wird als Reading room bei den BT-Tags angezeigt) der presence Instanze&lt;br /&gt;
address=127.0.0.1 	          # Lokale Adresse RPi1 , da hier das Collectord später laufen soll!&lt;br /&gt;
port=5333		          # Port der Presence Installation &lt;br /&gt;
presence_timeout=60		  # Selbstgewaelte Pruefintervalle&lt;br /&gt;
absence_timeout=60		  # Selbstgewaelte Pruefintervalle&lt;br /&gt;
&lt;br /&gt;
[RPi2]  		          # Name (wird als Reading room bei den BT-Tags angezeigt) der presence Instanze&lt;br /&gt;
address=192.168.178.127	          # IP-Adresse der Instanz, wo nur das Presence laueft, also RPi2&lt;br /&gt;
port=5333		          # Port der Presence Installation &lt;br /&gt;
presence_timeout=60		  # Selbstgewaelte Pruefintervalle&lt;br /&gt;
absence_timeout=60		  # Selbstgewaelte Pruefintervalle&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hinweis: &lt;br /&gt;
* Es dürfen keine [Namen] mit Leerzeichen verwendet werden&lt;br /&gt;
* Der angegebene Port richtet sich danach, ob auf dem Pi presenced (Port 5111) oder lepresenced (Port 5333) nach dem Bluetooth-Gerät sucht&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Konfiguration in FHEM ==== &lt;br /&gt;
;RPi1&lt;br /&gt;
 define Gtag PRESENCE lan-bluetooth XX:XX:XX:XX:XX:XX 127.0.0.1:5222 60           &#039;&#039;Hinweis: (Der Port ist der, des collectord!! Standard 5222)&#039;&#039;&lt;br /&gt;
;RPi2&lt;br /&gt;
 define Gtag PRESENCE lan-bluetooth XX:XX:XX:XX:XX:XX 192.168.178.127:5222 60     &#039;&#039;Hinweis: (Der Port ist der, des collectord!! Standard 5222 - die IP-Adresse von die von RPi1)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nach der Konfiguration kann der Daemon gestartet werden.&lt;br /&gt;
Sobald das Bluetoothgerät irgendwo in der Wohnung erkannt wurde, meldet der Collectord dies sofort &lt;br /&gt;
an FHEM und teilt den Raum mit in dem es erkannt worden ist. Diese Information wird im Reading &amp;quot;rooms&amp;quot; des jeweiligen BT-Gerätes dargestellt.&lt;br /&gt;
&lt;br /&gt;
Zum testen sollte collectord einmalig manuell gestartet werden. Dies hat den Vorteil, dass man nochmal den Port des collectord prüfen kann, dieser steht in der Zeile &amp;lt;pre&amp;gt;created socket on 0.0.0.0 with port 5222&amp;lt;/pre&amp;gt; und man sehen kann, ob der collectord richtig startet, oder Fehler auswirft. Gestartet wird mit folgendem Kommando:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo collectord -vv -c /etc/collectord.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Die Ausgabe sieht wie folgt aus:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2017-04-02 17:52:55 - =================================================&lt;br /&gt;
2017-04-02 17:52:55 - started with PID 15554&lt;br /&gt;
2017-04-02 17:52:55 - reading configuration file&lt;br /&gt;
2017-04-02 17:52:55 - no config errors found&lt;br /&gt;
2017-04-02 17:52:56 - created socket on 0.0.0.0 with port 5222&lt;br /&gt;
2017-04-02 17:53:20 - new connection from 127.0.0.1:48656&lt;br /&gt;
2017-04-02 17:53:20 - created thread 1 for processing device 7C:2F:80:E1:14:31 in room RPi2 for peer 127.0.0.1 (UUID: d0beb79dd4771532eb5e207c7bf31788)&lt;br /&gt;
2017-04-02 17:53:20 - created thread 2 for processing device 7C:2F:80:E1:14:31 in room RPi1 for peer 127.0.0.1 (UUID: d0beb79dd4771532eb5e207c7bf31788)&lt;br /&gt;
2017-04-02 17:53:20 - new connection from 127.0.0.1:48662&lt;br /&gt;
2017-04-02 17:53:20 - new connection from 127.0.0.1:48664&lt;br /&gt;
2017-04-02 17:53:20 - created thread 3 for processing device 7C:2F:80:ED:BC:F7 in room RPi2 for peer 127.0.0.1 (UUID: 7495a112063d5db45e6335d3fe305e36)&lt;br /&gt;
2017-04-02 17:53:20 - created thread 4 for processing device 7C:2F:80:ED:BC:F7 in room RPi1 for peer 127.0.0.1 (UUID: 7495a112063d5db45e6335d3fe305e36)&lt;br /&gt;
2017-04-02 17:53:20 - created thread 5 for processing device 7C:2F:80:E1:2A:4D in room RPi2 for peer 127.0.0.1 (UUID: c228f8d4d33b06787f995c7903c02760)&lt;br /&gt;
2017-04-02 17:53:20 - created thread 6 for processing device 7C:2F:80:E1:2A:4D in room RPi1 for peer 127.0.0.1 (UUID: c228f8d4d33b06787f995c7903c02760)&lt;br /&gt;
2017-04-02 17:53:22 - new connection from 192.168.xxx.xxx:51638&lt;br /&gt;
2017-04-02 17:53:22 - created thread 7 for processing device 7C:2F:80:E1:14:31 in room RPi2 for peer 192.168.xxx.xxx (UUID: 5db7012e709d6dc2fcd8159fc0344e40)&lt;br /&gt;
2017-04-02 17:53:22 - created thread 8 for processing device 7C:2F:80:E1:14:31 in room RPi1 for peer 192.168.xxx.xxx (UUID: 5db7012e709d6dc2fcd8159fc0344e40)&lt;br /&gt;
2017-04-02 17:53:22 - new connection from 192.168.xxx.xxx:51640&lt;br /&gt;
2017-04-02 17:53:22 - created thread 9 for processing device 7C:2F:80:ED:BC:F7 in room RPi2 for peer 192.168.xxx.xxx (UUID: c4b4d7c654132cf88e8c1fec3a956d3d)&lt;br /&gt;
2017-04-02 17:53:23 - created thread 10 for processing device 7C:2F:80:ED:BC:F7 in room RPi1 for peer 192.168.xxx.xxx (UUID: c4b4d7c654132cf88e8c1fec3a956d3d)&lt;br /&gt;
2017-04-02 17:53:29 - new connection from 192.168.xxx.xxx:51642&lt;br /&gt;
2017-04-02 17:53:29 - created thread 11 for processing device 7C:2F:80:E1:2A:4D in room RPi2 for peer 192.168.xxx.xxx (UUID: ecd7081e5ae3a0d8e735c8750cb116a1)&lt;br /&gt;
2017-04-02 17:53:29 - created thread 12 for processing device 7C:2F:80:E1:2A:4D in room RPi1 for peer 192.168.xxx.xxx (UUID: ecd7081e5ae3a0d8e735c8750cb116a1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn das Log wie oben abgebildet aussieht wurde alles richtig gemacht und unter dem Device in FHEM erscheint ein neues Reading &amp;quot;rooms&amp;quot; mit dem Wert der erkannten PRESENCE-Installation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Verhalten presence timeout im zusammenhang mit dem Attribut &amp;quot;absenceThreshold&amp;quot; der PRESENCE Konfiguration in FHEM&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
In der collectord.conf sind &amp;lt;code&amp;gt;presence_timeout&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;absence_timeout&amp;lt;/code&amp;gt; für den jeweiligen Raum konfiguriert.&lt;br /&gt;
Das bedeutet, sobald irgendein Gerät in diesem jeweiligen Raum anwesend/abwesend ist, wird das jeweilige Timeout an den verbundenen presenced/lepresenced geschickt um damit das Check-Interval entsprechend zu ändern.&lt;br /&gt;
&lt;br /&gt;
In der PRESENCE-Definition kann man ebenfalls ein &amp;lt;code&amp;gt;absence_timeout&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;presence_timeout&amp;lt;/code&amp;gt; setzen. Sobald sich der Zustand ändert, wird auch das jeweilige Timeout an den collectord gesandt. Dies hat aber auf die Checks in den jeweiligen Räumen und damit der collectord.conf keinen Einfluss. Der collectord schickt ein Statusupdate an PRESENCE nur, wenn das vorgegebene Timeout (von PRESENCE) erreicht ist und keine Statusänderung stattfand. Sobald eine Änderung des Status erfolgt wird natürlich sofort der Status an PRESENCE geschickt.&lt;br /&gt;
&lt;br /&gt;
Das Attribut absenceThreshold/presenceThreshold funktioniert nachwievor. Hier ist nur wichtig wie man die Timeouts sowohl in PRESENCE als auch collectord.conf setzt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Das Reading &amp;quot;room&amp;quot; bei einer PRESENCE Definition und der Zusammenhang zu collectord&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn ein BT LE Empfänger in mehr als einem Raum detektiert wird, führt der collectord (ab Version 1.8) eine RSSI-Erkennung durch. Sofern alle Räume den Empfangspegel (RSSI) ermitteln können, wird der Raum mit dem besten Empfangspegel als Raum für das &amp;quot;room&amp;quot;-Reading ausgewählt. Der lepresenced in aktueller Version von PatrickR gibt immer den Empfangspegel aus.&lt;br /&gt;
&lt;br /&gt;
====  Automatischer Start ====&lt;br /&gt;
Wenn der collectord per .deb Paket installiert wurde, startet er automatisch bei einem Reboot mit (via systemd/init-Skript).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Collectord wird standardmäßig mit dem Port 5222 gestartet. Um diese anzupassen sind zwei Schritte notwendig:&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;1.)&#039;&#039;&#039; Anpassen der /usr/bin/collectord &lt;br /&gt;
    Hier bitte den Parameter my $opt_p von 5222 auf 5XXX abändern.&lt;br /&gt;
&lt;br /&gt;
Da der collectord mittlerweile per systemd beim reboot des RPi gestarte wird muss auch diese Konfiguration auf den neuen Port angepasst werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2.)&#039;&#039;&#039; Anpassen der /etc/default/collectord&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# collectord startup defaults:&lt;br /&gt;
# The TCP port collectord will listen for incoming connections (default: 5222)&lt;br /&gt;
PORT=5111&lt;br /&gt;
# The location of the configuration file (default: /etc/collectord.conf&lt;br /&gt;
CFGFILE=/etc/collectord.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Manuell starten als Daemon (Parameter &amp;lt;code&amp;gt;-d&amp;lt;/code&amp;gt;) mit:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo collectord -c /etc/collectord.conf -d -v -l /var/log/collectord.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Batterieüberwachung ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Batterieüberwachung mit dem Modul BleTagBattery ===&lt;br /&gt;
{{Infobox Modul&lt;br /&gt;
|ModPurpose=Anwesenheitserkennung&lt;br /&gt;
|ModType=h&lt;br /&gt;
&amp;lt;!-- |ModCmdRef= --&amp;gt;&lt;br /&gt;
|ModTechName=74_BleTagBattery&lt;br /&gt;
|ModOwner=mumpitzstuff&lt;br /&gt;
}}&lt;br /&gt;
Mit dem Modul BleTagBattery - können die Batteriestati aller BT-LE Devices gelesen werden.&lt;br /&gt;
Es wird das batteryLevel und battery angelegt welches als BT-LE Tags an einer PRESENCE-Installation registriert wurden.&lt;br /&gt;
&lt;br /&gt;
Vorraussetzung und Installation:&lt;br /&gt;
&lt;br /&gt;
Bluez und Gattool&lt;br /&gt;
 sudo apt-get install bluez&lt;br /&gt;
&lt;br /&gt;
Das Gattool ist in den Installationen von Bluez inbegriffen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hinzufügen des githup für das Modul&lt;br /&gt;
 update add http://raw.githubusercontent.com/mumpitzstuff/fhem-BleTagBattery/master/controls_bletagbattery.txt&lt;br /&gt;
 update all&lt;br /&gt;
 restart fhem: shutdown restart&lt;br /&gt;
 BT-LE tags muss an einer PRESENCE-Installation des type &amp;quot;lan-bluetooth&amp;quot; registriert sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nach dem Neustart von FHEM kann das Modul definiert werden:&lt;br /&gt;
 define a new device: define &amp;lt;name of device&amp;gt; BleTagBattery&lt;br /&gt;
&lt;br /&gt;
Das Modul versucht in der Standardkonfiguration alle 6 Stunden die BT-LE Devices zu erreichen und das Reading batteryLevel und battery zu aktualisieren.&lt;br /&gt;
Das Update kann auch manuell mit dem folgenden Befehl erzwungen werden&lt;br /&gt;
&lt;br /&gt;
 set &amp;lt;name of device&amp;gt; statusRequest.&lt;br /&gt;
&lt;br /&gt;
Weiter Informationen und Disskussionen können dem eigentlichen [https://forum.fhem.de/index.php?topic=68104.0 Forumsbeitrag] entnommen werden,&lt;br /&gt;
&lt;br /&gt;
=== Batterieüberwachung (aktuell nur G-Tags) ===&lt;br /&gt;
&lt;br /&gt;
Leider überträgt der G-Tag nach der Einrichtung als Device in FHEM kein Reading mit seinem aktuellen Batteriestatus.&lt;br /&gt;
Dem wurde mit Hilfe des Forum Abhilfe geschaffen.&lt;br /&gt;
Im Folgenden wird erläutert wie die Batterieüberwachung eingerichtet werden kann.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Voraussetzung:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
bc - Basiscalculator [https://packages.debian.org/de/sid/bc Bc-Paket]&lt;br /&gt;
&amp;lt;pre&amp;gt; sudo apt-get install bc &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anlegen eines Shellskript auf dem Raspberry System. &lt;br /&gt;
Die Parameter &amp;lt;&amp;lt;MAC-Adresse&amp;gt;&amp;gt; und &amp;lt;&amp;lt;TagName&amp;gt;&amp;gt; müssen durch die Werte des auszulesenden G-Tags ersetzt werden.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
stringZ=$(sudo gatttool -b 5C:2B:80:C1:14:41 --char-read --handle=0x001b)&lt;br /&gt;
stringZ=${stringZ:33:2}&lt;br /&gt;
stringZ=$(echo &amp;quot;$stringZ&amp;quot; | tr a-f A-F)&lt;br /&gt;
decimal=$(echo &amp;quot;ibase=16; $stringZ&amp;quot; | bc)&lt;br /&gt;
perl /opt/fhem/fhem.pl 7072 &amp;quot;setreading MeinGtag Batterie $decimal&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dem Device in FHEM (hier MeinGtag) ein userReading mit dem Namen &#039;&#039;&#039;Batterie&#039;&#039;&#039; hinzufügen.&lt;br /&gt;
Das Shellskript mit folgendem Befehl starten:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./GtagBatterie.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Wichtig ist hierbei,&#039;&#039;&#039; dass Skript mit &amp;quot;./&amp;quot; und nicht mit &amp;quot;sh&amp;quot; aufzurufen. Beim Aufruf mit &amp;quot;sh GtagBatterie.sh&amp;quot; produziert es einen Fehler&lt;br /&gt;
&amp;lt;pre&amp;gt;GtagBatterie.sh: 3: GtagBatterie.sh: Bad substitution &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Reading wird auf den ausgelesenen Wert der Batterie gesetzt. &lt;br /&gt;
&lt;br /&gt;
Hinweis: Es sollte für jeden G-Tag ein eigenes Skript abgelegt werden. Das Skript kann per crontab oder fhem Kommando (system) regelmäßig aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
=== Batterieüberwachung (alle Devices vom Typ &amp;quot;MODE=lan-bluetooth&amp;quot;) ===&lt;br /&gt;
&lt;br /&gt;
Es gibt eine weitere Möglichkeit um den Batteriestatus von LE Devices abzurufen und in FHEM als Reading darzustellen.&lt;br /&gt;
Dabei wird der Batteriezustand für alle LE Devices, die bereits in FHEM konfiguriert sind und per lepresenced überwacht werden, automatisch in einem shell-Script ermittelt.&lt;br /&gt;
Näheres dazu im Forumartikel {{Link2Forum|Topic=56960|LinkText=Erweiterung: Anwesenheitserkennung/Batterieüberwachung}}.&lt;br /&gt;
&lt;br /&gt;
Vorteile:&lt;br /&gt;
* Automatische Ermittlung aller in FHEM konfigurierten LE Devices&lt;br /&gt;
* Möglichkeit, diese Devices alternativ manuell im Script einzutragen&lt;br /&gt;
* Es werden nur Devices abgefragt, die im Status &amp;quot;present&amp;quot; sind, also mit ziemlicher Sicherheit auch verfügbar sind&lt;br /&gt;
* Ein eventuell auf dem FHEM telnet-Port gesetztes Passwort kann im Script hinterlegt werden&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Voraussetzung:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Funktionierendes lepresenced&#039;&#039;&#039; - siehe [[Anwesenheitserkennung#Anleitung_f.C3.BCr_ein_LE_Device_.28z.B._Gtags.2CPebbles_etc..29|Anleitung für ein LE Device (z.B. Gtags,Pebbles etc.)]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;socat&#039;&#039;&#039; - TCP port forwarder&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get update &amp;amp;&amp;amp; sudo apt-get install socat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;gawk&#039;&#039;&#039; - Zum extrahieren der Daten&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get update &amp;amp;&amp;amp; sudo apt-get install gawk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;gatttool&#039;&#039;&#039; - Bestandteil von bluez &lt;br /&gt;
&lt;br /&gt;
gatttool ist auf den meisten Distributionen im bluez-Paket, allerdings nicht bei Opensuse. Dort muss man das Sourcepaket von bluez installieren und selbst kompilieren.&lt;br /&gt;
gatttool sollte dann nach /usr/bin oder /usr/local/bin kopiert werden,&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zusätzlich zu den notwendigen Erweiterungen werden für die Ausführung von gatttool &#039;&#039;&#039;Root-Rechte benötigt&#039;&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
Das Script selbst gibt es hier: [https://raw.githubusercontent.com/micky0867/lebattery/master/lebattery lebattery]&lt;br /&gt;
&lt;br /&gt;
Am Besten unter /opt/fhem/script/lebattery speichern und ausführbar machen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo su -&lt;br /&gt;
mkdir /opt/fhem/script&lt;br /&gt;
cd /opt/fhem/script&lt;br /&gt;
wget https://raw.githubusercontent.com/micky0867/lebattery/master/lebattery&lt;br /&gt;
chmod 755 lebattery&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Je nach Bedarf können im Script noch die folgenden 3 Parameter angepasst werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# If allowed_telnetPort is protected by a password, add the password here&lt;br /&gt;
TELNETPASSWORD=&amp;quot;&amp;quot;&lt;br /&gt;
# Attribute for batterylevel in FHEM&lt;br /&gt;
ATTRIBUT=&amp;quot;batterylevel&amp;quot;&lt;br /&gt;
# Use this, if you dont want the script to determine the tags on its own&lt;br /&gt;
LETAGS=&amp;quot;&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Skript wird dann unter root folgendermaßen gestartet:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/opt/fhem/script/lebattery -v&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ausgabe des Skripts, wenn es mit dem Verbose Parameter -v gestartet wird.&lt;br /&gt;
&lt;br /&gt;
Beide Devices sind vom Typ NUT mini, das Device mit dem FHEM-Namen &#039;&#039;&#039;nut_Micky&#039;&#039;&#039; ist im Status &#039;&#039;&#039;absent&#039;&#039;&#039;. Das zweite Device ist im Status &#039;&#039;&#039;present&#039;&#039;&#039;.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Determining address for nut_Micky ...&lt;br /&gt;
nut_Micky is in state absent, no further action required&lt;br /&gt;
&lt;br /&gt;
Determining address for nut_Test ...&lt;br /&gt;
Fetching batterylevel for nut_Test (F3:44:04:81:54:89) ...&lt;br /&gt;
Setting batterylevel for nut_Test to 100%&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mein crontab-Eintrag (User root) sieht so aus:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
3 3  * * * /opt/fhem/script/lebattery -v &amp;gt;/opt/fhem/script/lebattery.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Damit wird jeden Morgen um 3 Minuten nach 3 Uhr der Zustand der Batterien aller Devices ermittelt und in FHEM abgespeichert.&amp;lt;br&amp;gt; &lt;br /&gt;
Bevor man das mit crontab macht, sollte man allerdings zunächst sicher stellen, dass es auch ohne crontab funktioniert....&lt;br /&gt;
&lt;br /&gt;
Bei Problemen kann man auch erstmal schauen, ob das mit dem gattool überhaupt funktioniert:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gatttool -t &amp;lt;Typ&amp;gt; -b &amp;lt;MAC-Adresse&amp;gt; --char-read --uuid 0x2a19&lt;br /&gt;
&lt;br /&gt;
handle: 0x0017 	 value: 64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In diesem Fall hat die Batterie noch 100% (hex 64).&amp;lt;br&amp;gt;&lt;br /&gt;
Der Typ ist abhängig vom Hersteller und kann public (G-Tags) bzw. random (Nut) sein. Im Zweifelsfall beides ausprobieren.&lt;br /&gt;
&lt;br /&gt;
= Beispiele =&lt;br /&gt;
==  Anwesenheitserkennung / Anwesenheitsbenachrichtigung mit G-Tags ==&lt;br /&gt;
Ein Skript zur Nutzung der Gigaset G-TAGs zur Alarmierung bei öffnen und schließen von Türen und zur Anwesenheitserkennung, um die Alarmierung zu aktivieren bzw. deaktivieren. &lt;br /&gt;
Es kann verwendet werden um die Anwesenheit von mehrern Personen im Haushalt zu erkennen. Dabei wird eingeschränkt, dass nur bestimmte Personen die Alarmierung aktivieren können ( Eltern/Kind -Beziehung ).&lt;br /&gt;
Des Weiteren werden im Beispiel die Eltern benachrichtigt wenn eins der Kinder das Haus verlässt und die Eltern nicht anwesend sind.&lt;br /&gt;
&lt;br /&gt;
{{Randnotiz|RNText=Namen der G-Tags in den Skripten bitte anpassen!}}&lt;br /&gt;
&lt;br /&gt;
Für die &#039;&#039;Notify&#039;&#039; und die &#039;&#039;RESIDENTS-Erweiterung&#039;&#039; wird ein Dummy benötigt.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Alarm dummy&lt;br /&gt;
attr Alarm devStateIcon aktiv:secur_locked@red inaktiv:secur_open@lightgreen&lt;br /&gt;
attr Alarm eventMap on:aktiv off:inaktiv&lt;br /&gt;
attr Alarm setList on off&lt;br /&gt;
attr Alarm webCmd aktiv:inaktiv&lt;br /&gt;
attr Alarm room Alarm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mit Notify ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gtag.*.presence:.* {Anwesenheit_check(&amp;quot;$EVTPART1&amp;quot;, &amp;quot;$NAME&amp;quot;)}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Code für die 99_myUtils.pm&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
### GTAG ANWESENHEITS CHECK&lt;br /&gt;
sub Anwesenheit_check($$) {&lt;br /&gt;
my ($EVENT, $NAME) = @_;&lt;br /&gt;
&lt;br /&gt;
# gtag_rot	-	Alias Marco&lt;br /&gt;
# gtag_schwarz	-	Alias Ulli&lt;br /&gt;
# gtag_gruen	-	Alias Frida&lt;br /&gt;
# gtag_orange	-	Alias Hannah&lt;br /&gt;
&lt;br /&gt;
my $RESIDENT = &amp;quot;rr_&amp;quot;; # Alle GTAGs sind Standardmäßig Residents Roommate&lt;br /&gt;
# $RESIDENT = &amp;quot;rg_&amp;quot; if (($NAME eq &amp;quot;gtag_orange&amp;quot;) xor ($NAME eq &amp;quot;gtag_weis&amp;quot;)); # Hier nur Gäste (Roomguest) Auskommentiert, da ich es so nicht brauche&lt;br /&gt;
my $ROOMMATE = (&amp;quot;$RESIDENT&amp;quot; . &amp;quot;$NAME&amp;quot;); # Residentsname zusammenbauen&lt;br /&gt;
my $ALIASNAME = AttrVal($ROOMMATE,&#039;alias&#039;,$ROOMMATE); # ALIAS des Roommates auslesen&lt;br /&gt;
&lt;br /&gt;
my $GTAG1 = Value(&#039;gtag_rot&#039;); # ELTERN&lt;br /&gt;
my $GTAG2 = Value(&#039;gtag_schwarz&#039;); # ELTERN&lt;br /&gt;
&lt;br /&gt;
my $STATUS = &amp;quot;wahrscheinlich gerade los&amp;quot;;&lt;br /&gt;
$STATUS = &amp;quot;anwesend&amp;quot; if ($EVENT eq &amp;quot;present&amp;quot;); # Status: anwesend&lt;br /&gt;
$STATUS = &amp;quot;unterwegs&amp;quot; if ($EVENT eq &amp;quot;absent&amp;quot;); # Status: unterwegs&lt;br /&gt;
&lt;br /&gt;
Log 1, &amp;quot;$ALIASNAME ist $STATUS.&amp;quot;; # LOG Eintrag erzeugen&lt;br /&gt;
&lt;br /&gt;
if (($EVENT eq &amp;quot;present&amp;quot; &amp;amp;&amp;amp; Value(&amp;quot;Alarm&amp;quot;) eq &amp;quot;aktiv&amp;quot;) &amp;amp;&amp;amp; ($NAME eq &amp;quot;gtag_gruen&amp;quot; xor $NAME eq &amp;quot;gtag_orange&amp;quot;)) {&lt;br /&gt;
 fhem(&amp;quot;set teleBot send ALARMIERUNG BLEIBT AKTIV: $ALIASNAME ist da...&amp;quot;); # Telegram&lt;br /&gt;
# fhem(&amp;quot;set Infopush msg &#039;ALARMIERUNG BLEIBT AKTIV&#039; &#039;$ALIASNAME ist da...&#039;&amp;quot;); # Pushover&lt;br /&gt;
 }&lt;br /&gt;
 elsif (($EVENT eq &amp;quot;present&amp;quot; &amp;amp;&amp;amp; Value(&amp;quot;Alarm&amp;quot;) eq &amp;quot;aktiv&amp;quot;) &amp;amp;&amp;amp; ($NAME eq &amp;quot;gtag_rot&amp;quot; xor $NAME eq &amp;quot;gtag_schwarz&amp;quot;)) {&lt;br /&gt;
 fhem(&amp;quot;set teleBot send ALARMIERUNG INAKTIV: $ALIASNAME ist da...; set Alarm inaktiv&amp;quot;); # Telegram&lt;br /&gt;
# fhem(&amp;quot;set Infopush msg &#039;ALARMIERUNG INAKTIV&#039; &#039;$ALIASNAME ist da...&#039;; set Alarm inaktiv&amp;quot;); # Pushover&lt;br /&gt;
 }&lt;br /&gt;
 elsif (($EVENT eq &amp;quot;absent&amp;quot; &amp;amp;&amp;amp; Value(&amp;quot;Alarm&amp;quot;) eq &amp;quot;aktiv&amp;quot;) &amp;amp;&amp;amp; ($NAME eq &amp;quot;gtag_gruen&amp;quot; xor $NAME eq &amp;quot;gtag_orange&amp;quot;)) {&lt;br /&gt;
 fhem(&amp;quot;set teleBot send ALARMIERUNG BLEIBT AKTIV: $ALIASNAME hat das Haus verlassen.&amp;quot;); # Telegram&lt;br /&gt;
# fhem(&amp;quot;set Infopush msg &#039;ALARMIERUNG BLEIBT AKTIV&#039; &#039;$ALIASNAME hat das Haus verlassen.&#039;&amp;quot;); # Pushover&lt;br /&gt;
 } 		&lt;br /&gt;
 elsif (($EVENT eq &amp;quot;absent&amp;quot; &amp;amp;&amp;amp; Value(&amp;quot;Alarm&amp;quot;) eq &amp;quot;inaktiv&amp;quot;) &amp;amp;&amp;amp; ($GTAG1 eq &amp;quot;absent&amp;quot; &amp;amp;&amp;amp; $GTAG2 eq &amp;quot;absent&amp;quot;)) {&lt;br /&gt;
 fhem(&amp;quot;set Alarm aktiv; set teleBot send ALARMIERUNG AKTIV: $ALIASNAME hat das Haus verlassen.&amp;quot;); # Telegram&lt;br /&gt;
# fhem(&amp;quot;set Alarm aktiv; set Infopush msg &#039;ALARMIERUNG AKTIV&#039; &#039;$ALIASNAME hat das Haus verlassen.&#039; &#039;&#039; 0 &#039;&#039;&amp;quot;); # Pushover&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mit Notify und Integration des RESIDENTS-MODUL ===&lt;br /&gt;
&lt;br /&gt;
Der hier beschriebene Code erweitert die Funktionen unter dem Punkt 5.93.&lt;br /&gt;
Das Notify muss daher mit der folgenden Zeile erweitert werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Alarm_AnwesenheitCheck notify gtag.*.presence:.* { Anwesenheit_check(&amp;quot;$EVTPART1&amp;quot;, &amp;quot;$NAME&amp;quot;), Anwesenheit_check_resi(&amp;quot;$NAME&amp;quot;) }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zusätzlicher Code für die 99_myUtils.pm um die RESIDENTS Funktion nutzen zu können:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
### RESIDENTS&lt;br /&gt;
sub Anwesenheit_check_resi($) {&lt;br /&gt;
my ($NAME) = @_;&lt;br /&gt;
my $ALIASNAME = AttrVal($NAME,&#039;alias&#039;,$NAME); # ALIASNAME des GTAGs auslesen&lt;br /&gt;
&lt;br /&gt;
my $RESIDENT = &amp;quot;rr_&amp;quot;; # Als Standard sind alle GTAGs Roommates&lt;br /&gt;
$RESIDENT = &amp;quot;rg_&amp;quot; if (($NAME eq &amp;quot;gtag_orange&amp;quot;) xor ($NAME eq &amp;quot;gtag_weis&amp;quot;)); # Hier nur GTAG Namen der Gäste (Roomguest)&lt;br /&gt;
my $ROOMMATE = (&amp;quot;$RESIDENT&amp;quot; . &amp;quot;$ALIASNAME&amp;quot;); # Residentsname zusammenbauen&lt;br /&gt;
&lt;br /&gt;
if (ReadingsVal($NAME,&#039;presence&#039;,$NAME) eq &amp;quot;absent&amp;quot;) {&lt;br /&gt;
 fhem(&amp;quot;set $ROOMMATE absent&amp;quot;); # Resisents Status von Roommates setzen&lt;br /&gt;
 }&lt;br /&gt;
 elsif(ReadingsVal($NAME,&#039;presence&#039;,$NAME) eq &amp;quot;present&amp;quot;) {&lt;br /&gt;
 fhem(&amp;quot;set $ROOMMATE home&amp;quot;); # Resisents Status von Roommates setzen&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mit Notify und Fenster/Tür. -Kontakt Überwachung ===&lt;br /&gt;
&lt;br /&gt;
Erweiterung für die Überwachung von  Fenster/Tür. -Kontakten. Dazu sind zwei weitere Notifys notwendig die auf die Trigger der Kontakte regagieren&lt;br /&gt;
und so eine weitere Funktion in der 99_myUtils.pm ansprechen. Die Notifys triggern auf Kontakte die mit dem Namen Kontakt* beginnen.&lt;br /&gt;
Sollten die eigenen Fenster/Tür. -Kontakt anderen Namen besitzen, müssen die Skripte dementsprechend angepasst werden.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Alarm_Kontaktmeldung notify Kontakt.*:contact:.* {Kontakt_Meldung(&amp;quot;$EVTPART1&amp;quot;, &amp;quot;$NAME&amp;quot;)}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define Alarm_Sabotagealarm notify Kontakt.*.sabotageError:.on {Kontakt_Sabotage(&amp;quot;$EVTPART1&amp;quot;, &amp;quot;$NAME&amp;quot;)}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zusätzlicher Code für die 99_myUtils.pm um die TÜRKONTAKTE-Meldung nutzen zu können:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
### TÜRKONTAKTE-Meldung/Zustand&lt;br /&gt;
sub Kontakt_Meldung($$) {&lt;br /&gt;
my ($EVENT, $NAME) = @_;&lt;br /&gt;
my $ALIASNAME = AttrVal($NAME,&#039;alias&#039;,$NAME);&lt;br /&gt;
Log 1, &amp;quot;$ALIASNAME wurde $EVENT&amp;quot;;&lt;br /&gt;
if (ReadingsVal(&amp;quot;Alarm&amp;quot;, &amp;quot;state&amp;quot;, &amp;quot;on&amp;quot;) eq &amp;quot;on&amp;quot;) {&lt;br /&gt;
fhem(&amp;quot;set teleBot send $ALIASNAME wurde $EVENT&amp;quot;); # Nachricht über Telegram&lt;br /&gt;
# fhem(&amp;quot;set Infopush msg &#039;$ALIASNAME&#039; &#039;$ALIASNAME wurde $EVENT&#039;&amp;quot;); # Nachricht über Pushover&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
### TÜRKONTAKTE-Sabotagealarm&lt;br /&gt;
&lt;br /&gt;
sub Kontakt_Sabotage($$) {&lt;br /&gt;
my ($EVENT, $NAME) = @_;&lt;br /&gt;
my $ALIASNAME = AttrVal($NAME,&#039;alias&#039;,$NAME);&lt;br /&gt;
Log 1, &amp;quot;$ALIASNAME meldet Sabotagealarm&amp;quot;;&lt;br /&gt;
fhem(&amp;quot;set teleBot send Alarm: $ALIASNAME meldet Sabotagealarm&amp;quot;); # Nachricht über Telegram&lt;br /&gt;
# fhem(&amp;quot;set Infopush msg &#039;Alarmanlage&#039; &#039;$ALIASNAME meldet Sabotagealarm&#039; &#039;&#039; 2 &#039; &#039; 60 600 &amp;quot;); # Nachricht über Pushover&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hinweis zur Benutzung / Fehlerhandling ===&lt;br /&gt;
&lt;br /&gt;
Der Alarm dummy hat den Zustand on:off.  Die Bezeichnungen und Namen müssen 1:1 übernommen werden damit das Script funktioniert.&lt;br /&gt;
Andernfalls müssen die Bezeichnungen für z.B. absent:unterwegs und present:anwesend - angepasst werden.&lt;br /&gt;
Die Benachrichtigung kann aktuell per &#039;&#039;Telegram&#039;&#039; sowie &#039;&#039;Pushover&#039;&#039; (&#039;&#039;&#039;Achtung mit zweiterem sind Abokosten verbunden!&#039;&#039;&#039;) realisiert werden.&lt;br /&gt;
Diskussion zum Thema im Forum unter: {{Link2Forum|Topic=64080}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Problemlösungen =&lt;br /&gt;
Falls es &#039;&#039;&#039;Probleme beim Starten des Skripts&#039;&#039;&#039; gibt bzw. man das Skript ohne Reboot des Systems neustarten möchte, kann man dies per kill Befehl erledigen.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ps -ef | grep lepresenced&lt;br /&gt;
sudo kill &amp;lt;pid&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Debuglevel lepresenced setzen:&lt;br /&gt;
{{Randnotiz|RNText=Um Debug-Meldungen zu bekommen (Vorsicht bei SD-Karten-Systemen wie dem RPi) - Hierbei werden die Schreibzyklen auf die SD-Karte erhöht.}}&lt;br /&gt;
&lt;br /&gt;
Der Log Level muss im lepresenced-Skript selbst verändert werden. Um den Log-Level auf INFO/WARNING/DEBUG zu setzen, dass Skript lepresenced mit einem Editor öffnen und die Stellen, wo LOG_WARNING zu finden sind durch den nötigen LOG-Eintrag ersetzen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lepresenced --loglevel LOG_DEBUG&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nur das wichtigste Loggen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lepresenced --loglevel LOG_WARNING&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Keinerlei LOG-Einträge&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lepresenced --loglevel LOG_EMERG&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei &#039;&#039;&#039;Problemen mit der Batterieüberwachung&#039;&#039;&#039; der Tags kann die Pi Firmeware mit folgenden Befehl auf eine ältere Version zurückgesetzt werden.&lt;br /&gt;
Fehlermeldung beim Aufruf des lebattery oder anderen Batterietestskripten:&lt;br /&gt;
&amp;lt;pre&amp;gt;connect: Connection refused (111)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lösung (vorübergehend) &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo rpi-update 8521fd34c8f66b6d109acce943f6e25ec93ec005&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mehr dazu unter: {{Link2Forum|Topic=56960|Message=589165}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Das BT-Device ist ständig &amp;quot;absent&amp;quot;&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Eine Mögliche Lösung kann sein, dass Paket bluez-hcidump zu installieren. Das Werkzeug hcidump erlaubt die Beobachtung von Bluetooth-Aktivität.&lt;br /&gt;
Dies ist nicht notwendig, wenn bereits bluez installiert ist, da dies Teil des bluez Paketes ist&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get install bluez-hcidump&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fehler in Logdateien /var/log/syslog und /var/log/kernel&#039;&#039;&#039;&lt;br /&gt;
 Jul 29 15:08:11 raspberrypi kernel: [ 4905.634211] bt_err_ratelimited: 1 callbacks suppressed&lt;br /&gt;
 Jul 29 15:08:11 raspberrypi kernel: [ 4905.634231] Bluetooth: hci0 advertising data length corrected&lt;br /&gt;
 Jul 29 15:08:12 raspberrypi kernel: [ 4906.647350] Bluetooth: hci0 advertising data length corrected&lt;br /&gt;
 Jul 29 15:08:13 raspberrypi kernel: [ 4907.532081] Bluetooth: hci0 advertising data length corrected&lt;br /&gt;
 Jul 29 15:08:13 raspberrypi kernel: [ 4907.655564] Bluetooth: hci0 advertising data length corrected&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Ursache des Problems ist noch nicht ergründet, allerdings betrifft dies aktuell nur den RPi3. Die Fehlermeldungen werden in verschiedene log&#039;s geschrieben. Darunter maßgeblich &amp;quot;syslog&amp;quot; und &amp;quot;kern.log&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Lösung (vorübergehend)&lt;br /&gt;
Unterbinden der Einträge durch Anlage eines blocklist Eintrag:&lt;br /&gt;
&lt;br /&gt;
 1. Unter &amp;quot;/etc/rsyslog.d&amp;quot; eine Datei erzeugen mit dem Namen &amp;quot;01-blocklist.conf&amp;quot;&lt;br /&gt;
 2. Inhalt: (Die Ausdrücke in den &amp;quot;&amp;quot; sind diejenigen, die aus dem log verschwinden sollen. - bei mir waren es die unten stehenden&amp;quot;)&lt;br /&gt;
    :msg,contains,&amp;quot;Bluetooth: hci0 advertising data length corrected&amp;quot; stop&lt;br /&gt;
    :msg,contains,&amp;quot;bt_err_ratelimited:&amp;quot; stop&lt;br /&gt;
 3. Dienst neu starten &amp;quot;sudo service rsyslog restart&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Weiter Infos werden im offiziellen Thema {{Link2Forum|Topic=28753|Message=499184|LinkText=hier}} diskutiert.&lt;br /&gt;
&lt;br /&gt;
Seit Version 0.82 kann es beim Start zu folgenden Meldungen im Log kommen. &lt;br /&gt;
 Sep 06 16:13:45 raspberrypi systemd[1]: Started lepresenced.&lt;br /&gt;
 Sep 06 16:13:45 raspberrypi lepresenced[16010]: [tid:1] main::bluetooth_scan_thread: Received &#039;Set scan parameters failed: Input/output error&#039;, ...tting...&lt;br /&gt;
 Sep 06 16:13:46 raspberrypi lepresenced[16010]: [tid:1] main::bluetooth_scan_thread: hcitool exited, retrying...&lt;br /&gt;
&lt;br /&gt;
Diese Meldungen können ignoriert werden. Abhilfe schafft sich lepresenced selbst indem es sich resettet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Moderne iPhones und Android Geräte wechseln zum &amp;quot;deep standby&amp;quot; Modus&#039;&#039;&#039;, und werden dann als &amp;quot;abwesend&amp;quot; gemeldet.&lt;br /&gt;
Mittels einer Funktion, die via hping3 Packete an den Geräte senden, um die &amp;quot;wach&amp;quot; zu halten, und dann die MacAdresse ausliest, kann man dieses Problem umgehen. Mehr im Forum [https://forum.fhem.de/index.php/topic,76342.0.html]&lt;br /&gt;
&lt;br /&gt;
= Versionsänderungen lepresenced =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--Version 0.81 (BasisVersion)&lt;br /&gt;
--Version 0.82 (stable  08/2017)&lt;br /&gt;
  -Neue Kommandozeilenoption &amp;quot;--debug&amp;quot;: Startet lepresenced im Vordergrund und gibt ausführliche Debug-Informationen auf STDOUT aus.&lt;br /&gt;
  -Sanity Check: lepresenced prüft beim Starten die Verfügbarkeit von hciconfig, hcitool und hcidump.&lt;br /&gt;
  -Model: lepresenced übermittelt das Reading model nun als lan-lepresenced. Das erlaubt die Erkennung von lepresenced in der FHEM-Statistik (sofern aktiviert).&lt;br /&gt;
--Version 0.83 (stable  09/2017)&lt;br /&gt;
  - Behebung von Systemstart Fehlern&lt;br /&gt;
  - Weitere Debug-Möglichkeiten. U. a. wird nun mitgezählt, ob hcitool lescan (&amp;quot;legacy&amp;quot;) und hcidump eine identische Zahl an Beacons empfangen&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Ansprechpartner =&lt;br /&gt;
# {{Link2FU|117|markusbloch }} (Markus) für das PRESENCE-Modul und collectord&lt;br /&gt;
# {{Link2FU|5068|PatrikR}} (Patrick) für lepresenced &lt;br /&gt;
# [[Benutzer Diskussion:Devender|Devender]] ({{Link2FU|20043|Dirk}}) für Wiki und Doku&lt;/div&gt;</summary>
		<author><name>Mikka</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Twilight_Anwendungsbeispiel&amp;diff=26362</id>
		<title>Twilight Anwendungsbeispiel</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Twilight_Anwendungsbeispiel&amp;diff=26362"/>
		<updated>2018-04-05T19:43:52Z</updated>

		<summary type="html">&lt;p&gt;Mikka: Es gibt keine if-Schleifen ;-)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Das Modul Twilight errechnet verschiedene Dämmerungsphasen und kalkuliert daraus einen wetter- und dämmerungsabhängigen Lichtwert, der den Grad der Außenhelligkeit angibt. Hier soll an einem Beispiel der Einsatz dieses Moduls zur Steuerung eines Ambient-Lichtes und einer Vitrinenbeleuchtung gezeigt werden.&lt;br /&gt;
&lt;br /&gt;
Ziel: Eine indirekte Beleuchtung, z. B. im Wohnzimmer, soll sich, sobald es zu dämmern anfängt bzw. wetterabhängig schon früh &amp;quot;gefühlt&amp;quot; dunkler wird, eingeschaltet werden. In diesem Beispiel wird eine dimmbare indirekte Beleuchtung (ein LED-Lichtschlauch) verwendet. Die Helligkeit des Lichtschlauchs soll bei nur leichter Dämmerung maximal sein und soll sich dann bei Dunkelheit bis auf 20% reduzieren. Die Vitrinenbeleuchtung (ebenfalls LED) soll ebenfalls nur dann eingeschaltet sein, wenn es nicht taghell ist, da man die da sowieso nicht sieht. Nachts soll die Beleuchtung natürlich nicht an sein, dazu wird hier auf eine Variable &amp;quot;Anwesend&amp;quot; zurückgegriffen, die beim Autor als Indikator für Nacht und Abwesenheitsbetrieb verwendet wird. Dies kann individuell angepasst werden. Anwesend=2 bedeutet &amp;quot;Die Bewohner sind im Bett&amp;quot; und Anwesend=4 bedeutet &amp;quot;Die Bewohner sind abwesend&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Neben der automatischen Beleuchtung soll auch ein manuelles Eingreifen möglich sein. So kann über einen Wandtaster sowohl das AmbientLight als auch die Vitrinenbeleuchtung ein- oder ausgeschaltet werden, wobei die Automatik nach einer bestimmten Zeit automatisch wieder greifen soll. Hier werden ein Homematic-Schaltaktor und ein Homematic-Dimmer verwendet, das Beispiel lässt sich leicht auf andere Komponenten übertragen.&lt;br /&gt;
&lt;br /&gt;
Zur Realisierung wurden einige Perl-Schnipsel in ein externes Modul ausgelagert, weil dies wesentlich übersichtlicher ist als die Inline-Definition in der fhem.cfg. Als Basis kann das Modul 99_Utils.pm genommen werden. Der Autor hat diese Datei kopiert, das Modul umbenannt, und den zusätzlichen Code eingetragen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Definition des Twilight-Devices ==&lt;br /&gt;
&lt;br /&gt;
Um überhaupt die Lichtwerte zur Verfügung zu haben, muss zunächst in der fhem.cfg ein Twilight-Device erzeugt werden. Hierzu wird folgender Aufruf verwendet:&lt;br /&gt;
&lt;br /&gt;
Syntax: &amp;lt;code&amp;gt;define &amp;lt;name&amp;gt; Twilight &amp;lt;Längengrad&amp;gt; &amp;lt;Breitengrad&amp;gt; &amp;lt;Indoor_Horizont&amp;gt; &amp;lt;Yahoo-Wetter-ID&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel für Helgoland:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define T twilight 54.18258 7.885938 1 709403&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier beispielhaft eine Eingabe direkt per telnet in FHEM auf Port 7072&lt;br /&gt;
&lt;br /&gt;
=== Code ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define T twilight 54.18258 7.885938 1 709403&lt;br /&gt;
&lt;br /&gt;
list T&lt;br /&gt;
Internals:&lt;br /&gt;
   CFGFN&lt;br /&gt;
   DEF        54.18258 7.885938 1 709403&lt;br /&gt;
   INDOOR_HORIZON 1&lt;br /&gt;
   LATITUDE   54.18258&lt;br /&gt;
   LONGITUDE  7.885938&lt;br /&gt;
   NAME       THelgo&lt;br /&gt;
   NR         751&lt;br /&gt;
   STATE      6&lt;br /&gt;
   TYPE       Twilight&lt;br /&gt;
   WEATHER    709403&lt;br /&gt;
   WEATHER_HORIZON 6&lt;br /&gt;
   Readings:&lt;br /&gt;
     2012-03-30 08:40:34   light           6&lt;br /&gt;
     2012-03-30 08:40:34   nextEvent       ss_weather&lt;br /&gt;
     2012-03-30 08:40:34   nextEventTime   19:13:23&lt;br /&gt;
     2012-03-30 08:40:34   nextUpdate      08:55:34&lt;br /&gt;
     2012-03-30 08:40:34   sr              07:10:41&lt;br /&gt;
     2012-03-30 08:40:34   sr_astro        04:57:56&lt;br /&gt;
     2012-03-30 08:40:34   sr_civil        06:28:52&lt;br /&gt;
     2012-03-30 08:40:34   sr_indoor       07:17:33&lt;br /&gt;
     2012-03-30 08:40:34   sr_naut         05:45:13&lt;br /&gt;
     2012-03-30 08:40:34   sr_weather      07:51:46&lt;br /&gt;
     2012-03-30 08:40:34   ss              19:54:28&lt;br /&gt;
     2012-03-30 08:40:34   ss_astro        22:07:13&lt;br /&gt;
     2012-03-30 08:40:34   ss_civil        20:36:17&lt;br /&gt;
     2012-03-30 08:40:34   ss_indoor       19:47:36&lt;br /&gt;
     2012-03-30 08:40:34   ss_naut         21:19:56&lt;br /&gt;
     2012-03-30 08:40:34   ss_weather      19:13:23&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zu sehen ist hier die Übersicht der entsprechenden Dämmerungszeiten des aktuellen Tages (Details siehe FHEM {{Link2CmdRef|Anker=Twilight}}).&lt;br /&gt;
&lt;br /&gt;
== Berechnung des Automatik-Wertes ==&lt;br /&gt;
&lt;br /&gt;
In folgender Routine wird zunächst abhängig vom Lichtwert und der aktuellen Anwesenheit der Automatikwert für den Lichtschlauch und die Schrankbeleuchtung errechnet. Der Lichtschlauch ist ein Dimmer, erhält also Werte zwischen 0% und 100% und die Vitrine ist ein Schaltaktor, ist also entweder an oder aus.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 sub calc_a_schlauch{&lt;br /&gt;
  my $licht=ReadingsVal(&amp;quot;T&amp;quot;,&amp;quot;light&amp;quot;,&amp;quot;6&amp;quot;);&lt;br /&gt;
  my $anwesend=ReadingsVal(&amp;quot;anwesend&amp;quot;,&amp;quot;state&amp;quot;,&amp;quot;4&amp;quot;);&lt;br /&gt;
  if($licht eq 6 || $anwesend eq 2 || $anwesend eq 4){&lt;br /&gt;
    fhem &amp;quot;set a_schlauch 0&amp;quot; ;&lt;br /&gt;
    fhem &amp;quot;set a_schrank off&amp;quot;;&lt;br /&gt;
  }elsif($licht&amp;lt;6 &amp;amp;&amp;amp; $licht&amp;gt;3){&lt;br /&gt;
    fhem &amp;quot;set a_schlauch 100&amp;quot;;&lt;br /&gt;
    fhem &amp;quot;set a_schrank on&amp;quot;;&lt;br /&gt;
  }elsif($licht&amp;gt;2 &amp;amp;&amp;amp; $licht&amp;lt;5){&lt;br /&gt;
    fhem &amp;quot;set a_schlauch 40&amp;quot;;&lt;br /&gt;
    fhem &amp;quot;set a_schrank on&amp;quot;;&lt;br /&gt;
  }elsif($licht&amp;lt;3){&lt;br /&gt;
    fhem &amp;quot;set a_schlauch 20&amp;quot;;&lt;br /&gt;
    fhem &amp;quot;set a_schrank on&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Ausgangsbedingungen &amp;quot;light&amp;quot; und &amp;quot;anwesend&amp;quot; werden zu Beginn abgefragt. In der darauffolgenden IF-Anweisung wird dann je nach Lichtstärke ein Wert für die beiden Automatikwerte gesetzt. Zu beachten ist, dass die Devices a_schlauch und a_schrank Dummy-Devices sind (siehe fhem.cfg unten). Hier wird noch nicht direkt geschaltet sondern nur ein Wert berechnet und zwischengespeichert.&lt;br /&gt;
&lt;br /&gt;
== Manuelle Schaltung Vitrine ==&lt;br /&gt;
&lt;br /&gt;
Zur manuellen Schaltung wird durch das Drücken eines Tasters folgender Schnipsel ausgeführt, der dann den neuen Manuell-Wert berechnet:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sub calc_m_schrank{&lt;br /&gt;
  my $aktuell = ReadingsVal(&amp;quot;m_schrank&amp;quot;,&amp;quot;state&amp;quot;,&amp;quot;auto&amp;quot;);&lt;br /&gt;
  my $auto = ReadingsVal(&amp;quot;a_schrank&amp;quot;,&amp;quot;state&amp;quot;,&amp;quot;off&amp;quot;);&lt;br /&gt;
  if($aktuell eq &amp;quot;off&amp;quot; || ($aktuell eq &amp;quot;auto&amp;quot;) &amp;amp;&amp;amp; $auto eq &amp;quot;off&amp;quot;){&lt;br /&gt;
    fhem &amp;quot;set m_schrank on&amp;quot;;&lt;br /&gt;
  }else{&lt;br /&gt;
    fhem &amp;quot;set m_schrank off&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Die aktuellen Werte für Manuell und Automatik werden zunächst aus den Dummy-Devices abgefragt. Jetzt gibt es zwei Möglichkeiten. Wenn die Vitrine gerade in dem Zustand ist, dass sie schon manuell ausgeschaltet wurde (also $aktuell eq &amp;quot;off&amp;quot;), dann muss sie jetzt eingeschaltet werden. Dies muss auch dann passieren, wenn man gerade im Automatikmodus ist, und eben dieser gerade auf &amp;quot;off&amp;quot; steht. Dies ist wichtig, damit für den Anwender, dem nicht klar ist, in welcher Betriebsart die Beleuchtung gerade ist, bei jedem Tasterdruck auch ein sichtbarer Schaltvorgang ausgelöst wird.&lt;br /&gt;
&lt;br /&gt;
== Manuelle Schaltung LED-Schlauch ==&lt;br /&gt;
&lt;br /&gt;
Die manuelle Schaltung des LED-Schlauchs ist noch etwas aufwendiger, da mehrere Dimmerstufen angefahren werden sollen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sub calc_m_schlauch{&lt;br /&gt;
  my $aktuell = ReadingsVal(&amp;quot;m_schlauch&amp;quot;,&amp;quot;state&amp;quot;,0);&lt;br /&gt;
  my $auto = ReadingsVal(&amp;quot;a_schlauch&amp;quot;,&amp;quot;state&amp;quot;,0);&lt;br /&gt;
  if($aktuell==0 || ($aktuell==-1 &amp;amp;&amp;amp; $auto==0)){&lt;br /&gt;
     fhem &amp;quot;set m_schlauch 100&amp;quot;;&lt;br /&gt;
  }elsif($aktuell==100){&lt;br /&gt;
     fhem &amp;quot;set m_schlauch 30&amp;quot;;&lt;br /&gt;
  }elsif($aktuell==30 || ($aktuell==-1 &amp;amp;&amp;amp; $auto&amp;gt;0)){&lt;br /&gt;
     fhem &amp;quot;set m_schlauch 0&amp;quot;;&lt;br /&gt;
  }else{&lt;br /&gt;
     fhem &amp;quot;set m_schlauch 0&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Prinzip ist wie bei der Vitrine. Da hier mit numerischen Werten gearbeitet wird, ist die Bedeutung &amp;quot;Automatik&amp;quot; nicht als &amp;quot;auto&amp;quot; definiert sondern als Zahlenwert &amp;quot;-1&amp;quot;. D.h. der Wert für &amp;quot;m_schlauch&amp;quot; kann zwischen -1 und 100 schwanken, wobei im Bereich 0-100 ein manueller Wert gesetzt wird und bei &amp;quot;-1&amp;quot; die Automatik greifen soll.&lt;br /&gt;
&lt;br /&gt;
In der IF-Abfrage wird zunächst der Fall behandelt, dass das Licht komplett aus ist. Dies ist entweder der Fall, wenn es manuell aus ist oder die Automatik greift und diese aber auch auf &amp;quot;0&amp;quot; ist. Der zweite Zweig schaltet den manuellen Wert auf 30 runter, wenn dieser gerade auf 100 ist. In allen anderen Fällen wird das Licht im nächsten Schritt manuell ausgeschaltet.&lt;br /&gt;
&lt;br /&gt;
== Schalten der Aktoren ==&lt;br /&gt;
&lt;br /&gt;
Letztlich müssen natürlich die Aktoren tatsächlich geschaltet werden. Dazu wird folgende &amp;quot;Treiber&amp;quot;-Routine genutzt, die die manuellen und automatischen Werte logisch kombiniert:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sub drive_schrank_schlauch{&lt;br /&gt;
  my $dimmer=dimvalue(ReadingsVal(&amp;quot;dim_schlauch&amp;quot;,&amp;quot;state&amp;quot;,0));&lt;br /&gt;
  my $man=ReadingsVal(&amp;quot;m_schlauch&amp;quot;,&amp;quot;state&amp;quot;,0);&lt;br /&gt;
  my $auto=ReadingsVal(&amp;quot;a_schlauch&amp;quot;,&amp;quot;state&amp;quot;,0);&lt;br /&gt;
  my $newvalue;&lt;br /&gt;
  my $zeit=60;&lt;br /&gt;
&lt;br /&gt;
  if($man==-1){&lt;br /&gt;
    $newvalue=$auto;&lt;br /&gt;
  }else{&lt;br /&gt;
    $newvalue=$man;&lt;br /&gt;
    $zeit=5;&lt;br /&gt;
  }&lt;br /&gt;
  if($dimmer ne $newvalue){&lt;br /&gt;
    fhem &amp;quot;set dim_schlauch &amp;quot;.$newvalue.&amp;quot; 84000 &amp;quot;.$zeit;&lt;br /&gt;
  }&lt;br /&gt;
  my $schrank=ReadingsVal(&amp;quot;akt_schrank&amp;quot;,&amp;quot;state&amp;quot;,&amp;quot;off&amp;quot;);&lt;br /&gt;
  $man=ReadingsVal(&amp;quot;m_schrank&amp;quot;,&amp;quot;state&amp;quot;,&amp;quot;auto&amp;quot;);&lt;br /&gt;
  $auto=ReadingsVal(&amp;quot;a_schrank&amp;quot;,&amp;quot;state&amp;quot;,&amp;quot;off&amp;quot;);&lt;br /&gt;
  if($man eq &amp;quot;auto&amp;quot;){&lt;br /&gt;
    $newvalue=$auto;&lt;br /&gt;
  }else{&lt;br /&gt;
    $newvalue=$man;&lt;br /&gt;
  }&lt;br /&gt;
  if($schrank ne $newvalue){&lt;br /&gt;
    fhem &amp;quot;set akt_schrank &amp;quot;.$newvalue;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier wird nun zuerst der LED-Schlauch und dann der Schrank behandelt. Zunächst wird sowohl der aktuelle Wert des tatsächlichen Aktors (hier: dim_schlauch) als auch die Manuell- und Automatik-Werte abgefragt. Die Variable $newvalue soll den neuen Schaltwert erhalten. Dies wird deswegen eingesetzt, um einen Schaltbefehl nur dann über Funk zu senden, wenn sich der Zustand geändert hat. Die Variable $zeit wird hier genutzt, um beim automatischen Schalten den Dimmer sehr langsam fahren zu lassen, so dass es zu keiner abrupten merklichen Helligkeitsänderung kommt. Dies geht nur mit Homematic-Dimmern.&lt;br /&gt;
&lt;br /&gt;
In der folgenden IF-Abfrage wird geklärt, ob der Dimmer im manuellen oder automatischen Modus betrieben wird. Dementsprechend wird $newvalue gesetzt. Bei manuellem Betrieb wird die Zeit auf 5 Sekunden runtergesetzt, denn hier soll eine merkliche Helligkeitsänderung in kurzer Zeit nach dem Betätigen des Tasters erfolgen. Stellt sich dann in der kommenden Abfrage heraus, dass der aktuelle Wert des Aktors noch nicht dem von $newvalue entspricht, wird ein tatsächlicher Schaltvorgang ausgelöst. Die Zahl 84000 ist die Einschaltzeit des Dimmers (unwichtig hier, muss nur hoch genug sein, ist aus Sicherheitsgründen nicht auf 0=unendlich - so geht der Dimmer auch bei einem FHEM-Ausfall nach knapp 24 Stunden aus).&lt;br /&gt;
Im weiteren Verlauf wird die Vitrine nach dem gleichen Prinzip geschaltet, wobei hier keine Zeit sinnvoll ist.&lt;br /&gt;
&lt;br /&gt;
=== fhem.cfg ===&lt;br /&gt;
In der fhem.cfg müssen, damit die Schnipsel funktionieren, neben dem Twilight-Device auch die Dummy-Devices, die beiden Aktoren, und entsprechende At-/Notify-Defines eingetragen werden, die dafür sorgen, dass die Code-Schnipsel ausgeführt werden. Die Definition der beiden Aktoren ist hier nicht aufgeführt und muss individuell eingetragen werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define a_schlauch dummy&lt;br /&gt;
define m_schlauch dummy&lt;br /&gt;
define a_schrank dummy&lt;br /&gt;
define m_schrank dummy&lt;br /&gt;
define T twilight 54.18258 7.885938 1 709403&lt;br /&gt;
set m_schlauch -1&lt;br /&gt;
set m_schrank auto&lt;br /&gt;
&lt;br /&gt;
define m_a_schlauch notify m_a_schlauch {calc_a_schlauch();;}&lt;br /&gt;
define n_abwesend_ambient notify anwesend {fhem &amp;quot;trigger m_a_schlauch&amp;quot;;;}&lt;br /&gt;
define n_lightchange_ambient notify T:light.* {fhem &amp;quot;trigger m_a_schlauch&amp;quot;;;}&lt;br /&gt;
define n_d_schlauch notify a_schlauch {drive_schrank_schlauch();;}&lt;br /&gt;
define n_d_schlauch2 notify m_schlauch {drive_schrank_schlauch();;}&lt;br /&gt;
define n_d_schrank notify a_schrank {drive_schrank_schlauch();;}&lt;br /&gt;
define n_d_schrank2 notify m_schrank {drive_schrank_schlauch();;}&lt;br /&gt;
define n_m_schlauch_reset notify m_schlauch {fhem &amp;quot;delete temp_at_m_schlauch_reset&amp;quot;;;fhem &amp;quot;define temp_at_m_schlauch_reset at +01:00:00 set m_schlauch -1&amp;quot;;;}&lt;br /&gt;
define n_m_schrank_reset notify m_schrank {fhem &amp;quot;delete temp_at_m_schrank_reset&amp;quot;;;fhem &amp;quot;define temp_at_m_schrank_reset at +01:00:00 set m_schrank auto&amp;quot;;;}&lt;br /&gt;
define n_m_schlauch notify taster_wohn:Btn1.off[^L]* {calc_m_schlauch();;}&lt;br /&gt;
define n_m_schrank notify taster_wohn:Btn2.on[^L]* {calc_m_schrank();;}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;m_a_schlauch&amp;lt;/code&amp;gt; ist ein Makro, was hier überflüssig erscheint, aber sinnvoll ist, wenn man einen Perl-Aufruf von verschiedenen Stellen aus antriggern will, so ist man unabängig vom tatsächlichen Inhalt.&lt;br /&gt;
&lt;br /&gt;
Die Berechnung wird also immer dann angetriggert, wenn entweder der Anwesenheitsstatus oder der Lichtwert sich verändert haben. Die folgenden Notifys reagieren auf Werteänderungen der Automatik- und Manuell-Dummys. Die nächsten beiden Notifys (&amp;lt;code&amp;gt;n_m_schlauch_reset&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;n_m_schrank_reset&amp;lt;/code&amp;gt;) sorgen dafür, dass bei einer Änderung der Manuell-Werte durch das Drücken von Tastern, etc. der Wert nach einer Stunde wieder auf Automatik zurückfällt. Die letzten beiden Notifys reagieren auf genau diese Taster, wobei hier ein Homematic-Wandtaster eingesetzt wird, bei dem nur auf einen kurzen Tastendruck reagiert werden soll.&lt;br /&gt;
&lt;br /&gt;
Der bisherige Code sieht nicht vor, mit den Tastern auch frühzeitig wieder auf Automatik zurückzuschalten. Das kann z. B. mit einem zusätzlichen Taster gemacht werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define n_tEingang_lichtReset notify taster_eingang:Btn1.offLong.* {lichtReset();;}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier wird auf den langen Tastendruck eines anderen Tasters reagiert, wobei dieser Notify zündet, sobald man den Taster länger als 0,4 Sekunden festhält, also noch bevor dieser losgelassen wird. Der Code von lichtReset kann dann mehr tun, als nur die beiden hier beschriebenen Beleuchtungen auf Automatik zu setzen. Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sub lichtReset{&lt;br /&gt;
  fhem &amp;quot;set m_schlauch -1&amp;quot;;&lt;br /&gt;
  fhem &amp;quot;set m_schrank auto&amp;quot;;&lt;br /&gt;
  fhem &amp;quot;set akt_treppe off&amp;quot;;&lt;br /&gt;
  fhem &amp;quot;set akt_eingang off&amp;quot;;&lt;br /&gt;
  fhem &amp;quot;set akt_esszimmer off&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== yahoo - Condition Codes ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Condition code	Beschreibung		Internes Mapping in: sub Twilight_getWeatherHorizon&lt;br /&gt;
	0	tornado			25&lt;br /&gt;
	1	tropical storm		25&lt;br /&gt;
	2	hurricane		25&lt;br /&gt;
	3	severe thunderstorms	25&lt;br /&gt;
	4	thunderstorms		20&lt;br /&gt;
	5	mixed rain and snow	10&lt;br /&gt;
	6	mixed rain and sleet	10&lt;br /&gt;
	7	mixed snow and sleet	10&lt;br /&gt;
	8	freezing drizzle	10&lt;br /&gt;
	9	drizzle			10&lt;br /&gt;
	10	freezing rain		10&lt;br /&gt;
	11	showers			7&lt;br /&gt;
	12	showers			7&lt;br /&gt;
	13	snow flurries		7&lt;br /&gt;
	14	light snow showers	5&lt;br /&gt;
	15	blowing snow		10&lt;br /&gt;
	16	snow			10&lt;br /&gt;
	17	hail			6&lt;br /&gt;
	18	sleet			6&lt;br /&gt;
	19	dust			6&lt;br /&gt;
	20	foggy			10&lt;br /&gt;
	21	haze			6&lt;br /&gt;
	22	smoky			6&lt;br /&gt;
	23	blustery		6&lt;br /&gt;
	24	windy			6&lt;br /&gt;
	25	cold			6&lt;br /&gt;
	26	cloudy			6&lt;br /&gt;
	27	mostly cloudy (night)	5&lt;br /&gt;
	28	mostly cloudy (day)	5&lt;br /&gt;
	29	partly cloudy (night)	3&lt;br /&gt;
	30	partly cloudy (day)	3&lt;br /&gt;
	31	clear (night)		0&lt;br /&gt;
	32	sunny			0&lt;br /&gt;
	33	fair (night)		0&lt;br /&gt;
	34	fair (day)		0&lt;br /&gt;
	35	mixed rain and hail	7&lt;br /&gt;
	36	hot			0&lt;br /&gt;
	37	isolated thunderstorms	15&lt;br /&gt;
	38	scattered thunderstorms	15&lt;br /&gt;
	39	scattered thunderstorms	15&lt;br /&gt;
	40	scattered showers	9&lt;br /&gt;
	41	heavy snow		15&lt;br /&gt;
	42	scattered snow showers	8&lt;br /&gt;
	43	heavy snow		5&lt;br /&gt;
	44	partly cloudy		12&lt;br /&gt;
	45	thundershowers		6&lt;br /&gt;
	46	snow showers		8&lt;br /&gt;
	47	isolated thundershowers	8&lt;br /&gt;
		not available		1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Zusammenhang STATE und light ==&lt;br /&gt;
&lt;br /&gt;
STATE wird beim Twilight-Modul von 0 - 11 durchgezählt.&lt;br /&gt;
&lt;br /&gt;
0 -&amp;gt; vor astronomischen Aufgang, 1 -&amp;gt; vor nautischem Aufgang, 2 -&amp;gt; vor zivilem Aufgang, 3 -&amp;gt; vor Sonnenaufgang, 4 -&amp;gt; vor Indoor-Aufgang, 5 -&amp;gt; vor &amp;quot;Wetter-Aufgang&amp;quot;, 6 -&amp;gt; vor &amp;quot;Wetter-Untergang&amp;quot; (also den meisten Tag lang)&lt;br /&gt;
&lt;br /&gt;
Bis hierher ist light = STATE. Von nun an wird light wieder weniger (es wird ja dunkler) aber STATE schreitet vor, um Sonnenuntergänge von -aufgängen unterscheidbar zu machen.&lt;br /&gt;
&lt;br /&gt;
7 -&amp;gt; vor Indoor-Untergang, 8 -&amp;gt; vor Sonnenuntergang, 9 -&amp;gt; vor zivilem Untergang, 10 -&amp;gt; vor nautischem Untergang, 11 -&amp;gt; vor astronomischem Untergang&lt;br /&gt;
&lt;br /&gt;
Bitte auch bedenken, dass in der Nordhälfte Deutschlands die Sonne astronomisch im Sommer ca. 6 Wochen lang nicht untergeht, State wird also nicht alle Werte durchlaufen und light wird nie 0 sein.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Examples]]&lt;/div&gt;</summary>
		<author><name>Mikka</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=EnOcean-FSB61-Aktor-Beschattungselemente-Rollladen&amp;diff=25159</id>
		<title>EnOcean-FSB61-Aktor-Beschattungselemente-Rollladen</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=EnOcean-FSB61-Aktor-Beschattungselemente-Rollladen&amp;diff=25159"/>
		<updated>2018-02-08T14:54:52Z</updated>

		<summary type="html">&lt;p&gt;Mikka: Links aktualisiert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Hardware&lt;br /&gt;
|Bild=Fsb61np.jpg&lt;br /&gt;
|Bildbeschreibung=FSB61NP Fertigungswoche XX/12&lt;br /&gt;
|HWProtocol=EnOcean&lt;br /&gt;
|HWType=Aktor, Empfänger, ab Fertigungswoche 41/11 auch Sender, Sensor&lt;br /&gt;
|HWCategory=EnOcean&lt;br /&gt;
|HWComm=EnOcean Funk, 868Mhz&lt;br /&gt;
|HWChannels=1 (unidirektional, ab Fertigungswoche 41/11 bidirektional)&lt;br /&gt;
|HWVoltage=230V~&lt;br /&gt;
|HWPowerConsumption=Eigenverbrauch ca. 0,7W - 0,9W&lt;br /&gt;
|HWPoweredBy=230V&lt;br /&gt;
|HWSize=45x55x33mm&lt;br /&gt;
|HWDeviceFHEM=[http://fhem.de/commandref.html#EnOcean EnOcean]&lt;br /&gt;
|HWManufacturer=Eltako&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Randnotiz|RNText=Seite gilt nur für die &#039;&#039;&#039;bidirektionale&#039;&#039;&#039; Variante des Aktors ab Fertigungswoche 41/11}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;EnOcean-FSB61-Aktor-Beschattungselemente-Rollladen&#039;&#039;&#039; ist ein Aktor&lt;br /&gt;
* für&lt;br /&gt;
** Unterputzmontage&lt;br /&gt;
* für&lt;br /&gt;
** Steuerung von Rollladen und Beschattungselementen&lt;br /&gt;
== Features ==&lt;br /&gt;
Aktor für Beschattungselemente und Rolladen (ab Fertigungswoche 41/11 bidirektional)&lt;br /&gt;
&lt;br /&gt;
== Hinweise zum Betrieb mit FHEM ==&lt;br /&gt;
Volle Funktionsfähigkeit erfordert, dass die Bestätigungstelegramme am Aktor eingeschaltet sind&lt;br /&gt;
&lt;br /&gt;
=== Definition/Anlernvorgang ===&lt;br /&gt;
Der Aktor kann nicht vollautomatisch per autocreate in FHEM angelegt werden. &lt;br /&gt;
Die Einbindung in FHEM kann entweder über die Nutzung der inoffiziellen, gerätespezifischen EEP (empfohlen) &#039;&#039;&#039;oder&#039;&#039;&#039; über die manuelle Vorgehensweise erfolgen.  &lt;br /&gt;
&lt;br /&gt;
===== Nutzung der inoffziellen EEP =====&lt;br /&gt;
Folgende Schritte sind durchzuführen:&lt;br /&gt;
* FHEM-Device &amp;lt;name&amp;gt; (hier: EnO_switch_FSB61) mit dem inoffiziellen EEP für den FSB61 (G5-3F-7F) und der Sender-ID des FSB61 (siehe Rückseite des Aktors; hier: 01036620) durch Eingabe in das [[Konfiguration#Befehl-Eingabefeld|Befehls-Eingabefeld]] definieren:&lt;br /&gt;
: &amp;lt;code&amp;gt;define EnO_switch_FSB61 EnOcean 01036620 G5-3F-7F&amp;lt;/code&amp;gt;&lt;br /&gt;
: Hierdurch wird ein FHEM-Device mit allen grundlegenden Attributen angelegt. Nur das Attribut &amp;lt;code&amp;gt;model&amp;lt;/code&amp;gt; muss noch wie unten im Config-Auszug gezeigt mit dem Wert Eltako_FSB61 angelegt werden, bevor das FHEM-Device am Aktor angelernt werden kann.&lt;br /&gt;
* Am Aktor &lt;br /&gt;
** Oberer Funktions-Drehschalter: auf LRN&lt;br /&gt;
** Unterer Funktions-Drehschalter: auf MAX (zum Einlernen PC)&lt;br /&gt;
* FHEM Eingabefeld: &amp;lt;code&amp;gt;set EnO_switch_FSB61 teach&amp;lt;/code&amp;gt;&lt;br /&gt;
* Am Aktor nach dem Einlernen beide Drehschalter in die ursprüngliche Position&lt;br /&gt;
* Abschließend müssen die Attribute &amp;lt;code&amp;gt;shutTime&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;shutTimeCloses&amp;lt;/code&amp;gt; für die Laufzeitsteuerung angelegt und mit den individuellen Werten der zu steuernden Jalousien angepasst werden. Infos zu den Attributen finden sich unten im [[#FHEM_Config-Auszug|FHEM-Config-Auszug]].&lt;br /&gt;
&lt;br /&gt;
===== Alternative: manuelle Vorgehensweise =====&lt;br /&gt;
Folgende Schritte sind durchzuführen:&lt;br /&gt;
* EnOcean-FHEM-Device &amp;lt;name&amp;gt; mit der Sender-ID des FSB (siehe Rückseite des Aktors) definieren&lt;br /&gt;
* Das Attribut subDef mit einer freien SenderId des TCMs anlegen ODER falls keine freie Sender-ID bekannt ist, das Attribut komplett weglassen, damit die Vergabe automatisch durch FHEM erfolgt&lt;br /&gt;
* Die Attribute subType, model und manufID wie nachfolgend im Config-Auszug anlegen&lt;br /&gt;
* Die Attribute shutTime und shutTimeCloses mit individullen Werten anlegen (vgl. Erläuterungen zum Config-Auszug)&lt;br /&gt;
* Am Aktor &lt;br /&gt;
** Oberer Funktions-Drehschalter: auf LRN&lt;br /&gt;
** Unterer Funktions-Drehschalter: auf MAX (zum Einlernen PC)&lt;br /&gt;
* FHEM Eingabefeld: „set &amp;lt;name&amp;gt; teach&amp;quot;&lt;br /&gt;
* Am Aktor nach dem Einlernen beide Drehschalter in die ursprüngliche Position&lt;br /&gt;
&lt;br /&gt;
=== FHEM Config-Auszug ===&lt;br /&gt;
Ein exemplarischer Auszug aus der [[Konfiguration|fhem.cfg]]:&lt;br /&gt;
 define EnO_switch_FSB61 EnOcean 01036620     &amp;lt;--- SenderID des FSB61 (Aktors)&lt;br /&gt;
 attr EnO_switch_FSB61 eep A5-3F-7F&lt;br /&gt;
 attr EnO_switch_FSB61 manufID 00D&lt;br /&gt;
 attr EnO_switch_FSB61 model Eltako_FSB61&lt;br /&gt;
 attr EnO_switch_FSB61 subDef AABBCC05        &amp;lt;--- AABBCC05 ist eine der 127 SenderID&#039;s des TCM mit der FHEM sendet &lt;br /&gt;
 attr EnO_switch_FSB61 subType manufProfile&lt;br /&gt;
 attr EnO_switch_FSB61 webCmd opens:stop:closes&lt;br /&gt;
 attr EnO_switch_FSB61 shutTime 35&lt;br /&gt;
 attr EnO_switch_FSB61 shutTimeCloses 40&lt;br /&gt;
* &#039;&#039;&#039;shutTime&#039;&#039;&#039;: Zeit (in Sekunden) die der Rollladen von &amp;quot;vollständig geöffnet&amp;quot; bis &amp;quot;vollständig geschlossen&amp;quot; braucht. Diese Zeit verwendet FHEM um die Position des Rollladens zu errechnen. Fährt man den Rollladen von der oberen Endlage mit &amp;lt;pre&amp;gt;set EnO_switch_FSB61 position 50&amp;lt;/pre&amp;gt; so fährt der Rollladen die Hälfte der shutTime in Sekunden runter bevor er stoppt. Der Rollladen steht nun in der Position 50%.&lt;br /&gt;
* &#039;&#039;&#039;shutTimeCloses&#039;&#039;&#039;: Zeit (in Sekunden), um den Rollladen sicher in eine definierte Endlage zu fahren. &lt;br /&gt;
** shutTimeCloses ist größer als shutTime&lt;br /&gt;
** shutTimeCloses ist (etwas) größer als die am FSB61 eingestellte Rückfallverzögerung (unterer Drehschalter, 0-120 Sekunden)&lt;br /&gt;
: Fährt man den Rollladen von der oberen Endlage mit &amp;lt;pre&amp;gt;set EnO_switch_FSB61 closes&amp;lt;/pre&amp;gt; zu, so fährt FHEM den Rollladen shutTimeCloses Sekunden runter -&amp;gt; die untere Endlage wird sicher erreicht und der FSB61 sendet die diesbezügliche Bestätigung.&lt;br /&gt;
&lt;br /&gt;
== Einsatzbeispiel ==&lt;br /&gt;
=== Rollladensteuerung in Abhängigkeit von Sonnenauf- und -untergang ===&lt;br /&gt;
 define RolladenHoch at *{sunrise(0,&amp;quot;07:00&amp;quot;,&amp;quot;09:00&amp;quot;)} set EnO_switch_FSB61 opens&lt;br /&gt;
 define RolladenZu at *{sunset(0,&amp;quot;17:30&amp;quot;,&amp;quot;22:00&amp;quot;)} set EnO_switch_FSB61 closes&lt;br /&gt;
&lt;br /&gt;
Der Rolladen wird&lt;br /&gt;
&lt;br /&gt;
* morgens zum Sonnenaufgang, aber nicht vor 07:00 und nicht nach 09:00 Uhr hochgefahren und&lt;br /&gt;
* abends zum Sonnenuntergang zugefahren, aber nicht vor 17:30 Uhr und nicht nach 22:00 Uhr.&lt;br /&gt;
&lt;br /&gt;
Siehe auch: [[SUNRISE_EL]]&lt;br /&gt;
&lt;br /&gt;
=== Anzeige Rollladenstand im WebFrontend ===&lt;br /&gt;
Durch die folgenden zwei Attribute wird der Rollladenstand im WebFrontend bildlich dargestellt: &lt;br /&gt;
:&amp;lt;code&amp;gt;attr EnO_switch_FSB61 stateFormat position&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;attr EnO_switch_FSB61 devStateIcon down:fts_shutter_100 up:fts_window_2w 1\d.*:fts_shutter_90 2\d.*:fts_shutter_80 3\d.*:fts_shutter_70 4\d.*:fts_shutter_60 5\d.*:fts_shutter_50 6\d.*:fts_shutter_40 7\d.*:fts_shutter_30 8\d.*:fts_shutter_20 9\d.*:fts_shutter_10 \d.*:fts_shutter_90&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Siehe auch [[FTUI_Snippets#Rollladen_Circle_Menu|diese Beispiel für Tablet UI]]&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* Datenblatt: [https://www.eltako.com/fileadmin/downloads/de/datenblatt/Datenblatt_FSB61NP-230V.pdf PDF]&lt;br /&gt;
* Anleitung: [https://www.eltako.com/fileadmin/downloads/de/_bedienung/FSB61NP_30200430-7_dt.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:EnOcean Components]]&lt;br /&gt;
[[Kategorie:Rollladensteuerung]]&lt;/div&gt;</summary>
		<author><name>Mikka</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=EnOcean_Starter_Guide&amp;diff=25158</id>
		<title>EnOcean Starter Guide</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=EnOcean_Starter_Guide&amp;diff=25158"/>
		<updated>2018-02-08T14:49:17Z</updated>

		<summary type="html">&lt;p&gt;Mikka: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Todo|Noch einzuarbeitetende Moduländerungen :: http://forum.fhem.de/index.php/topic,36237.msg285274.html#msg285274: Vereinfachte Anlage von FHEM-EnOcean-Devices gemäß 18 und 19 einarbeiten, Anlage Liste von nicht offiziellen EEPs und Zuordnung zu Geräten, bessere Einbindung von getNextId ++++ http://forum.fhem.de/index.php/topic,42354.0.html: Plot-Anlage einbinden ++++ http://forum.fhem.de/index.php/topic,45810.0.html: RLT}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;&lt;br /&gt;
{{Infobox Modul&lt;br /&gt;
|Name=TCM&lt;br /&gt;
|ModPurpose=Einbindung EnOcean-Gateway&lt;br /&gt;
|ModType=d&lt;br /&gt;
|ModCmdRef=TCM&lt;br /&gt;
|ModForumArea=EnOcean&lt;br /&gt;
|ModTechName=00_TCM.pm &lt;br /&gt;
|ModOwner=klaus.schauer ([http://forum.fhem.de/index.php?action=profile;u=293 Forum] / [[Benutzer Diskussion:Klaus.schauer|Wiki]])&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox Modul&lt;br /&gt;
|Name=EnOcean&lt;br /&gt;
|ModPurpose=Ansteuerung EnOcean-Geräte über TCM&lt;br /&gt;
|ModType=d&lt;br /&gt;
|ModCmdRef=EnOcean&lt;br /&gt;
|ModForumArea=EnOcean&lt;br /&gt;
|ModTechName=10_EnOcean.pm &lt;br /&gt;
|ModOwner=klaus.schauer ([http://forum.fhem.de/index.php?action=profile;u=293 Forum] / [[Benutzer Diskussion:Klaus.schauer|Wiki]])&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== EnOcean ==&lt;br /&gt;
[http://www.enocean.com/de/ EnOcean] ist &lt;br /&gt;
* ein [http://www.enocean.com/de/enocean-wireless-standard/ ISO ratifizierter Funkstandard], ausgelegt für Funksensoren und Funksensornetze mit besonders niedrigem Energieverbrauch&lt;br /&gt;
* ein Anbieter batterieloser Funksensoren&lt;br /&gt;
EnOcean-Endgeräte mit dem von der EnOcean Alliance zur Verfügung gestellten EnOcean-Funkprotokoll werden von [http://www.enocean-alliance.org/de/hiererhaeltlich/ zahlreichen Hardware-Herstellern] angeboten. &lt;br /&gt;
&lt;br /&gt;
=== EnOcean Equipment Profile ===&lt;br /&gt;
Abhängig von den Funktionen des EnOcean-Endgerätes werden bestimmte veröffentlichte Anwendungs-Profile/Funk-Telegramme, die sogenannten EnOcean Equipment Profiles (EEPs), zur Funkkommunikation genutzt. Technische Details zum EnOcean-Funkprotokoll und insbesondere zu den [http://www.enocean-alliance.org/eep/ EnOcean Equipment Profiles (EEPs)] sind auf der Internetseite der [http://www.enocean-alliance.org EnOcean Alliance] zu finden.&lt;br /&gt;
&lt;br /&gt;
==== Manufacturer Specific Communication ====&lt;br /&gt;
EnOcean bietet - neben den veröffentlichten Standard-Enocean-Profilen - die Möglichkeit für die Nutzung von herstellerspezifischen Anwendungs-Profilen/Funk-Telegrammen (MSC = Manufacturer Specific Communication). Falls die Herstellerfirmen den Inhalt dieser MSC-Telegramme nicht veröffentlichen, ist eine Unterstützung durch FHEM grundsätzlich nicht möglich. Teilweise werden die Produkte sowohl mit MSC- als auch mit Standard-Enocean-Profilen vertrieben {{Link2Forum|Topic=19544|Message=132240}}. Angaben zu den verwendeten Profilen/Telegrammen sind den Bedienungsanleitungen der Produkte zu entnehmen.&lt;br /&gt;
&lt;br /&gt;
=== uni- versus bidirektional ===&lt;br /&gt;
EnOcean-Endgeräte gibt es sowohl in uni- als auch in bidirektionalen Ausführungen. Bei &#039;&#039;&#039;unidirektionalen Endgeräten&#039;&#039;&#039; erfolgt die Funk-Kommunikation nur in eine Richtung. Einem Aktor, der Licht schaltet, kann zwar der Befehl zum An- bzw. Ausschalten gegeben werden, er liefert aber keine Rückinformation über die erfolgreiche Ausführung des Befehls. Bei &#039;&#039;&#039;bidirektionalen Endgeräten&#039;&#039;&#039; erfolgt die Funk-Kommunikation hingegen in zwei Richtungen: sie bieten &lt;br /&gt;
# Sende- und &lt;br /&gt;
# Empfangsmöglichkeiten. &lt;br /&gt;
Der bidirektionale Aktor kann somit unter anderem die erfolgreiche Ausführung eines empfangenen Befehls zurückmelden.&lt;br /&gt;
&lt;br /&gt;
=== SenderID ===&lt;br /&gt;
Damit EnOcean Funk-Aktoren (z.B. Relais, Dimmer, Heizungsventil) auf EnOcean Sensoren (z.B. Taster, Temperatursensor, Fensterkontakt, Energieverbrauchsmesser) reagieren können, werden die Sensoren bei den Aktoren eingelernt (Teach-in). So wird festgelegt, dass z.B. &amp;quot;Funktaster 1&amp;quot; den &amp;quot;Dimmer 1&amp;quot; steuert. &lt;br /&gt;
Alle EnOcean Geräte mit Sendefunktion haben mindestens eine eindeutige, unabänderliche 8-stellige Hex-SenderID (z.B. ffc54500; teilweise auch dargestellt mit Punkten oder Doppelpunkten dazwischen). Die SenderID ist meist auf den EnOcean Geräten aufgedruckt oder liegt der Verpackung des Endgerätes bei. Beim Anlernvorgang wird die eindeutige SenderID des Sensors in der Empfängertabelle des Aktors gespeichert.&lt;br /&gt;
 &lt;br /&gt;
== EnOcean in FHEM ==&lt;br /&gt;
=== Allgemein ===&lt;br /&gt;
FHEM wird fortwährend weiterentwickelt und verbessert. Daher ist es zwingend notwendig, dass FHEM auf dem aktuellsten Stand ist. Dazu nach der FHEM-Installation den Befehl &amp;lt;code&amp;gt;update&amp;lt;/code&amp;gt; ausführen und anschließend &amp;lt;code&amp;gt;shutdown restart&amp;lt;/code&amp;gt; durchführen. Genauso auch vor [[#Welche_Infos_sollten_Anfragen_im_EnOcean-Forum_enthalten.3F|Anfragen im Forum]] die Aktualität von FHEM überprüfen.&lt;br /&gt;
&lt;br /&gt;
Die Nutzung von EnOcean in FHEM ist (nicht nur für den Anfänger) ausschließlich mit der standardmäßig eingeschalteten [[autocreate|autocreate-Funktion]] einfach umsetzbar. Die Kenntnis der FHEM-Grundlagen und Durcharbeitung der Anfänger-Lektüren wird im Folgenden vorausgesetzt. Insbesondere sind [[Erste_Schritte_in_fhem|Erste Schritte in FHEM]] und [http://fhem.de/Heimautomatisierung-mit-fhem.pdf Heimautomatisierung mit FHEM] Pflicht, auch wenn sie nicht EnOcean behandeln, so werden doch wesentliche Punkte für ein Verständnis von FHEM vermittelt.&lt;br /&gt;
&lt;br /&gt;
Im Folgenden und auf den [[:Kategorie:EnOcean Components|Wiki-Seiten der Einzelgeräte]] werden immer wieder Auszüge aus der [[Konfiguration]] dargestellt. Diese dienen zur Erläuterung und Veranschaulichung. Die Bearbeitung der [[Konfiguration]] sollte - zur Verhinderung von Fehlern - nach Möglichkeit immer über das &amp;quot;[[Konfiguration#Befehl-Eingabefeld|Befehl-Eingabefeld]]&amp;quot; und die &amp;quot;[[Konfiguration#Objektdetails|Objektdetails]]&amp;quot; erfolgen.&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitung ===&lt;br /&gt;
Die SenderIDs der EnOcean-Geräte haben eine zentrale Bedeutung in FHEM. Sie sind eindeutiges Unterscheidungsmerkmal, werden von FHEM im Rahmen der Funkkommunikation genutzt und in der Definition der Geräte bzw. den Attributen des Geräte hinterlegt. Auch wenn FHEM die SenderIDs des Gateways regelmäßig automatisch vergeben kann, ist für einen Überblick über die SenderIDs hilfreich eine Tabelle mit folgender oder ähnlicher Struktur aufzubauen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; A&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; B&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; C&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; D&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; E&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;th&amp;gt; Nr.&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Name EnOcean&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Name in FHEM&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; HEX (Sender-ID)&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Zimmer&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;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;amp;lt;Name Hardwareschalter&amp;amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;amp;lt;Name in FHEM&amp;amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;amp;lt;HEX Code&amp;amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;amp;lt;Raumname&amp;amp;gt;&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;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; TCM_ESP3_0&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; TCM_ESP3_0&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; AABBCC00&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&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; 1&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; EnO_switch_123456&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; eg_fl_Licht&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; AABBCC01&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; EG_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; ...&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&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; 128&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Definition von TCM / Gateway ==&lt;br /&gt;
FHEM kann mit einem Funkgateway, das auf einem TCM-Modul basiert, EnOcean-Funk empfangen und senden. &lt;br /&gt;
Bisher gibt es zwei Transceiver Chips von EnOcean: &lt;br /&gt;
* TCM120 (ausgelaufen)&lt;br /&gt;
** für den USB-Port: [https://embedded-intelligence.de/de/products/hardware/bsc-bor.html BSC BOR] &lt;br /&gt;
* TCM310 &lt;br /&gt;
** als USB-Stick: [http://www.enocean.com/de/enocean_module/usb-300-oem/ USB 300] und [http://busware.de/tiki-index.php?page=EUL Busware EUL]&lt;br /&gt;
** als Aufsteckmodul für Raspberry Pi: [http://www.enocean.com/de/enocean-pi/ EnOceanPi]&amp;lt;BR&amp;gt; &lt;br /&gt;
::* Beim Raspberry Pi 3 muss der GPIO-Port auf den Hardware-UART0 umgestellt werden: [[Raspberry Pi 3: GPIO-Port Module und Bluetooth]]&lt;br /&gt;
::* Die seriellen Schnittstelle /dev/ttyAMA0 muss am Raspberry Pi freigeschaltet werden, damit das EnOceanPi-Modul funktionsfähig ist. Zur Vorgehensweise siehe: {{Link2Forum|Topic=14814|Message=95265}}&lt;br /&gt;
&lt;br /&gt;
Zudem existiert eine {{Link2Forum|Topic=22635|Message=160582|LinkText=Lösung zur kabelgebundenen Anbindung}} des FHEM-Rechners mittels Eltako FGW14 an den [[EnOcean-Eltako-RS485-Bus|Eltako RS485-Bus]], über die sowohl Busaktoren als auch EnOcean-Funkaktoren gesteuert werden können und auch EnOcean-Funktelegramme über das [[EnOcean-Eltako-RS485-Bus|FAM14 Funkantennenmodul]] am RS485-Bus empfangen werden können.&lt;br /&gt;
&lt;br /&gt;
Das TCM-basierte Gateway wird unter Linux nach Anschluss an den FHEM-Rechner beim FHEM-Start oder ohne FHEM-Neustart durch Aufruf des Befehls &amp;lt;code&amp;gt;usb scan&amp;lt;/code&amp;gt; zumeist automatisch erkannt und grundlegend durch entsprechende Einträge in der Konfiguration definiert. Ein manuelles Anlegen des TCM-Moduls oder Eingriffe in die Konfiguration sind normalerweise nicht notwendig. Werden am FHEM-Server unter Linux mehrere USB-Gateways eingesetzt, empfiehlt es sich zur Erhöhung der Betriebsstabilität das TCM-Gateway über [[Trick_der_Woche#CUL_.26_CO_.C3.BCber_Serial_ID-einbinden|Serial-by-Id]] anzusprechen. Unter Windows ist ein manuelles Anlegen der Definition des TCM-Gateways wegen fehlender Unterstützung des Befehls &amp;lt;code&amp;gt;usb scan&amp;lt;/code&amp;gt; notwendig. &lt;br /&gt;
&lt;br /&gt;
Bei RS485-basierte Gateways (bspw. FGW14) muss in der [[Konfiguration]] zusätzlich manuell das Attribut &amp;lt;code&amp;gt;comType&amp;lt;/code&amp;gt; auf &amp;lt;code&amp;gt;RS485&amp;lt;/code&amp;gt; gesetzt werden. &lt;br /&gt;
&lt;br /&gt;
Beispiele der automatisch erzeugten define-Zeile in der Konfiguration:&lt;br /&gt;
&lt;br /&gt;
EnOceanPi an Raspberry Pi:&lt;br /&gt;
 define TCM_ESP3_0 TCM ESP3 /dev/ttyAMA0@57600&lt;br /&gt;
&lt;br /&gt;
TCM310/USB300 an Fritzbox oder Raspberry Pi:&lt;br /&gt;
 define TCM_ESP3_0 TCM ESP3 /dev/ttyUSB0@57600&lt;br /&gt;
&lt;br /&gt;
Hier folgt ein Beispiel der define-Zeile in der Konfiguration für kabelgebundene Anbindung mit FGW14 über serielle Schnittstelle&lt;br /&gt;
 define TCM_ESP2_0 TCM ESP2 /dev/ttyS3@57600&lt;br /&gt;
 attr TCM_ESP2_0 comType RS485                    &amp;lt;---- Manuell zu setzen&lt;br /&gt;
&lt;br /&gt;
Nach erfolgreicher Definition ist das Gateway im Raum &amp;quot;Everything&amp;quot; in der Gruppe &amp;quot;TCM&amp;quot; zu finden. Wenn neben dem Gatewaynamen &amp;quot;initialized&amp;quot; oder &amp;quot;opened&amp;quot; angezeigt wird, ist FHEM in der Lage mit den EnOcean-Geräten zu kommunizieren.&lt;br /&gt;
&lt;br /&gt;
Wie im [[#SenderID|Einführungsabschnitt]] bereits erläutert hat jedes sendende EnOcean-Endgerät mindestens eine eindeutige SenderID. Diese SenderID kann aus Sicherheitsgründen nicht vom EnOcean-Gateway simuliert werden. Vielmehr hat das Gateway eigene SenderIDs, die separat in die Endgeräte/Aktoren angelernt werden müssen. Das Gateway stellt 128 verschiedene SenderIDs zur Verfügung. Ausgehend von der baseID, die bei jedem Gateway grundsätzlich anders ist, werden die SenderIDs fortlaufend hexadezimal hochgezählt:&lt;br /&gt;
* FHEM stehen 127 fortlaufende eigene SenderID zur Verfügung&lt;br /&gt;
* beginnend mit der baseID des TCM + 1&lt;br /&gt;
&lt;br /&gt;
Die baseID des TCM erhält man durch Eingabe von&lt;br /&gt;
 get TCM_ESP3_0 baseID &lt;br /&gt;
in das Befehl-Eingabefeld (TCM_ESP3_0 gegebenenfalls durch den eigenen Gatewaynamen ersetzen) oder duch Auswahl dieses Befehls in den Objektdetails des FHEM-Gateway-Device.&lt;br /&gt;
&lt;br /&gt;
Das Webfrontend zeigt dann beispielsweise:&lt;br /&gt;
 BaseID=AABBCC00,RemainingWriteCycles=0A&lt;br /&gt;
Die niedrigste SenderID in diesem Beispiel ist AABBCC0&#039;&#039;&#039;1&#039;&#039;&#039; (BaseID=AABBCC00 +1 HEX!!!), die nächste AABBCC0&#039;&#039;&#039;2&#039;&#039;&#039; usw.&lt;br /&gt;
&lt;br /&gt;
Nach der Definition des Gateways und Ermittlung der baseID des Gateways kann nun der nächste Schritt, die Definition der EnOcean-Geräte in FHEM, erfolgen.&lt;br /&gt;
&lt;br /&gt;
== Definition von Geräten ==&lt;br /&gt;
=== Definition / Anlernvorgang (Teach-In) ===&lt;br /&gt;
Damit FHEM und EnOcean-Geräte miteinander kommunizieren können, müssen sie miteinander bekannt gemacht werden. Dies geschieht durch Definition des Gerätes in FHEM und den Anlernvorgang. Dazu muss sich FHEM im {{Link2CmdRef|Anker=TCM_learningMode|Label=learningMode}} befinden. Viele Geräte werden von FHEM während des Anlernvorgangs automatisch erkannt und definiert. Dennoch ist ein grundlegendes Verständnis der Anlernvorgänge und Unterscheidungsprinzipen in FHEM und EnOcean notwendig. Sofern das Gerät Bestätigungstelegramme verschicken kann, sind diese zwingend &#039;&#039;&#039;vorher&#039;&#039;&#039; am Gerät einzuschalten (u.a. Eltako). &lt;br /&gt;
&lt;br /&gt;
FHEM entnimmt die Angaben, wie ein Funk-Telegramm für ein bestimmtes Gerät aufgebaut ist, im Wesentlichen den folgenden Attributen der Definition des Gerätes:&lt;br /&gt;
*&amp;lt;code&amp;gt;subtype&amp;lt;/code&amp;gt;: FHEM-Profilname, der als Klartextname das genutzte EEP des Gerätes (EEP steht meist in der Bedienungsanleitung des Gerätes) repräsentiert . Einige FHEM-Profile z. B. &amp;quot;roomSensorControl.01&amp;quot; bedienen mehrere ähnliche EEP gleichzeitig.&lt;br /&gt;
*&amp;lt;code&amp;gt;manufID&amp;lt;/code&amp;gt;: Code für den Hersteller des Gerätes (Übersetzungstabelle Code zu Name ist in der [http://sourceforge.net/p/fhem/code/HEAD/tree/trunk/fhem/FHEM/10_EnOcean.pm 10_EnOcean.pm] unter %EnO_manuf)&lt;br /&gt;
*&amp;lt;code&amp;gt;model&amp;lt;/code&amp;gt;: Modell des Gerätes&lt;br /&gt;
*&amp;lt;code&amp;gt;eep&amp;lt;/code&amp;gt;: EEP des Gerätes. Unter anderem werden die Informationen zur automatischen Anlage von [[FileLog]], [[SVG]] und des Attributs &amp;lt;code&amp;gt;webCmd&amp;lt;/code&amp;gt; anhand des EEPs ermittelt.&lt;br /&gt;
Während des Anlernvorgangs werden diese Angaben von FHEM soweit wie möglich automatisch in der Definition vorbelegt. Hinweise zu den Besonderheiten von bestimmten Geräten und EEP finden sich oft in der {{Link2CmdRef|Anker=EnOcean}} zu EnOcean. Darum bitte immer in der commandref zunächst nach dem speziellen Gerät (Modellbezeichnung) suchen, wenn dies keinen Treffer liefert nach dem verwendeten EEP suchen. Die gegebenen Hinweise und Erläuterungen dort beachten.&lt;br /&gt;
 &lt;br /&gt;
Die Definition und der Anlernvorgang unterscheiden sich je nach Gerätetyp:&lt;br /&gt;
* Sensoren:&lt;br /&gt;
** [[#Schalter/Switch|Schalter (EEP RPS)]]: werden automatisch beim ersten empfangenen Funktelegramm in FHEM mit den notwendigen Attributen angelegt.&lt;br /&gt;
** [[#Kontakte|Kontakte (EEP 1BS)]]: werden automatisch beim ersten empfangenen Funktelegramm in FHEM mit den notwendigen Attributen angelegt.&lt;br /&gt;
** [[#Sonstige_Sensoren|Sonstige Sensoren (EEP 4BS)]]: Durch Versand eines speziellen Anlern-Funktelegramms können sie in FHEM automatisch mit den notwendigen Attributen angelegt werden. Im Anlerntelegramm übermittelt der Sensor FHEM die EEP-Profilangabe und die Hersteller-ID. Aufgrund dieser Angaben kann FHEM das Gerät eindeutig erkennen und die richtigen Attribute in FHEM setzen. Einige wenige Sensoren verschicken leider ein Anlerntelegramm ohne EEP-Profilangabe und/oder Herstellerangabe (Bsp: Omnio Ratio eagle-PM101). Bei diesen Sensoren müssen die Attribute subType, manufID und/oder model manuell in FHEM gesetzt werden, damit eine richtige Auswertung der Funktelegramme erfolgt.&lt;br /&gt;
* Aktoren (4BS, VLD, UTE, MSC): Bei den Aktoren gibt es je nach Gerätetyp verschiedene Anlernvorgänge, die unterschiedlich in FHEM ausgeführt werden. Einige Aktoren unterstützen auch mehrere Anlernvorgänge. Grundsätzlich muss wegen abweichender Vorgehensweise in FHEM unterschieden werden zwischen&lt;br /&gt;
** [[#uni- versus bidirektional|unidirektionalen]] Aktoren und&lt;br /&gt;
*** [[#Teach-In_als_Tasteremulation|Teach-In als Tasteremulation]]&lt;br /&gt;
*** [[#Teach-In_als_Gateway.2FPC-Steuerung|Teach-In als Gateway/PC-Steuerung]]&lt;br /&gt;
** [[#uni- versus bidirektional|bidirektionalen]] Aktoren&lt;br /&gt;
*** [[#Teach-In_als_Tasteremulation_2|Teach-In als Tasteremulation]]&lt;br /&gt;
*** [[#Unidirektionales_4BS-Teach-In|Unidirektionales 4BS-Teach-In]]&lt;br /&gt;
*** [[#Bidirektionales_4BS-Teach-In|Bidirektionales 4BS-Teach-In]]&lt;br /&gt;
*** [[#UTE-Teach-In|UTE-Teach-In]]&lt;br /&gt;
&lt;br /&gt;
In den nachfolgenden Gliederungspunkten wird beispielhaft für je ein Gerät aus den obigen Gerätetypen die Einbindung in FHEM erläutert.&lt;br /&gt;
&lt;br /&gt;
Grundlegend gilt immer:&lt;br /&gt;
FHEM legt sendende, noch nicht definierte EnOcean Geräte selbst an, wenn&lt;br /&gt;
* in Konfiguration autocreate aktiviert ist:&lt;br /&gt;
** &amp;lt;code&amp;gt;{{Link2CmdRef|Lang=de|Anker=autocreate|Label=define autocreate autocreate}}&amp;lt;/code&amp;gt;&lt;br /&gt;
* FHEM/das TCM-Modul sich im &amp;lt;code&amp;gt;learningMode&amp;lt;/code&amp;gt; befindet und&lt;br /&gt;
* FHEM eine Nachricht vom noch nicht definierten EnOcean Gerät empfängt&lt;br /&gt;
Im Webfrontend werden automatisch angelegte neue Geräte im Raum &amp;quot;EnOcean&amp;quot; angezeigt.&lt;br /&gt;
&lt;br /&gt;
=== Sensoren ===&lt;br /&gt;
&#039;&#039;&#039;Sensoren Beispiele:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Schalter/Switch ====&lt;br /&gt;
[[EnOcean-PTM-210-Taster|PTM 210 - Schaltermodul]] ([http://www.enocean.com/de/enocean_module/ptm-210-data-sheet-pdf/ Datenblatt])&lt;br /&gt;
&lt;br /&gt;
EEP: F6-02-xx&lt;br /&gt;
&lt;br /&gt;
FHEM in den learningMode (&amp;lt;code&amp;gt;set &amp;lt;nowiki&amp;gt;&amp;lt;IODev&amp;gt; teach &amp;lt;time/s&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) versetzen, dazu im Befehl-Eingabefeld eingeben:&lt;br /&gt;
 set TCM_ESP3_0 teach 600&lt;br /&gt;
&lt;br /&gt;
Dann einen beliebigen Taster des Moduls drücken (und loslassen). Beim Drücken des Tasters wird vom Taster eine Nachricht ausgesendet, die von FHEM empfangen wird. Daraufhin definiert FHEM automatisch den Taster und der Taster ist in FHEM angelernt. FHEM fügt dazu folgenden Code zur Konfiguration hinzu:&lt;br /&gt;
* exemplarischer Auszug aus Konfiguration&lt;br /&gt;
 define EnO_switch_FFC54500 EnOcean FFC54500                    &amp;lt;-- &amp;quot;FFC54500&amp;quot; ist die 8-stellige Hex-SenderID des Tasters&lt;br /&gt;
 attr EnO_switch_FFC54500 IODev TCM_ESP3_0&lt;br /&gt;
 attr EnO_switch_FFC54500 room EnOcean&lt;br /&gt;
 attr EnO_switch_FFC54500 subType switch                        &amp;lt;-- handelt sich um einen Schalter&lt;br /&gt;
 # attr EnO_switch_FFC54500 eventMap AI:off A0:on BI:an B0:aus  &amp;lt;-- bei Bedarf ... die gemapten Werte (hier: off, on, an, aus) sollen eindeutig sein&lt;br /&gt;
 define FileLog_EnO_switch_FFC54500 FileLog ./log/EnO_switch_FFC54500-%Y.log EnO_switch_FFC54500&lt;br /&gt;
 attr FileLog_EnO_switch_FFC54500 logtype text&lt;br /&gt;
&lt;br /&gt;
Ein Schalter (hier: FT55) hat vier Taster:&lt;br /&gt;
{|&lt;br /&gt;
| &#039;&#039;&#039;Taster&#039;&#039;&#039; || &#039;&#039;&#039;in FHEM&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| links oben || A0&lt;br /&gt;
|-&lt;br /&gt;
| links unten || AI (nicht &amp;quot;eins&amp;quot; sondern &amp;quot;i&amp;quot;!)&lt;br /&gt;
|-&lt;br /&gt;
| rechts oben || B0&lt;br /&gt;
|-&lt;br /&gt;
| rechts unten || BI&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Das Log FileLog_EnO_switch_FFC54500 zeichnet beim einmaligen Drücken des linken unteren Tasters (&amp;quot;AI&amp;quot;) folgendes auf:&lt;br /&gt;
 2014-01-01_07:00:01 EnO_switch_FFC54500 buttons: pressed&lt;br /&gt;
 2014-01-01_07:00:01 EnO_switch_FFC54500 channelA: AI&lt;br /&gt;
 2014-01-01_07:00:01 EnO_switch_FFC54500 AI&lt;br /&gt;
 2014-01-01_07:00:02 EnO_switch_FFC54500 buttons: released&lt;br /&gt;
&lt;br /&gt;
Der angelegte Sensor repräsentiert im Webfrontend den physischen Schalter (bspw. an der Wand). Ein Druck auf den physischen Taster ändert den Zustand im Webfrontend. Jedoch führt ein Schalten des Repräsentanten im Webfrontend nicht zu einer Schaltung des Aktors.&lt;br /&gt;
&lt;br /&gt;
FHEM kann sich &#039;&#039;&#039;nicht&#039;&#039;&#039; als einer der vorhandenen (automatisch angelegten) physischen Sensoren ausgeben (um z.B. das Licht zu schalten), sondern verwendet eigene SenderIDs. Diese FHEM-eigenen SenderIDs können in EnOcean-Aktoren eingelernt werden, damit die Aktoren auf FHEM reagieren [[#Aktoren|siehe unten]].&lt;br /&gt;
&lt;br /&gt;
==== Kontakte ====&lt;br /&gt;
[[EnOcean-STM-250-Fenster-T%C3%BCrkontakt|STM 320 Batterieloses Magnetkontakt-Funkmodul]] ([http://www.enocean.com/de/enocean_module/stm-320-data-sheet-pdf/ Datenblatt])&lt;br /&gt;
&lt;br /&gt;
EEP: D5-00-01&lt;br /&gt;
&lt;br /&gt;
FHEM in den learningMode versetzen, dazu im Befehl-Eingabefeld eingeben:&lt;br /&gt;
 set TCM_ESP3_0 teach 600&lt;br /&gt;
&lt;br /&gt;
Anlerntelegramm laut Anleitung verschicken oder Magnetkontakt öffnen und schließen.&lt;br /&gt;
&lt;br /&gt;
Der Kontakt wird automatisch in FHEM definiert und ist angelernt.&lt;br /&gt;
&lt;br /&gt;
* exemplarischer Auszug aus Konfiguration&lt;br /&gt;
 define EnO_contact_0000FF53 EnOcean 0000FF53&lt;br /&gt;
 attr EnO_contact_0000FF53 IODev TCM_ESP3_0&lt;br /&gt;
 attr EnO_contact_0000FF53 room EnOcean&lt;br /&gt;
 attr EnO_contact_0000FF53 subType contact&lt;br /&gt;
 define FileLog_EnO_contact_0000FF53 FileLog ./log/EnO_contact_0000FF53-%Y.log EnO_contact_0000FF53&lt;br /&gt;
 attr FileLog_EnO_contact_0000FF53 logtype text&lt;br /&gt;
 attr FileLog_EnO_contact_0000FF53 room EnOcean&lt;br /&gt;
&lt;br /&gt;
==== Sonstige Sensoren ====&lt;br /&gt;
===== 4BS-Teach-In =====&lt;br /&gt;
FHEM in den learningMode versetzen, dazu im Befehl-Eingabefeld eingeben:&lt;br /&gt;
 set TCM_ESP3_0 teach 600&lt;br /&gt;
Dann das Anlerntelegramm laut Bedienungsanleitung am Sensor auslösen. Der Sensor wird dann automatisch in FHEM definiert und ist angelernt.&lt;br /&gt;
&lt;br /&gt;
===== Profilloses 4BS-Teach-In =====&lt;br /&gt;
Omnio Ratio eagle-PM101 Licht- und Anwesenheitssensor ([http://www.omnio.ch/content-en/downloads/Betriebsanleitungen/2902000_Betriebsanleitung_ea.pdf Betriebsanleitung])&lt;br /&gt;
&lt;br /&gt;
FHEM in den learningMode versetzen, dazu im Befehl-Eingabefeld eingeben:&lt;br /&gt;
 set TCM_ESP3_0 teach 600&lt;br /&gt;
&lt;br /&gt;
Das Anlerntelegramm vom Omnio Ratio eagle-PM101 verschicken (MÖGLICH??)&lt;br /&gt;
&lt;br /&gt;
Im angelegten FHEM-Device manuell das Attribut &amp;lt;code&amp;gt;subType&amp;lt;/code&amp;gt; auf &amp;lt;code&amp;gt;PM101&amp;lt;/code&amp;gt; setzen.&lt;br /&gt;
&lt;br /&gt;
=== Aktoren ===&lt;br /&gt;
Die Bedienungsanleitungen und die commandref liefern Informationen, welche Anlernvorgänge der Aktor unterstützt. Finden sich keine Hinweise auf besondere PC- oder Gateway-Anlernvorgänge, so kann FHEM als &amp;quot;Notlösung&amp;quot; immer als virtueller FHEM-Schalter (Tasteremulation) angelernt werden. Einige Aktoren unterstützen mehrere Arten von Anlernvorgängen. Hier ist der mit den meisten/besten Steuerungsmöglichkeiten zu bevorzugen.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Aktoren Beispiele:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== unidirektionale Aktoren ====&lt;br /&gt;
Bei unidirektionalen Aktoren steht eine SenderID des TCM-Gateways immer im &amp;lt;code&amp;gt;define&amp;lt;/code&amp;gt; des FHEM-Devices. Mit dieser SenderID steuert FHEM den Aktor. Diese SenderID muss dazu im Aktor eingelernt werden.&lt;br /&gt;
{{Hinweis|&#039;&#039;&#039;MERKE:&#039;&#039;&#039; Eine SenderID des TCM-Gateways muss bei unidirektionalen Aktoren immer im &amp;lt;code&amp;gt;define&amp;lt;/code&amp;gt; des Devices stehen.&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;MERKE:&#039;&#039;&#039; Bei unidirektionalen Aktoren stimmt der Status des FHEM-Devices im Webfrontend nur mit dem realen Aktorzustand überein, wenn ausschließlich über FHEM gesteuert wird ([[#Physischer_EnOcean-_und_virtueller_FHEM-Schalter_zu_einem_Device_zusammenfassen|Abhilfe]])}}&lt;br /&gt;
===== Teach-In als Tasteremulation =====&lt;br /&gt;
PEHA 451 FU-EP o.T. (Schaltaktor unidirektional) &lt;br /&gt;
&lt;br /&gt;
Eine [[#Wie ermittelt man freie Sender-IDs des TCM-basierten Funkgateways?|freie SenderID des TCM-basierten Gateways heraussuchen]] und diese als EnOcean-Gerät in FHEM definieren, dazu im Befehl-Eingabefeld eingeben:&lt;br /&gt;
 define eg_fl_Licht EnOcean AABBCC01&lt;br /&gt;
&lt;br /&gt;
Alternativ kann man FHEM auch anweisen, für das EnOcean-Gerät selbst die nächste freie SenderID zu ermitteln. Die Definition ist dann folgendermaßen vorzunehmen:&lt;br /&gt;
 define eg_fl_Licht EnOcean getNextID&lt;br /&gt;
&lt;br /&gt;
Anschließend das Attribut &amp;lt;code&amp;gt;subType&amp;lt;/code&amp;gt; beim erzeugten Device auf &amp;lt;code&amp;gt;switch&amp;lt;/code&amp;gt; setzen. Durch diese Definition wird ein 8-fach EnOcean-Taster erzeugt. Der Taster hat 4 Kanäle (A,B,C,D) zu je 2 Tasten (0,I). Alle diese 8 Taster senden mit der gleichen SenderID des TCM. Das entspricht einem Gerät mit 4 Schaltwippen die jeweils &amp;quot;oben&amp;quot; &#039;&#039;&#039;oder&#039;&#039;&#039; &amp;quot;unten&amp;quot; gedrückt sein können. FHEM emuliert mit diesem EnOcean-Gerät einen EnOcean-Schalter (darum auch &amp;quot;virtueller FHEM-Schalter&amp;quot;). Der Taster 0 des Kanal A wird &amp;quot;gedrückt&amp;quot; mit &amp;lt;code&amp;gt;set eg_fl_Licht A0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Dieser virtuelle FHEM-Schalter wird in den Aktor wie ein physischer Schalter eingelernt. Den Aktor in den Anlernmodus bringen (Taste LRN/SET drücken) und den virtuellen FHEM-Schalter betätigen, indem im Befehl-Eingabefeld eingeben wird:&lt;br /&gt;
 set eg_fl_Licht B0&lt;br /&gt;
Wenn der Aktor den erfolgreichen Anlernvorgang signalisiert, den Anlernmodus am Aktor ausschalten.&lt;br /&gt;
&lt;br /&gt;
* exemplarischer Auszug aus Konfiguration&lt;br /&gt;
 define eg_fl_Licht EnOcean AABBCC01        &amp;lt;--- AABBCC01 ist eine der 127 SenderID&#039;s des TCM, mit der FHEM sendet &lt;br /&gt;
 attr eg_fl_Licht room EG_Flur&lt;br /&gt;
 attr eg_fl_Licht eventMap BI:off B0:on&lt;br /&gt;
 attr eg_fl_Licht subType switch&lt;br /&gt;
 define FileLog_eg_fl_Licht FileLog ./log/ eg_fl_Licht-%Y.log eg_fl_Licht&lt;br /&gt;
 attr FileLog_eg_fl_Licht logtype text&lt;br /&gt;
&lt;br /&gt;
Der Status des Devices im Webfrontend stimmt bei unidirektionalen Aktoren nur, wenn die Steuerung des Aktors ausschließlich über FHEM erfolgt. Wird der Aktor sowohl über einen physischen Schalter als auch über FHEM gesteuert, so müssen die Status der beiden Devices für physischen und virtuellen Schalter im Webfrontend verknüpft werden, damit der richtige Status des Aktors angezeigt wird ([[#Physischer EnOcean- und virtueller FHEM-Schalter zu einem Device zusammenfassen |siehe unten]]).&lt;br /&gt;
&lt;br /&gt;
===== Teach-In als Gateway/PC-Steuerung =====&lt;br /&gt;
&amp;quot;ältere&amp;quot; Eltako FSB61 (Produktionszeitraum KW 43/10 - KW 40/11 [http://www.eltako.com/fileadmin/downloads/de/_bedienung/FSB61NP_30200420-3_dtsch.pdf Bedienungsanleitung])&lt;br /&gt;
&lt;br /&gt;
EEP: A5-3F-7F &lt;br /&gt;
&lt;br /&gt;
Eine [[#Wie ermittelt man freie Sender-IDs des TCM-basierten Funkgateways?|freie SenderID des TCM-basierten Gateways heraussuchen]] und diese als EnOcean-Gerät in FHEM definieren, dazu im Befehl-Eingabefeld eingeben:&lt;br /&gt;
 define eg_fl_Rollo EnOcean AABBCC02&lt;br /&gt;
&lt;br /&gt;
Alternativ kann man FHEM auch anweisen, für das EnOcean-Gerät selbst die nächste freie SenderID zu ermitteln. Die Definiton ist dann folgendermaßen vorzunehmen:&lt;br /&gt;
 define eg_fl_Rollo EnOcean getNextID&lt;br /&gt;
&lt;br /&gt;
Beim erzeugten FHEM-Device muss das Attribut &amp;lt;code&amp;gt;subType&amp;lt;/code&amp;gt; auf &amp;lt;code&amp;gt;manufProfile&amp;lt;/code&amp;gt; gesetzt werden. Die Attribute &amp;lt;code&amp;gt;manufID&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;model&amp;lt;/code&amp;gt; sind auf die unten in der Konfiguration gezeigten Werte zu setzen.&lt;br /&gt;
&lt;br /&gt;
Dieser virtuelle FHEM-Schalter wird in den Aktor als PC/Szenentaster angelernt indem im Befehl-Eingabefeld eingeben wird:&lt;br /&gt;
 set eg_fl_Rollo teach&lt;br /&gt;
Wenn der Aktor den erfolgreichen Anlernvorgang signalisiert, den Anlernmodus am Aktor ausschalten.&lt;br /&gt;
&lt;br /&gt;
* exemplarischer Auszug aus Konfiguration&lt;br /&gt;
 define eg_fl_Rollo EnOcean AABBCC02        &amp;lt;--- AABBCC02 ist eine der 127 SenderID&#039;s des TCM, mit der FHEM sendet &lt;br /&gt;
 attr eg_fl_Rollo room EG_Flur&lt;br /&gt;
 attr eg_fl_Rollo subType manufProfile&lt;br /&gt;
 attr eg_fl_Rollo manufID 00D&lt;br /&gt;
 attr eg_fl_Rollo model Eltako_FSB61&lt;br /&gt;
&lt;br /&gt;
Der Status des Devices im Webfrontend stimmt bei unidirektionalen Aktoren nur, wenn die Steuerung des Aktors ausschließlich über FHEM erfolgt. Wird der Aktor sowohl über einen physischen Schalter als auch über FHEM gesteuert, so müssen die Status der beiden Devices für physischen und virtuellen Schalter im Webfrontend verknüpft werden, damit der richtige Status des Aktors angezeigt wird ([[#Physischer EnOcean- und virtueller FHEM-Schalter zu einem Device zusammenfassen |siehe unten]]).&lt;br /&gt;
&lt;br /&gt;
==== bidirektionale Aktoren ====&lt;br /&gt;
Bei bidirektionalen Aktoren steht die SenderID des Aktors im &amp;lt;code&amp;gt;define&amp;lt;/code&amp;gt; des FHEM-Devices. FHEM ordnet empfangene Bestätigungstelegramme anhand der Aktor-SenderID dem passenden FHEM-Device zu. Eine SenderID des TCM-Gateways mit der FHEM den Aktor steuert steht bei bidirektionalen Aktoren immer im Attribut &amp;lt;code&amp;gt;subDef&amp;lt;/code&amp;gt;. Diese SenderID muss dazu im Aktor eingelernt werden.&lt;br /&gt;
{{Hinweis|&#039;&#039;&#039;MERKE:&#039;&#039;&#039; Eine SenderID des TCM-Gateways muss bei bidirektionalen Aktoren immer im Attribut &amp;lt;code&amp;gt;subDef&amp;lt;/code&amp;gt; des Devices stehen.&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;MERKE:&#039;&#039;&#039; Bei bidirektionalen Aktoren stimmt nach korrekter Einbindung in FHEM der Status des FHEM-Devices im Webfrontend immer mit dem realen Aktorzustand überein.}}&lt;br /&gt;
===== Teach-In als Tasteremulation =====&lt;br /&gt;
[[EnOcean-FSR61VA-10A-Stromsto%C3%9F-Schaltrelais_mit_Strommessung|10A-Stromstoß-Schaltrelais mit Strommessung FSR61VA]]&amp;lt;br/&amp;gt;&lt;br /&gt;
Schaltrelais (bidirektional)&lt;br /&gt;
&lt;br /&gt;
FHEM in den learningMode versetzen, dazu im Befehl-Eingabefeld eingeben:&lt;br /&gt;
 set TCM_ESP3_0 teach 600&lt;br /&gt;
&lt;br /&gt;
Die [[#SenderID|SenderID]] des Aktors heraussuchen und diese als EnOcean-Gerät in FHEM definieren, dazu im Befehl-Eingabefeld eingeben:&lt;br /&gt;
 define EnO_switch_FSR61VA EnOcean FFAABBC0&lt;br /&gt;
&lt;br /&gt;
Eine freie SenderID des TCM-basierten Gateways heraussuchen und diese im Attribut &amp;lt;code&amp;gt;subDef&amp;lt;/code&amp;gt; des angelegten Devices hinterlegen.&lt;br /&gt;
&lt;br /&gt;
Anschließend die Attribute &amp;lt;code&amp;gt;subType&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;switchMode&amp;lt;/code&amp;gt; wie im unten wiedergegebenen exemplarischen Auszug aus der Konfiguration anlegen.&lt;br /&gt;
&lt;br /&gt;
Damit der FSR61VA auf FHEM reagieren kann (Ein/Ausschalten), wird das FHEM-Device EnO_switch_FSR61VA in den FSR61VA als Richtungstaster (bzw. Taster ein/aus) eingelernt:&lt;br /&gt;
# Unterer Drehschalter je nach Produktionswoche des FSR61VA (aufgedruckt):&lt;br /&gt;
## bis KW 2/13: &amp;quot;ca. Mitte&amp;quot; (Taster Ein/Aus einlernen)&lt;br /&gt;
## ab KW 3/13 bis KW 10/14: &amp;quot;60&amp;quot; (Taster Ein/Aus einlernen)&lt;br /&gt;
## ab KW 11/14: &amp;quot;40&amp;quot; (Richtungstaster einlernen)&lt;br /&gt;
# Oberer Funktions-Drehschalter: &amp;quot;LRN&amp;quot; (LED blinkt)&lt;br /&gt;
# FHEM Eingabefeld: „set EnO_switch_FSR61VA B0“, &amp;amp;lt;Enter&amp;amp;gt; (LED erlischt)&lt;br /&gt;
# Oberer Funktions-Drehschalter: Eine der ESV-Einstellungen&lt;br /&gt;
# Unterer Funktions-Drehschalter: auf &amp;quot;oo&amp;quot; einstellen (unendlich)&lt;br /&gt;
&lt;br /&gt;
* exemplarischer Auszug aus der Konfiguration&lt;br /&gt;
 define EnO_switch_FSR61VA EnOcean FFAABBC0         --&amp;gt; EnO_switch_FSR61VA ist ein frei gewählter eindeutiger Name&lt;br /&gt;
                                                        für das FHEM-Device.&lt;br /&gt;
                                                        FFAABBC0 ist die erste am Boden des FSR61VA aufgedruckte SenderID. &lt;br /&gt;
                                                        Damit sendet das FSR61VA den Schaltzustand (B0/BI --&amp;gt; ein/aus)&lt;br /&gt;
 attr EnO_switch_FSR61VA IODev TCM_ESP3_0             --&amp;gt; TCM_ESP3_0 ist der Name des Devices, mit dem FHEM EnOcean-Funk &lt;br /&gt;
                                                        sendet und empfängt.&lt;br /&gt;
 attr EnO_switch_FSR61VA subDef FF998877            --&amp;gt; FF998877 ist eine der 127 SendeIDs des TCM_ESP3_0, damit sendet FHEM an den FSR61VA&lt;br /&gt;
 attr EnO_switch_FSR61VA subType switch             --&amp;gt; es handelt sich um einen EnOcean Schalter (der kann A0, AI, B0, BI,...)&lt;br /&gt;
 attr EnO_switch_FSR61VA switchMode pushbutton      --&amp;gt; als &amp;quot;pushbutton&amp;quot; sendet FHEM bei einem &lt;br /&gt;
                                                        &amp;quot;set EnO_switch_FSR61VA B0&amp;quot; nach dem Kommando (B0) noch ein &amp;quot;release&amp;quot;.&lt;br /&gt;
                                                        Das brauchts, wenn der FSR61VA als ES oder ESV betrieben wird.&lt;br /&gt;
                                                        Sonst wird jedes &amp;quot;set&amp;quot;-Kommando vom FSR61VA als  &lt;br /&gt;
                                                        &amp;quot;länger als eine Sekunde gedrückt&amp;quot; interpretiert -&amp;gt; &amp;quot;Tasterdauerlicht&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===== Unidirektionales 4BS-Teach-In =====&lt;br /&gt;
[[EnOcean-FSR14-4x-RS485-Bus-Schaltaktor-4-Kanal-Stromsto%C3%9F-Schaltrelais|RS485-Bus-Aktor 4-Kanal-Stromstoß-Schaltrelais FSR14]]&amp;lt;br/&amp;gt;&lt;br /&gt;
Schaltrelais (bidirektional)&lt;br /&gt;
&lt;br /&gt;
FHEM in den learningMode versetzen, dazu im Befehl-Eingabefeld eingeben:&lt;br /&gt;
 set TCM_ESP3_0 teach 600&lt;br /&gt;
&lt;br /&gt;
Die [[#SenderID|SenderID]] des Aktors heraussuchen und diese als EnOcean-Gerät in FHEM definieren, dazu im Befehl-Eingabefeld eingeben:&lt;br /&gt;
 define EnOcean_switch_FEFF4AF8 EnOcean FEFF4AF8&lt;br /&gt;
&lt;br /&gt;
{{Randnotiz|RNText=Ab {{Link2Forum|Topic=31450|Message=239937|LinkText=Updatestand 04.01.2015}} ist eine manuelle Vergabe einer freien SenderID per &amp;lt;code&amp;gt;subDef&amp;lt;/code&amp;gt; nicht mehr notwendig. Beim ersten Senden des &amp;quot;teach&amp;quot;-Befehls an den Aktor wird eine freie SenderID vergeben, sofern keine gültige SenderID eingetragen war.}}&lt;br /&gt;
Eine freie SenderID des TCM-basierten Gateways heraussuchen und diese im Attribut &amp;lt;code&amp;gt;subDef&amp;lt;/code&amp;gt; des angelegten Devices hinterlegen.&lt;br /&gt;
&lt;br /&gt;
Anschließend die Attribute &amp;lt;code&amp;gt;subType&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;gwCmd&amp;lt;/code&amp;gt; wie im unten wiedergegebenen exemplarischen Auszug aus der Konfiguration anlegen.&lt;br /&gt;
&lt;br /&gt;
Jetzt den Aktor in den Lernmodus versetzen und dann von FHEM das Lerntelegramm verschicken:&lt;br /&gt;
 set EnOcean_switch_FEFF4AF8 teach&lt;br /&gt;
Lernmodus am Aktor ausschalten&lt;br /&gt;
&lt;br /&gt;
* exemplarischer Auszug aus Konfiguration&lt;br /&gt;
 define EnOcean_switch_FEFF4AF8 EnOcean FEFF4AF8   &amp;lt;--- FEFF4AF8 ist hier die SenderID eines FSR14-Kanals (Aktor)&lt;br /&gt;
 attr EnOcean_switch_FEFF4AF8 subDef AABBCC03      &amp;lt;--- AABBCC03 ist eine der 127 SenderID&#039;s des TCM, mit der FHEM sendet [[#Taster - physisch und in FHEM|(siehe unten)]]&lt;br /&gt;
 attr EnOcean_switch_FEFF4AF8 room EnOcean        # Der Raum kann angepasst werden&lt;br /&gt;
 attr EnOcean_switch_FEFF4AF8 gwCmd switching     # Wichtig für FSR14&lt;br /&gt;
 attr EnOcean_switch_FEFF4AF8 subType gateway     # Wichtig für FSR14&lt;br /&gt;
 define FileLog_EnOcean_switch_FEFF4AF8 FileLog ./log/EnOcean_switch_FEFF4AF8-%Y.log EnOcean_switch_FEFF4AF8&lt;br /&gt;
 attr FileLog_EnOcean_switch_FEFF4AF8 logtype text&lt;br /&gt;
&lt;br /&gt;
===== Bidirektionales 4BS-Teach-In =====&lt;br /&gt;
[[EnOcean-MD15-Kleinstellantrieb|Kleinstellantrieb MD15-FTL-xx]]&amp;lt;br/&amp;gt; &lt;br /&gt;
Funkgesteuerter, batteriegespeister Kleinstellantrieb für Raumtemperaturregelung (bidirektional)&lt;br /&gt;
&lt;br /&gt;
EEP: A5-20-01&lt;br /&gt;
&lt;br /&gt;
4BS-Bidirektionales-Teach-In:&lt;br /&gt;
&lt;br /&gt;
#Aktor möglichst komplett zurücksetzen, sofern nicht mehr im Original-Auslieferzustand&lt;br /&gt;
#Falls vorhanden, alle bisherigen FHEM-Devices des Aktors löschen und nach Speichern der geänderten Konfiguration FHEM neu starten&lt;br /&gt;
#FHEM in Lernmodus schalten: &amp;lt;code&amp;gt;set &amp;lt;nowiki&amp;gt;&amp;lt;IODev&amp;gt; teach &amp;lt;time/s&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
#Taster am MD15-FTL-xx so lange drücken, bis ein Signalton ertönt. MD15 bestätigt erfolgreichen Anlernvorgang durch das Aufleuchten der Status-LED und 2 Signaltöne&lt;br /&gt;
#Aktor wird in FHEM automatisch mit allen notwendigen Parametern angelegt.&lt;br /&gt;
&lt;br /&gt;
* exemplarischer Auszug aus Konfiguration&lt;br /&gt;
 define EnO_sensor_01000EFA EnOcean 01000EFA&lt;br /&gt;
 attr EnO_sensor_01000EFA IODev TCM_ESP3_0&lt;br /&gt;
 attr EnO_sensor_01000EFA comMode biDir&lt;br /&gt;
 attr EnO_sensor_01000EFA destinationID unicast&lt;br /&gt;
 attr EnO_sensor_01000EFA manufID 00A&lt;br /&gt;
 attr EnO_sensor_01000EFA room EnOcean&lt;br /&gt;
 attr EnO_sensor_01000EFA subDef AABBCC04&lt;br /&gt;
 attr EnO_sensor_01000EFA subType hvac.01&lt;br /&gt;
 define FileLog_EnO_sensor_01000EFA FileLog ./log/EnO_sensor_01000EFA-%Y.log EnO_sensor_01000EFA&lt;br /&gt;
 attr FileLog_EnO_sensor_01000EFA logtype text&lt;br /&gt;
 attr FileLog_EnO_sensor_01000EFA room EnOcean&lt;br /&gt;
&lt;br /&gt;
===== UTE-Teach-In =====&lt;br /&gt;
[[EnOcean-D-452-FU-EBIM-Aktor-2fach|Einbau-Aktor 452 FU-EBIM o.T.]]&amp;lt;br/&amp;gt;&lt;br /&gt;
2-Kanal-Multifunktionsaktor (bidirektional) mit Energiemessfunktion&lt;br /&gt;
&lt;br /&gt;
EEP: D2-01-08&lt;br /&gt;
&lt;br /&gt;
UTE-Teach-In:&lt;br /&gt;
&lt;br /&gt;
#Aktor möglichst komplett zurücksetzen, sofern nicht mehr im Original-Auslieferzustand&lt;br /&gt;
#Falls vorhanden, alle bisherigen FHEM Devices des Aktors löschen und nach Speichern der geänderten Konfiguration FHEM neu starten&lt;br /&gt;
#FHEM in Lernmodus schalten: &amp;lt;code&amp;gt;set &amp;lt;nowiki&amp;gt;&amp;lt;IODev&amp;gt; teach &amp;lt;time/s&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
#Aktor-Kanal 0 oder 1 in Lernmodus versetzen (immer nur einen Kanal)&lt;br /&gt;
#Aktor-Kanal 0 oder 1 wird in FHEM automatisch mit allen notwendigen Parametern angelegt.&lt;br /&gt;
#Das Anlernen für den zweiten Kanal wie nach 3. bis 5. beschrieben wiederholen&lt;br /&gt;
&lt;br /&gt;
Die Kanäle können jetzt geschaltet werden mit:&lt;br /&gt;
&lt;br /&gt;
*FHEM Device für Kanal 0: set &amp;lt;Name_0&amp;gt; on|off 0&lt;br /&gt;
*FHEM Device für Kanal 1: set &amp;lt;Name_1&amp;gt; on|off 1&lt;br /&gt;
&lt;br /&gt;
Falls gewünscht, kann der Kanal mit dem Attribut attr &amp;lt;Name_0|1&amp;gt; defaultChannel 0|1 voreingestellt werden. Dann entfällt die Angabe des Kanals im set-Befehl.&lt;br /&gt;
&lt;br /&gt;
Die Statusrückmeldungen mit den aktuellen Werten des Energieverbrauches und der Leistung werden vom Aktor automatisch gesendet. Sie werden sowohl als Telegramme nach EEP D2-01-08 als auch nach EEP A5-11-04 mit unterschiedlichen SenderIDs (vgl. Etikett in Original-Verpackung) gesendet.&lt;br /&gt;
Die Rückmeldungen nach EEP D2-01-08 werden von FHEM im Aktor-Device subType actuator.01 berücksichtigt. Die Rückmeldungen nach EEP A5-11-04 werden von FHEM in einem senor-device subType lightCtrlState.02 berücksichtigt. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Besonderheiten für die Anzeige im WebFrontend ==&lt;br /&gt;
&lt;br /&gt;
=== Aufteilung der Kanäle in unabhängige Devices ===&lt;br /&gt;
===== Mehrkanalige bidirektionale Aktoren =====&lt;br /&gt;
Mehrkanalige bidirektionale Aktoren (bspw. Eltako FMS61NP) haben teilweise nur eine SenderID und werden daher in FHEM über ein FHEM-Device im Webfrontend abgebildet und gesteuert. Um im WebFrontend für jeden Kanal ein separates FHEM-Device zur Anzeige und Steuerung zu erhalten, kann [[ReadingsProxy|readingsProxy]] genutzt werden.&lt;br /&gt;
&lt;br /&gt;
Zunächst wird der Aktor standardmäßig in FHEM definiert/angelernt und die Funktion geprüft (hier am Beispiel eines Aktor mit dem Namen &amp;quot;Aktor&amp;quot;). Anschließend wird pro Kanal ein readingProxy-Device mit Bezug auf das Reading channelA, channelB, ... angelegt:&lt;br /&gt;
&lt;br /&gt;
 #Kanal A zur Steuerung mit on und off&lt;br /&gt;
 define AktorKanalA readingsProxy Aktor:channelA&lt;br /&gt;
 attr AktorKanalA setFn {($CMD eq &amp;quot;on&amp;quot;)?&amp;quot;A0&amp;quot;:&amp;quot;AI&amp;quot;;;} &lt;br /&gt;
 attr AktorKanalA setList off on &lt;br /&gt;
 attr AktorKanalA valueFn {($VALUE eq &amp;quot;A0&amp;quot;)?&amp;quot;on&amp;quot;:&amp;quot;off&amp;quot;}&lt;br /&gt;
 attr AktorKanalA webCmd off:on &lt;br /&gt;
&lt;br /&gt;
 #Kanal B zur Steuerung mit on und off&lt;br /&gt;
 define AktorKanalB readingsProxy Aktor:channelB&lt;br /&gt;
 attr AktorKanalB setFn {($CMD eq &amp;quot;on&amp;quot;)?&amp;quot;B0&amp;quot;:&amp;quot;BI&amp;quot;;;} &lt;br /&gt;
 attr AktorKanalB setList off on &lt;br /&gt;
 attr AktorKanalB valueFn {($VALUE eq &amp;quot;B0&amp;quot;)?&amp;quot;on&amp;quot;:&amp;quot;off&amp;quot;}&lt;br /&gt;
 attr AktorKanalB webCmd off:on &lt;br /&gt;
&lt;br /&gt;
Jeder Kanal wird jetzt separat im WebFrontend durch das readingsProxy-Device abgebildet (Statusanzeige) und kann mit diesem gesteuert werden.&lt;br /&gt;
&lt;br /&gt;
Ein ausführlicheres readingsProxy-Beispiel für einen mehrkanaligen Jalousieaktor mit Visualisierung über Slider enthält dieser {{Link2Forum|Topic=59418|Message=512758}}.&lt;br /&gt;
[[Datei:EnO_Jalousie_OmnioAktor_REGJ12-04.png|400px|thumb|center|readingsProxy-Beispiel für einen mehrkanaligen Jalousieaktor mit Visualisierung über Slider]]&lt;br /&gt;
&lt;br /&gt;
===== Virtuelle Schalter für unidirektionale Aktoren =====&lt;br /&gt;
Um die 4 Kanäle jeweils einzeln als Schalter (einzelne Schaltwippe) im WebFrontend abzubilden kann [[ReadingsProxy|readingsProxy]] genutzt werden. So werden vier Schalter (im unten gezeigten Beispiel: fhemSchalterKanal[A-D]) mit nur einer der 127 eigenen SenderIDs zur Verfügung gestellt.&lt;br /&gt;
{{Randnotiz|RNTyp=i|RNText=Ab [[version|Modulversion]] 11866/31.7.2016 besitzen auch virtuelle Schalter die Readings channel[A-D]. Ein readingsProxy sollte seitdem besser von diesen Readings, wie im [[#Mehrkanalige_bidirektionale_Aktoren|vorherigen Abschnitt]] dargestellt, abgeleitet werden. }}&lt;br /&gt;
Anders als bei den bekannten bidirektionalen Aktoren und den FHEM-Devices der physischen Schalter, existiert bei den virtuellen Schaltern das Reading channelA, channelB, ... nicht. Daher muss das readingsProxy für den virtuellen Schalter vom Reading state abgeleitet werden:&lt;br /&gt;
&lt;br /&gt;
 #Kanal A zur Steuerung mit on und off&lt;br /&gt;
 define fhemSchalterKanalA readingsProxy fhemSchalter:state&lt;br /&gt;
 attr fhemSchalterKanalA setFn {($CMD eq &amp;quot;on&amp;quot;)?&amp;quot;A0&amp;quot;:&amp;quot;AI&amp;quot;;;}&lt;br /&gt;
 attr fhemSchalterKanalA setList on off&lt;br /&gt;
 attr fhemSchalterKanalA valueFn {$LASTCMD}&lt;br /&gt;
 attr fhemSchalterKanalA webCmd on:off&lt;br /&gt;
&lt;br /&gt;
 #Kanal B zur Steuerung mit on und off&lt;br /&gt;
 define fhemSchalterKanalB readingsProxy fhemSchalter:state&lt;br /&gt;
 attr fhemSchalterKanalB setFn {($CMD eq &amp;quot;on&amp;quot;)?&amp;quot;B0&amp;quot;:&amp;quot;BI&amp;quot;;;}&lt;br /&gt;
 attr fhemSchalterKanalB setList on off&lt;br /&gt;
 attr fhemSchalterKanalB valueFn {$LASTCMD}&lt;br /&gt;
 attr fhemSchalterKanalB webCmd on:off&lt;br /&gt;
&lt;br /&gt;
 #Kanal C zur Steuerung mit on und off&lt;br /&gt;
 define fhemSchalterKanalC readingsProxy fhemSchalter:state&lt;br /&gt;
 attr fhemSchalterKanalC setFn {($CMD eq &amp;quot;on&amp;quot;)?&amp;quot;C0&amp;quot;:&amp;quot;CI&amp;quot;;;}&lt;br /&gt;
 attr fhemSchalterKanalC setList on off&lt;br /&gt;
 attr fhemSchalterKanalC valueFn {$LASTCMD}&lt;br /&gt;
 attr fhemSchalterKanalC webCmd on:off&lt;br /&gt;
&lt;br /&gt;
 #Kanal D zur Steuerung mit on und off&lt;br /&gt;
 define fhemSchalterKanalD readingsProxy fhemSchalter:state&lt;br /&gt;
 attr fhemSchalteKanalD setFn {($CMD eq &amp;quot;on&amp;quot;)?&amp;quot;D0&amp;quot;:&amp;quot;DI&amp;quot;;;}&lt;br /&gt;
 attr fhemSchalterKanalD setList on off&lt;br /&gt;
 attr fhemSchalterKanalD valueFn {$LASTCMD}&lt;br /&gt;
 attr fhemSchalterKanalD webCmd on:off&lt;br /&gt;
&lt;br /&gt;
Werden diese FHEM-Taster (und etwaige physische Taster) in EnOcean-Aktoren eingelernt (siehe Anleitung des Aktors), so können nun die EnOcean-Aktoren mit physischen Tastern (sendet mit der 8-stelligen SenderID des Tasters) und mit virtuellen FHEM-Readingsproxy-Schaltern (senden mit einer der 127 eigenen SenderIDs) bedient werden.&lt;br /&gt;
&lt;br /&gt;
=== Physischer EnOcean- und virtueller FHEM-Schalter zu einem Device zusammenfassen ===&lt;br /&gt;
Um im Webfrontend die Aktionen beider Schalter in einem Element zusammengefasst und damit den realen Zustand bei &#039;&#039;&#039;unidirektionalen&#039;&#039;&#039; Aktoren zu sehen, kann man eine &amp;lt;code&amp;gt;structure&amp;lt;/code&amp;gt; nutzen:&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
(Bei bidirektionalen Aktoren ist dies aufgrund der Statusrückmeldungen nicht notwendig. Achtung: Teilweise müssen Statusrückmeldungen/Bestätigungstelegramme erst am Aktor eingeschaltet werden)&lt;br /&gt;
&lt;br /&gt;
 #Definition des virtuellen FHEM-Schalters&lt;br /&gt;
 define fhemSchalter EnOcean AABBCC01              &amp;lt;--- AABBCC01 ist eine der 127 SenderID&#039;s des TCM, mit der FHEM sendet&lt;br /&gt;
 attr fhemSchalter eventMap BI:off B0:on&lt;br /&gt;
 attr fhemSchalter icon icoBELEUCHTUNG.png&lt;br /&gt;
 attr fhemSchalter subType switch&lt;br /&gt;
 &lt;br /&gt;
 #Definition des physischen Tasters (z.B. durch autocreate erzeugt)&lt;br /&gt;
 define EnO_switch_0021E4BB EnOcean 0021E4BB      &amp;lt;--- 0021E4BB ist die (aufgedruckte) 8-stellige SenderID des physischen Tasters&lt;br /&gt;
 attr EnO_switch_0021E4BB eventMap BI:off B0:on&lt;br /&gt;
 attr EnO_switch_0021E4BB room EnOcean&lt;br /&gt;
 attr EnO_switch_0021E4BB subType switch&lt;br /&gt;
 attr EnO_switch_0021E4BB dummy&lt;br /&gt;
 &lt;br /&gt;
 #fhemSchalter ist der Name des virtuellen FHEM-Schalters&lt;br /&gt;
 #EnO_switch_0021E4BB ist der (z.B. per autocreate erstellte) FHEM-Taster&lt;br /&gt;
 define Gruppe_test_notify structure room fhemSchalter EnO_switch_0021E4BB&lt;br /&gt;
 attr Gruppe_test_notify eventMap BI:off B0:on&lt;br /&gt;
 attr Gruppe_test_notify room Gaestezimmer&lt;br /&gt;
 attr Gruppe_test_notify clientstate_behavior last&lt;br /&gt;
&lt;br /&gt;
Alternativ kann man für diesen Zweck auch ein &amp;lt;code&amp;gt;notify&amp;lt;/code&amp;gt; in Verbindung mit &amp;lt;code&amp;gt; setreading &amp;lt;device&amp;gt; state &amp;lt;state&amp;gt;&amp;lt;/code&amp;gt; nutzen:&lt;br /&gt;
&lt;br /&gt;
 define nAbgleich notify EnO_switch_0021E4BB:(on|off) setreading fhemSchalter state $EVENT&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
=== Warum schaltet mein Aktor nicht, wenn ich im WebFrontend auf das Icon für den physischen Taster/Schalter klicke bzw. mit &amp;lt;code&amp;gt;set &amp;lt;device&amp;gt; &amp;lt;command&amp;gt;&amp;lt;/code&amp;gt; ansteuere? ===&lt;br /&gt;
:Aus Sicherheitsgründen können bei EnOcean keine physischen Geräte(-adressen) durch FHEM bzw. das TCM-Gateway emuliert werden. FHEM muss zur Steuerung separat an den Aktor angelernt werden. Dazu eine der TCM-Adressen an den Aktor anlernen.&lt;br /&gt;
&lt;br /&gt;
=== Welche Infos sollten Anfragen im EnOcean-Forum enthalten? ===&lt;br /&gt;
* Anfragen bitte nur zur aktuellsten FHEM-Version: Befehl &amp;lt;code&amp;gt;update&amp;lt;/code&amp;gt; ergibt Ausgabe &amp;quot;nothing to do...&amp;quot;&lt;br /&gt;
* detaillierte Beschreibung des Problems&lt;br /&gt;
* beteiligte Komponenten (genaue Bezeichnung und evtl. Link auf Hersteller-Dokumentation)&lt;br /&gt;
* list des jeweiligen devices (Ausgabe von &amp;lt;code&amp;gt;list &amp;lt;device&amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
* passender Ausschnitt aus Logfile (siehe Link im FHEM-Menü links) generiert mit gesetztem Attribut verbose 5 am TCM-Device (&amp;lt;code&amp;gt;attr &amp;lt;IODev&amp;gt; verbose 5&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
=== Wie kann ich zur Fortentwicklung der EnOcean-Module beitragen? ===&lt;br /&gt;
* Erfolgreichen Einsatz von neuen/bisher nicht gemeldeten EnOcean-Geräten im Forum mitteilen&lt;br /&gt;
* In der {{Link2CmdRef}} als [untested] markierte EEPs bei erfolgreichen Tests im Forum als getestet melden&lt;br /&gt;
* Codeschnipsel und Ideen im Forum posten&lt;br /&gt;
* Fehler und Probleme im Forum melden&lt;br /&gt;
* Wiki: Neue Geräte ins Wiki aufnehmen; Codeschnipsel und Beispiele einpflegen&lt;br /&gt;
&lt;br /&gt;
=== Wie findet man die Sender-ID eines bidirektionalen Aktors? ===&lt;br /&gt;
* Aufkleber auf dem Aktor oder beigelegte Information in der Aktorverpackung&lt;br /&gt;
* Ermittlung mit FHEM:&lt;br /&gt;
# Bestätigungstelegramme am Aktor aktivieren&lt;br /&gt;
# Funktaster am Aktor anlernen oder alternativ Taster am örtlichen Steuereingang anschließen&lt;br /&gt;
# FHEM in den learningMode versetzen: &amp;lt;code&amp;gt;set &amp;lt;nowiki&amp;gt;&amp;lt;IODev&amp;gt; teach &amp;lt;time/s&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
# [[Event monitor|Event Monitor]] aufrufen&lt;br /&gt;
# Aktor mit Taster schalten&lt;br /&gt;
# Im Event Monitor wird nun die Sender-ID des Aktors durch das Bestätigungstelegramm angezeigt. Sofern ein Funktaster zur Ansteuerung genutzt wird, zeigt der Event Monitor auch dessen Sender-ID.&lt;br /&gt;
# FHEM hat mittels autocreate für das Bestätigungstelegramm ein Device angelegt, sofern das vorher noch nicht existierte. Dieses Device kann man nach eventueller Änderung des subType und dem Setzen anderer gegebenenfalls notwendiger Attribute an den Aktor anlernen.&lt;br /&gt;
&lt;br /&gt;
=== Wie ermittelt man freie Sender-IDs des TCM-basierten Funkgateways? ===&lt;br /&gt;
FHEM ermittelt eine freie SenderID automatisch, wenn die Definition folgermaßen erfolgt:&lt;br /&gt;
* unidirektionaler Aktor:&lt;br /&gt;
: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;define &amp;lt;name&amp;gt; EnOcean getNextID &amp;lt;EEP&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
: Im definierten Device ist &amp;quot;getNextID&amp;quot; durch eine freie SenderID des TCMs ersetzt.&lt;br /&gt;
* bidirektionaler Aktor:&lt;br /&gt;
: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;define &amp;lt;name&amp;gt; EnOcean &amp;lt;SenderId des Aktors&amp;gt; &amp;lt;EEP&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
: Dem definierten Device wird das Attribut &amp;lt;code&amp;gt;subDef&amp;lt;/code&amp;gt; mit dem Wert &amp;lt;code&amp;gt;getNextId&amp;lt;/code&amp;gt; zugewiesen: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;attr &amp;lt;name&amp;gt; subDef getNextID&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. &amp;quot;getNextID&amp;quot; ersetzt FHEM automatisch durch eine freie SenderID des TCMs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Manuelle Ermittlung der freien SenderIDs, wenn die obige automatische mit FHEM fehlschlägt oder eine manuelle Vergabe gewünscht wird:&lt;br /&gt;
* Aus der oben [[EnOcean_Starter_Guide#Vorbereitung|gezeigten Tabelle]]&lt;br /&gt;
* Anzeige der nächsten freien Sender-ID: &amp;lt;pre&amp;gt;{EnOcean_CheckSenderID(&amp;quot;getNextID&amp;quot;, &amp;quot;&amp;lt;IODev&amp;gt;&amp;quot;, &amp;quot;0000000&amp;quot;)}&amp;amp;#13; &amp;lt;/pre&amp;gt;&lt;br /&gt;
* Auflistung der bereits vergebenen Sender-IDs: &amp;lt;pre&amp;gt;{EnOcean_CheckSenderID(&amp;quot;getUsedID&amp;quot;, &amp;quot;&amp;lt;IODev&amp;gt;&amp;quot;, &amp;quot;0000000&amp;quot;)}&amp;amp;#13; &amp;lt;/pre&amp;gt;&lt;br /&gt;
* Auflistung der noch nicht vergebenen Sender-IDs: &amp;lt;pre&amp;gt;{EnOcean_CheckSenderID(&amp;quot;getFreeID&amp;quot;, &amp;quot;&amp;lt;IODev&amp;gt;&amp;quot;, &amp;quot;0000000&amp;quot;)}&amp;amp;#13; &amp;lt;/pre&amp;gt;&lt;br /&gt;
Den jeweiligen Befehl in das &amp;quot;[[Konfiguration#Befehl-Eingabefeld|Befehl-Eingabefeld]]&amp;quot; kopieren, &amp;lt;IODev&amp;gt; durch den Namen des TCM-Devices ersetzen und dann Auslösen.&lt;br /&gt;
&lt;br /&gt;
=== Schaltet immer AI ein und A0 aus, BI ein und B0 aus usw. ? ===&lt;br /&gt;
Nein. &amp;lt;br&amp;gt;&lt;br /&gt;
Das Verhalten der Aktoren ist abhängig vom Hersteller und/oder vom Anlernvorgang. Laut EEP schaltet xI ein und x0 aus. Dies wird von den meisten Herstellern entsprechend umgesetzt. Eltako definiert dies genau andersherum: xI schaltet aus und x0 ein. Analog sind auch die jeweiligen Bestätigungstelegramme der Aktoren herstellerspezifisch festgelegt. Zudem kann bei einigen Aktoren auch je nach Anlernvorgang ein anderes Verhalten erreicht werden; Details enthalten die Bedienungsanleitungen.&lt;br /&gt;
&lt;br /&gt;
=== Wie kann man einen Plot für ein EnOcean-Device anlegen? ===&lt;br /&gt;
Bei der manuellen Anlage von Devices über das EEP und bei der automatischen Anlage durch die autocreate-Funktion beim teach-in werden neben dem Device selbst auch das FileLog-Device und -soweit als Vorlage von FHEM mitgeliefert- die SVG-Devices mit .gplot-Datei für die Plots automatisch erzeugt. Manuell sollten die Devices deshalb möglichst über die Vorgabe des EEP erzeugt werden:&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;define &amp;lt;name&amp;gt; EnOcean &amp;lt;ID&amp;gt; &amp;lt;EEP&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; oder&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;define &amp;lt;name&amp;gt; EnOcean &amp;lt;EEP&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;define test EnOcean A5-04-02&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei bestehenden Devices können die FileLog- und SVG-Devices nachträglich erzeugt werden. Hierzu wird im DEF das entsprechende EEP statt der ID eingetragen und {{Taste|modify &amp;lt;name&amp;gt;}} bestätigt. Nach dem automatischen Anlegen der zugehörigen Devices erscheint dort wieder die ID.&lt;br /&gt;
&lt;br /&gt;
Sollte für das EEP keine .gplot-Vorlage für einen Plot bzw. das SVG-Device existieren, kann ein Plot mit dem [[Plots erzeugen|.gplot-Editor]] erstellt werden.&lt;br /&gt;
&lt;br /&gt;
=== Was muss man beim Einsatz der &amp;quot;set extensions&amp;quot; (on-for-timer, on-till, ...) beachten? ===&lt;br /&gt;
Die {{Link2CmdRef|Anker=setExtensions|Label=set extensions}} werden von EnOcean grundsätzlich unterstützt, wenn das Device als &lt;br /&gt;
# set-Befehle &amp;quot;on&amp;quot; und &amp;quot;off&amp;quot; automatisch anbietet &#039;&#039;&#039;oder&#039;&#039;&#039; &lt;br /&gt;
# dies manuell durch das Mapping (bspw. &amp;lt;code&amp;gt;eventMap BI:on B0:off&amp;lt;/code&amp;gt;) erreicht wird.&lt;br /&gt;
&lt;br /&gt;
Im 1. Fall sind alle &amp;quot;set extensions&amp;quot;-Befehle automatisch funktionsfähig.&lt;br /&gt;
&lt;br /&gt;
Im 2. Fall ist die eventMap jedoch zusätzlich - je nach gewünschten &amp;quot;set extensions&amp;quot;-Befehl - zwingend weiter zu ergänzen:&lt;br /&gt;
* on-tor-timer:  &amp;lt;code&amp;gt;attr &amp;lt;device&amp;gt; eventMap on-for-timer:on-for-timer BI:on B0:off&amp;lt;/code&amp;gt;  ({{Link2Forum|Topic=28855|Message=214960}})&lt;br /&gt;
* off-tor-timer:  &amp;lt;code&amp;gt;attr &amp;lt;device&amp;gt; eventMap off-for-timer:off-for-timer BI:on B0:off&amp;lt;/code&amp;gt;&lt;br /&gt;
* on-till:  &amp;lt;code&amp;gt;attr &amp;lt;device&amp;gt; eventMap on-till:on-till BI:on B0:off&amp;lt;/code&amp;gt;  ({{Link2Forum|Topic=29993|Message=226886}})&lt;br /&gt;
* off-till:  &amp;lt;code&amp;gt;attr &amp;lt;device&amp;gt; eventMap off-till:off-till BI:on B0:off&amp;lt;/code&amp;gt;&lt;br /&gt;
* blink:  &amp;lt;code&amp;gt;attr &amp;lt;device&amp;gt; eventMap on-for-timer:on-for-timer BI:on B0:off&amp;lt;/code&amp;gt;  ({{Link2Forum|Topic=31358|Message=239151}})&lt;br /&gt;
* intervals:  &amp;lt;code&amp;gt;attr &amp;lt;device&amp;gt; eventMap on-till:on-till BI:on B0:off&amp;lt;/code&amp;gt;&lt;br /&gt;
Sollen mehrere &amp;quot;set extensions&amp;quot;-Befehle verwendet werden, so sind die obigen Codes entsprechend zu kombinieren.&lt;br /&gt;
&lt;br /&gt;
=== Für mein EnOcean-Gerät gibt es keine spezielle Wiki-Seite; wo finde ich dann Informationen? ===&lt;br /&gt;
* In der {{Link2CmdRef}} nach dem Gerät suchen&lt;br /&gt;
* In der commandref nach dem verwendeten EEP suchen&lt;br /&gt;
* Im Wiki nach einem Gerät mit einer ähnlichen EEP/subType suchen&lt;br /&gt;
* Im EnOcean-Forum nach Threads zum Gerät/EEP suchen&lt;br /&gt;
&lt;br /&gt;
=== Warum funktioniert mein Eltako-Gerät nicht wie in commandref/Wiki beschrieben? ===&lt;br /&gt;
* Eltako-Geräte haben bei gleicher Produktbezeichnung teilweise je nach Produktionswoche unterschiedliche Funktionen/Eigenschaften&lt;br /&gt;
* die Produktionswoche ist auf dem Gerät angegeben (z.B. 11/14 -&amp;gt; Elfte Woche im Jahr 2014)&lt;br /&gt;
* in den nach Produktionswoche untergliederten [http://www.eltako.com/de/bedienungsanleitungen/gebaeudefunk-powerline.html Bedienungsanleitungen] stehen genauere Angaben&lt;br /&gt;
* Angaben in commandref/Wiki analog für die Angaben laut Bedienungsanleitung für den speziellen Produktionszeitraum umsetzen&lt;br /&gt;
* bei gravierenden Abweichungen und Neuerungen Info im Forum/Wiki&lt;br /&gt;
&lt;br /&gt;
=== Wie kann ich Eltako-Aktoren anhand Ihrer Modellbezeichnung grob unterscheiden? ===&lt;br /&gt;
* 12er Baureihe (ausgelaufen) = unidirektionale RS485-Bus-Aktoren für Hutschiene&lt;br /&gt;
* 14er Baureihe = bidirektionale RS485-Bus-Aktoren für Hutschiene&lt;br /&gt;
* 61er Baureihe = uni- und bidirektionale Aktoren je nach Produktionszeitraum für Einbaumontage (Hohlwanddose)&lt;br /&gt;
* 70/71er Baureihe = uni- und bidirektionale Aktoren je nach Produktionszeitraum für Einbaumontage (Zwischendecke)&lt;br /&gt;
* zwischen den Modellreihen gibt es bei uni- und bidirektonalen Aktoren bei der Ansteuerung Übereinstimmungen; Angaben können dementsprechend analog zwischen den Geräten übertragen werden&lt;br /&gt;
&lt;br /&gt;
=== Wie kann ich PEHA-Aktoren anhand Ihrer Modellbezeichnung grob unterscheiden? ===&lt;br /&gt;
* Easyclick-Unterputzempfänger: unidirektionale Aktoren für Einbaumontage; Modellbezeichnung enthält typischerweise die Buchstaben EP&lt;br /&gt;
* Easyclickpro-Unterputzempfänger: bidirektionale Aktoren für Einbaumontage; Modellbezeichnung enthält die Buchstaben EBI oder EBIM (mit zusätzlicher Energiemessung)&lt;br /&gt;
&lt;br /&gt;
=== Wo finde ich Angaben zu Jäger Direkt - OPUS GreenNet EnOcean-Geräten? ===&lt;br /&gt;
* Es handelt sich im Wesentlichen um umgelabelte Produkte anderer Hersteller (Peha, Eltako usw.). Anhand der Gehäuseform lassen sich Rückschlüsse ziehen&lt;br /&gt;
* Angaben zu den &amp;quot;Original&amp;quot;-Produkten können grundsätzlich -soweit bekannt- auf OPUS GreenNet Geräte übertragen werden&lt;br /&gt;
&lt;br /&gt;
=== Wie ermittele ich die Signalstärke, Signalqualität durch die Anzeige des RSSI/Repeatingcounter? ===&lt;br /&gt;
* Durch anlegen einer readingsGroup: &amp;lt;code&amp;gt;define TCM_Signal readingsGroup TYPE=EnOcean:+TCM_ESP3_0_RSSI,+TCM_ESP3_0_ReceivingQuality,+TCM_ESP3_0_RepeatingCounter,+TCM_ESP3_0_TIME&amp;lt;/code&amp;gt;&lt;br /&gt;
Dabei muss TCM_ESP3_0 durch den Devicenamen des eigenen TCMs ersetzt werden!&lt;br /&gt;
&lt;br /&gt;
=== Wo genau ist der Unterschied zwischen &amp;quot;EEP Manufacturer Specific Applications&amp;quot; und &amp;quot;Inofficial EEP for special devices&amp;quot;? ===&lt;br /&gt;
* Die inoffiziellen EEPs sind nichts anderes als Device-Vorlagen für bestimmte Aktoren. Dadurch soll dem Anwender u.a. manuelle Attributzuweisungen abgenommen werden. Teilweise werden auch spezielle Plots angelegt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
[[Kategorie:EnOcean Components]]&lt;/div&gt;</summary>
		<author><name>Mikka</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=EnOcean_Starter_Guide&amp;diff=25157</id>
		<title>EnOcean Starter Guide</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=EnOcean_Starter_Guide&amp;diff=25157"/>
		<updated>2018-02-08T14:42:04Z</updated>

		<summary type="html">&lt;p&gt;Mikka: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Todo|Noch einzuarbeitetende Moduländerungen :: http://forum.fhem.de/index.php/topic,36237.msg285274.html#msg285274: Vereinfachte Anlage von FHEM-EnOcean-Devices gemäß 18 und 19 einarbeiten, Anlage Liste von nicht offiziellen EEPs und Zuordnung zu Geräten, bessere Einbindung von getNextId ++++ http://forum.fhem.de/index.php/topic,42354.0.html: Plot-Anlage einbinden ++++ http://forum.fhem.de/index.php/topic,45810.0.html: RLT}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right&amp;quot;&amp;gt;&lt;br /&gt;
{{Infobox Modul&lt;br /&gt;
|Name=TCM&lt;br /&gt;
|ModPurpose=Einbindung EnOcean-Gateway&lt;br /&gt;
|ModType=d&lt;br /&gt;
|ModCmdRef=TCM&lt;br /&gt;
|ModForumArea=EnOcean&lt;br /&gt;
|ModTechName=00_TCM.pm &lt;br /&gt;
|ModOwner=klaus.schauer ([http://forum.fhem.de/index.php?action=profile;u=293 Forum] / [[Benutzer Diskussion:Klaus.schauer|Wiki]])&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox Modul&lt;br /&gt;
|Name=EnOcean&lt;br /&gt;
|ModPurpose=Ansteuerung EnOcean-Geräte über TCM&lt;br /&gt;
|ModType=d&lt;br /&gt;
|ModCmdRef=EnOcean&lt;br /&gt;
|ModForumArea=EnOcean&lt;br /&gt;
|ModTechName=10_EnOcean.pm &lt;br /&gt;
|ModOwner=klaus.schauer ([http://forum.fhem.de/index.php?action=profile;u=293 Forum] / [[Benutzer Diskussion:Klaus.schauer|Wiki]])&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== EnOcean ==&lt;br /&gt;
[http://www.enocean.com/de/ EnOcean] ist &lt;br /&gt;
* ein [http://www.enocean.com/de/enocean-wireless-standard/ ISO ratifizierter Funkstandard], ausgelegt für Funksensoren und Funksensornetze mit besonders niedrigem Energieverbrauch&lt;br /&gt;
* ein Anbieter batterieloser Funksensoren&lt;br /&gt;
EnOcean-Endgeräte mit dem von der EnOcean Alliance zur Verfügung gestellten EnOcean-Funkprotokoll werden von [http://www.enocean-alliance.org/de/hiererhaeltlich/ zahlreichen Hardware-Herstellern] angeboten. &lt;br /&gt;
&lt;br /&gt;
=== EnOcean Equipment Profile ===&lt;br /&gt;
Abhängig von den Funktionen des EnOcean-Endgerätes werden bestimmte veröffentlichte Anwendungs-Profile/Funk-Telegramme, die sogenannten EnOcean Equipment Profiles (EEPs), zur Funkkommunikation genutzt. Technische Details zum EnOcean-Funkprotokoll und insbesondere zu den [http://www.enocean-alliance.org/eep/ EnOcean Equipment Profiles (EEPs)] sind auf der Internetseite der [http://www.enocean-alliance.org EnOcean Alliance] zu finden.&lt;br /&gt;
&lt;br /&gt;
==== Manufacturer Specific Communication ====&lt;br /&gt;
EnOcean bietet - neben den veröffentlichten Standard-Enocean-Profilen - die Möglichkeit für die Nutzung von herstellerspezifischen Anwendungs-Profilen/Funk-Telegrammen (MSC = Manufacturer Specific Communication). Falls die Herstellerfirmen den Inhalt dieser MSC-Telegramme nicht veröffentlichen, ist eine Unterstützung durch FHEM grundsätzlich nicht möglich. Teilweise werden die Produkte sowohl mit MSC- als auch mit Standard-Enocean-Profilen vertrieben {{Link2Forum|Topic=19544|Message=132240}}. Angaben zu den verwendeten Profilen/Telegrammen sind den Bedienungsanleitungen der Produkte zu entnehmen.&lt;br /&gt;
&lt;br /&gt;
=== uni- versus bidirektional ===&lt;br /&gt;
EnOcean-Endgeräte gibt es sowohl in uni- als auch in bidirektionalen Ausführungen. Bei &#039;&#039;&#039;unidirektionalen Endgeräten&#039;&#039;&#039; erfolgt die Funk-Kommunikation nur in eine Richtung. Einem Aktor, der Licht schaltet, kann zwar der Befehl zum An- bzw. Ausschalten gegeben werden, er liefert aber keine Rückinformation über die erfolgreiche Ausführung des Befehls. Bei &#039;&#039;&#039;bidirektionalen Endgeräten&#039;&#039;&#039; erfolgt die Funk-Kommunikation hingegen in zwei Richtungen: sie bieten &lt;br /&gt;
# Sende- und &lt;br /&gt;
# Empfangsmöglichkeiten. &lt;br /&gt;
Der bidirektionale Aktor kann somit unter anderem die erfolgreiche Ausführung eines empfangenen Befehls zurückmelden.&lt;br /&gt;
&lt;br /&gt;
=== SenderID ===&lt;br /&gt;
Damit EnOcean Funk-Aktoren (z.B. Relais, Dimmer, Heizungsventil) auf EnOcean Sensoren (z.B. Taster, Temperatursensor, Fensterkontakt, Energieverbrauchsmesser) reagieren können, werden die Sensoren bei den Aktoren eingelernt (Teach-in). So wird festgelegt, dass z.B. &amp;quot;Funktaster 1&amp;quot; den &amp;quot;Dimmer 1&amp;quot; steuert. &lt;br /&gt;
Alle EnOcean Geräte mit Sendefunktion haben mindestens eine eindeutige, unabänderliche 8-stellige Hex-SenderID (z.B. ffc54500; teilweise auch dargestellt mit Punkten oder Doppelpunkten dazwischen). Die SenderID ist meist auf den EnOcean Geräten aufgedruckt oder liegt der Verpackung des Endgerätes bei. Beim Anlernvorgang wird die eindeutige SenderID des Sensors in der Empfängertabelle des Aktors gespeichert.&lt;br /&gt;
 &lt;br /&gt;
== EnOcean in FHEM ==&lt;br /&gt;
=== Allgemein ===&lt;br /&gt;
FHEM wird fortwährend weiterentwickelt und verbessert. Daher ist es zwingend notwendig, dass FHEM auf dem aktuellsten Stand ist. Dazu nach der FHEM-Installation den Befehl &amp;lt;code&amp;gt;update&amp;lt;/code&amp;gt; ausführen und anschließend &amp;lt;code&amp;gt;shutdown restart&amp;lt;/code&amp;gt; durchführen. Genauso auch vor [[#Welche_Infos_sollten_Anfragen_im_EnOcean-Forum_enthalten.3F|Anfragen im Forum]] die Aktualität von FHEM überprüfen.&lt;br /&gt;
&lt;br /&gt;
Die Nutzung von EnOcean in FHEM ist (nicht nur für den Anfänger) ausschließlich mit der standardmäßig eingeschalteten [[autocreate|autocreate-Funktion]] einfach umsetzbar. Die Kenntnis der FHEM-Grundlagen und Durcharbeitung der Anfänger-Lektüren wird im Folgenden vorausgesetzt. Insbesondere sind [[Erste_Schritte_in_fhem|Erste Schritte in FHEM]] und [http://fhem.de/Heimautomatisierung-mit-fhem.pdf Heimautomatisierung mit FHEM] Pflicht, auch wenn sie nicht EnOcean behandeln, so werden doch wesentliche Punkte für ein Verständnis von FHEM vermittelt.&lt;br /&gt;
&lt;br /&gt;
Im Folgenden und auf den [[:Kategorie:EnOcean Components|Wiki-Seiten der Einzelgeräte]] werden immer wieder Auszüge aus der [[Konfiguration]] dargestellt. Diese dienen zur Erläuterung und Veranschaulichung. Die Bearbeitung der [[Konfiguration]] sollte - zur Verhinderung von Fehlern - nach Möglichkeit immer über das &amp;quot;[[Konfiguration#Befehl-Eingabefeld|Befehl-Eingabefeld]]&amp;quot; und die &amp;quot;[[Konfiguration#Objektdetails|Objektdetails]]&amp;quot; erfolgen.&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitung ===&lt;br /&gt;
Die SenderIDs der EnOcean-Geräte haben eine zentrale Bedeutung in FHEM. Sie sind eindeutiges Unterscheidungsmerkmal, werden von FHEM im Rahmen der Funkkommunikation genutzt und in der Definition der Geräte bzw. den Attributen des Geräte hinterlegt. Auch wenn FHEM die SenderIDs des Gateways regelmäßig automatisch vergeben kann, ist für einen Überblick über die SenderIDs hilfreich eine Tabelle mit folgender oder ähnlicher Struktur aufzubauen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; A&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; B&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; C&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; D&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; E&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;th&amp;gt; Nr.&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Name EnOcean&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Name in FHEM&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; HEX (Sender-ID)&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Zimmer&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;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;amp;lt;Name Hardwareschalter&amp;amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;amp;lt;Name in FHEM&amp;amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;amp;lt;HEX Code&amp;amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;amp;lt;Raumname&amp;amp;gt;&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;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; TCM_ESP3_0&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; TCM_ESP3_0&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; AABBCC00&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&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; 1&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; EnO_switch_123456&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; eg_fl_Licht&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; AABBCC01&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; EG_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; ...&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&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; 128&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Definition von TCM / Gateway ==&lt;br /&gt;
FHEM kann mit einem Funkgateway, das auf einem TCM-Modul basiert, EnOcean-Funk empfangen und senden. &lt;br /&gt;
Bisher gibt es zwei Transceiver Chips von EnOcean: &lt;br /&gt;
* TCM120 (ausgelaufen)&lt;br /&gt;
** für den USB-Port: [https://embedded-intelligence.de/de/products/hardware/bsc-bor.html BSC BOR] &lt;br /&gt;
* TCM310 &lt;br /&gt;
** als USB-Stick: [http://www.enocean.com/de/enocean_module/usb-300-oem/ USB 300] und [http://busware.de/tiki-index.php?page=EUL Busware EUL]&lt;br /&gt;
** als Aufsteckmodul für Raspberry Pi: [http://www.enocean.com/de/enocean-pi/ EnOceanPi]&amp;lt;BR&amp;gt; &lt;br /&gt;
::* Beim Raspberry Pi 3 muss der GPIO-Port auf den Hardware-UART0 umgestellt werden: [[Raspberry Pi 3: GPIO-Port Module und Bluetooth]]&lt;br /&gt;
::* Die seriellen Schnittstelle /dev/ttyAMA0 muss am Raspberry Pi freigeschaltet werden, damit das EnOceanPi-Modul funktionsfähig ist. Zur Vorgehensweise siehe: {{Link2Forum|Topic=14814|Message=95265}}&lt;br /&gt;
&lt;br /&gt;
Zudem existiert eine {{Link2Forum|Topic=22635|Message=160582|LinkText=Lösung zur kabelgebundenen Anbindung}} des FHEM-Rechners mittels Eltako FGW14 an den [[EnOcean-Eltako-RS485-Bus|Eltako RS485-Bus]], über die sowohl Busaktoren als auch EnOcean-Funkaktoren gesteuert werden können und auch EnOcean-Funktelegramme über das [[EnOcean-Eltako-RS485-Bus|FAM14 Funkantennenmodul]] am RS485-Bus empfangen werden können.&lt;br /&gt;
&lt;br /&gt;
Das TCM-basierte Gateway wird unter Linux nach Anschluss an den FHEM-Rechner beim FHEM-Start oder ohne FHEM-Neustart durch Aufruf des Befehls &amp;lt;code&amp;gt;usb scan&amp;lt;/code&amp;gt; zumeist automatisch erkannt und grundlegend durch entsprechende Einträge in der Konfiguration definiert. Ein manuelles Anlegen des TCM-Moduls oder Eingriffe in die Konfiguration sind normalerweise nicht notwendig. Werden am FHEM-Server unter Linux mehrere USB-Gateways eingesetzt, empfiehlt es sich zur Erhöhung der Betriebsstabilität das TCM-Gateway über [[Trick_der_Woche#CUL_.26_CO_.C3.BCber_Serial_ID-einbinden|Serial-by-Id]] anzusprechen. Unter Windows ist ein manuelles Anlegen der Definition des TCM-Gateways wegen fehlender Unterstützung des Befehls &amp;lt;code&amp;gt;usb scan&amp;lt;/code&amp;gt; notwendig. &lt;br /&gt;
&lt;br /&gt;
Bei RS485-basierte Gateways (bspw. FGW14) muss in der [[Konfiguration]] zusätzlich manuell das Attribut &amp;lt;code&amp;gt;comType&amp;lt;/code&amp;gt; auf &amp;lt;code&amp;gt;RS485&amp;lt;/code&amp;gt; gesetzt werden. &lt;br /&gt;
&lt;br /&gt;
Beispiele der automatisch erzeugten define-Zeile in der Konfiguration:&lt;br /&gt;
&lt;br /&gt;
EnOceanPi an Raspberry Pi:&lt;br /&gt;
 define TCM_ESP3_0 TCM ESP3 /dev/ttyAMA0@57600&lt;br /&gt;
&lt;br /&gt;
TCM310/USB300 an Fritzbox oder Raspberry Pi:&lt;br /&gt;
 define TCM_ESP3_0 TCM ESP3 /dev/ttyUSB0@57600&lt;br /&gt;
&lt;br /&gt;
Hier folgt ein Beispiel der define-Zeile in der Konfiguration für kabelgebundene Anbindung mit FGW14 über serielle Schnittstelle&lt;br /&gt;
 define TCM_ESP2_0 TCM ESP2 /dev/ttyS3@57600&lt;br /&gt;
 attr TCM_ESP2_0 comType RS485                    &amp;lt;---- Manuell zu setzen&lt;br /&gt;
&lt;br /&gt;
Nach erfolgreicher Definition ist das Gateway im Raum &amp;quot;Everything&amp;quot; in der Gruppe &amp;quot;TCM&amp;quot; zu finden. Wenn neben dem Gatewaynamen &amp;quot;initialized&amp;quot; oder &amp;quot;opened&amp;quot; angezeigt wird, ist FHEM in der Lage mit den EnOcean-Geräten zu kommunizieren.&lt;br /&gt;
&lt;br /&gt;
Wie im [[#SenderID|Einführungsabschnitt]] bereits erläutert hat jedes sendende EnOcean-Endgerät mindestens eine eindeutige SenderID. Diese SenderID kann aus Sicherheitsgründen nicht vom EnOcean-Gateway simuliert werden. Vielmehr hat das Gateway eigene SenderIDs, die separat in die Endgeräte/Aktoren angelernt werden müssen. Das Gateway stellt 128 verschiedene SenderIDs zur Verfügung. Ausgehend von der baseID, die bei jedem Gateway grundsätzlich anders ist, werden die SenderIDs fortlaufend hexadezimal hochgezählt:&lt;br /&gt;
* FHEM stehen 127 fortlaufende eigene SenderID zur Verfügung&lt;br /&gt;
* beginnend mit der baseID des TCM + 1&lt;br /&gt;
&lt;br /&gt;
Die baseID des TCM erhält man durch Eingabe von&lt;br /&gt;
 get TCM_ESP3_0 baseID &lt;br /&gt;
in das Befehl-Eingabefeld (TCM_ESP3_0 gegebenenfalls durch den eigenen Gatewaynamen ersetzen) oder duch Auswahl dieses Befehls in den Objektdetails des FHEM-Gateway-Device.&lt;br /&gt;
&lt;br /&gt;
Das Webfrontend zeigt dann beispielsweise:&lt;br /&gt;
 BaseID=AABBCC00,RemainingWriteCycles=0A&lt;br /&gt;
Die niedrigste SenderID in diesem Beispiel ist AABBCC0&#039;&#039;&#039;1&#039;&#039;&#039; (BaseID=AABBCC00 +1 HEX!!!), die nächste AABBCC0&#039;&#039;&#039;2&#039;&#039;&#039; usw.&lt;br /&gt;
&lt;br /&gt;
Nach der Definition des Gateways und Ermittlung der baseID des Gateways kann nun der nächste Schritt, die Definition der EnOcean-Geräte in FHEM, erfolgen.&lt;br /&gt;
&lt;br /&gt;
== Definition von Geräten ==&lt;br /&gt;
=== Definition / Anlernvorgang (Teach-In) ===&lt;br /&gt;
Damit FHEM und EnOcean-Geräte miteinander kommunizieren können, müssen sie miteinander bekannt gemacht werden. Dies geschieht durch Definition des Gerätes in FHEM und den Anlernvorgang. Dazu muss sich FHEM im {{Link2CmdRef|Anker=TCM_learningMode|Label=learningMode}} befinden. Viele Geräte werden von FHEM während des Anlernvorgangs automatisch erkannt und definiert. Dennoch ist ein grundlegendes Verständnis der Anlernvorgänge und Unterscheidungsprinzipen in FHEM und EnOcean notwendig. Sofern das Gerät Bestätigungstelegramme verschicken kann, sind diese zwingend &#039;&#039;&#039;vorher&#039;&#039;&#039; am Gerät einzuschalten (u.a. Eltako). &lt;br /&gt;
&lt;br /&gt;
FHEM entnimmt die Angaben, wie ein Funk-Telegramm für ein bestimmtes Gerät aufgebaut ist, im Wesentlichen den folgenden Attributen der Definition des Gerätes:&lt;br /&gt;
*&amp;lt;code&amp;gt;subtype&amp;lt;/code&amp;gt;: FHEM-Profilname, der als Klartextname das genutzte EEP des Gerätes (EEP steht meist in der Bedienungsanleitung des Gerätes) repräsentiert . Einige FHEM-Profile z. B. &amp;quot;roomSensorControl.01&amp;quot; bedienen mehrere ähnliche EEP gleichzeitig.&lt;br /&gt;
*&amp;lt;code&amp;gt;manufID&amp;lt;/code&amp;gt;: Code für den Hersteller des Gerätes (Übersetzungstabelle Code zu Name ist in der [http://sourceforge.net/p/fhem/code/HEAD/tree/trunk/fhem/FHEM/10_EnOcean.pm 10_EnOcean.pm] unter %EnO_manuf)&lt;br /&gt;
*&amp;lt;code&amp;gt;model&amp;lt;/code&amp;gt;: Modell des Gerätes&lt;br /&gt;
*&amp;lt;code&amp;gt;eep&amp;lt;/code&amp;gt;: EEP des Gerätes. Unter anderem werden die Informationen zur automatischen Anlage von [[FileLog]], [[SVG]] und des Attributs &amp;lt;code&amp;gt;webCmd&amp;lt;/code&amp;gt; anhand des EEPs ermittelt.&lt;br /&gt;
Während des Anlernvorgangs werden diese Angaben von FHEM soweit wie möglich automatisch in der Definition vorbelegt. Hinweise zu den Besonderheiten von bestimmten Geräten und EEP finden sich oft in der {{Link2CmdRef|Anker=EnOcean}} zu EnOcean. Darum bitte immer in der commandref zunächst nach dem speziellen Gerät (Modellbezeichnung) suchen, wenn dies keinen Treffer liefert nach dem verwendeten EEP suchen. Die gegebenen Hinweise und Erläuterungen dort beachten.&lt;br /&gt;
 &lt;br /&gt;
Die Definition und der Anlernvorgang unterscheiden sich je nach Gerätetyp:&lt;br /&gt;
* Sensoren:&lt;br /&gt;
** [[#Schalter/Switch|Schalter (EEP RPS)]]: werden automatisch beim ersten empfangenen Funktelegramm in FHEM mit den notwendigen Attributen angelegt.&lt;br /&gt;
** [[#Kontakte|Kontakte (EEP 1BS)]]: werden automatisch beim ersten empfangenen Funktelegramm in FHEM mit den notwendigen Attributen angelegt.&lt;br /&gt;
** [[#Sonstige_Sensoren|Sonstige Sensoren (EEP 4BS)]]: Durch Versand eines speziellen Anlern-Funktelegramms können sie in FHEM automatisch mit den notwendigen Attributen angelegt werden. Im Anlerntelegramm übermittelt der Sensor FHEM die EEP-Profilangabe und die Hersteller-ID. Aufgrund dieser Angaben kann FHEM das Gerät eindeutig erkennen und die richtigen Attribute in FHEM setzen. Einige wenige Sensoren verschicken leider ein Anlerntelegramm ohne EEP-Profilangabe und/oder Herstellerangabe (Bsp: Omnio Ratio eagle-PM101). Bei diesen Sensoren müssen die Attribute subType, manufID und/oder model manuell in FHEM gesetzt werden, damit eine richtige Auswertung der Funktelegramme erfolgt.&lt;br /&gt;
* Aktoren (4BS, VLD, UTE, MSC): Bei den Aktoren gibt es je nach Gerätetyp verschiedene Anlernvorgänge, die unterschiedlich in FHEM ausgeführt werden. Einige Aktoren unterstützen auch mehrere Anlernvorgänge. Grundsätzlich muss wegen abweichender Vorgehensweise in FHEM unterschieden werden zwischen&lt;br /&gt;
** [[#uni- versus bidirektional|unidirektionalen]] Aktoren und&lt;br /&gt;
*** [[#Teach-In_als_Tasteremulation|Teach-In als Tasteremulation]]&lt;br /&gt;
*** [[#Teach-In_als_Gateway.2FPC-Steuerung|Teach-In als Gateway/PC-Steuerung]]&lt;br /&gt;
** [[#uni- versus bidirektional|bidirektionalen]] Aktoren&lt;br /&gt;
*** [[#Teach-In_als_Tasteremulation_2|Teach-In als Tasteremulation]]&lt;br /&gt;
*** [[#Unidirektionales_4BS-Teach-In|Unidirektionales 4BS-Teach-In]]&lt;br /&gt;
*** [[#Bidirektionales_4BS-Teach-In|Bidirektionales 4BS-Teach-In]]&lt;br /&gt;
*** [[#UTE-Teach-In|UTE-Teach-In]]&lt;br /&gt;
&lt;br /&gt;
In den nachfolgenden Gliederungspunkten wird beispielhaft für je ein Gerät aus den obigen Gerätetypen die Einbindung in FHEM erläutert.&lt;br /&gt;
&lt;br /&gt;
Grundlegend gilt immer:&lt;br /&gt;
FHEM legt sendende, noch nicht definierte EnOcean Geräte selbst an, wenn&lt;br /&gt;
* in Konfiguration autocreate aktiviert ist:&lt;br /&gt;
** &amp;lt;code&amp;gt;{{Link2CmdRef|Lang=de|Anker=autocreate|Label=define autocreate autocreate}}&amp;lt;/code&amp;gt;&lt;br /&gt;
* FHEM/das TCM-Modul sich im &amp;lt;code&amp;gt;learningMode&amp;lt;/code&amp;gt; befindet und&lt;br /&gt;
* FHEM eine Nachricht vom noch nicht definierten EnOcean Gerät empfängt&lt;br /&gt;
Im Webfrontend werden automatisch angelegte neue Geräte im Raum &amp;quot;EnOcean&amp;quot; angezeigt.&lt;br /&gt;
&lt;br /&gt;
=== Sensoren ===&lt;br /&gt;
&#039;&#039;&#039;Sensoren Beispiele:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Schalter/Switch ====&lt;br /&gt;
[[EnOcean-PTM-210-Taster|PTM 210 - Schaltermodul]] ([http://www.enocean.com/de/enocean_module/ptm-210-data-sheet-pdf/ Datenblatt])&lt;br /&gt;
&lt;br /&gt;
EEP: F6-02-xx&lt;br /&gt;
&lt;br /&gt;
FHEM in den learningMode (&amp;lt;code&amp;gt;set &amp;lt;nowiki&amp;gt;&amp;lt;IODev&amp;gt; teach &amp;lt;time/s&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) versetzen, dazu im Befehl-Eingabefeld eingeben:&lt;br /&gt;
 set TCM_ESP3_0 teach 600&lt;br /&gt;
&lt;br /&gt;
Dann einen beliebigen Taster des Moduls drücken (und loslassen). Beim Drücken des Tasters wird vom Taster eine Nachricht ausgesendet, die von FHEM empfangen wird. Daraufhin definiert FHEM automatisch den Taster und der Taster ist in FHEM angelernt. FHEM fügt dazu folgenden Code zur Konfiguration hinzu:&lt;br /&gt;
* exemplarischer Auszug aus Konfiguration&lt;br /&gt;
 define EnO_switch_FFC54500 EnOcean FFC54500                    &amp;lt;-- &amp;quot;FFC54500&amp;quot; ist die 8-stellige Hex-SenderID des Tasters&lt;br /&gt;
 attr EnO_switch_FFC54500 IODev TCM_ESP3_0&lt;br /&gt;
 attr EnO_switch_FFC54500 room EnOcean&lt;br /&gt;
 attr EnO_switch_FFC54500 subType switch                        &amp;lt;-- handelt sich um einen Schalter&lt;br /&gt;
 # attr EnO_switch_FFC54500 eventMap AI:off A0:on BI:an B0:aus  &amp;lt;-- bei Bedarf ... die gemapten Werte (hier: off, on, an, aus) sollen eindeutig sein&lt;br /&gt;
 define FileLog_EnO_switch_FFC54500 FileLog ./log/EnO_switch_FFC54500-%Y.log EnO_switch_FFC54500&lt;br /&gt;
 attr FileLog_EnO_switch_FFC54500 logtype text&lt;br /&gt;
&lt;br /&gt;
Ein Schalter (hier: FT55) hat vier Taster:&lt;br /&gt;
{|&lt;br /&gt;
| &#039;&#039;&#039;Taster&#039;&#039;&#039; || &#039;&#039;&#039;in FHEM&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| links oben || A0&lt;br /&gt;
|-&lt;br /&gt;
| links unten || AI (nicht &amp;quot;eins&amp;quot; sondern &amp;quot;i&amp;quot;!)&lt;br /&gt;
|-&lt;br /&gt;
| rechts oben || B0&lt;br /&gt;
|-&lt;br /&gt;
| rechts unten || BI&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Das Log FileLog_EnO_switch_FFC54500 zeichnet beim einmaligen Drücken des linken unteren Tasters (&amp;quot;AI&amp;quot;) folgendes auf:&lt;br /&gt;
 2014-01-01_07:00:01 EnO_switch_FFC54500 buttons: pressed&lt;br /&gt;
 2014-01-01_07:00:01 EnO_switch_FFC54500 channelA: AI&lt;br /&gt;
 2014-01-01_07:00:01 EnO_switch_FFC54500 AI&lt;br /&gt;
 2014-01-01_07:00:02 EnO_switch_FFC54500 buttons: released&lt;br /&gt;
&lt;br /&gt;
Der angelegte Sensor repräsentiert im Webfrontend den physischen Schalter (bspw. an der Wand). Ein Druck auf den physischen Taster ändert den Zustand im Webfrontend. Jedoch führt ein Schalten des Repräsentanten im Webfrontend nicht zu einer Schaltung des Aktors.&lt;br /&gt;
&lt;br /&gt;
FHEM kann sich &#039;&#039;&#039;nicht&#039;&#039;&#039; als einer der vorhandenen (automatisch angelegten) physischen Sensoren ausgeben (um z.B. das Licht zu schalten), sondern verwendet eigene SenderIDs. Diese FHEM-eigenen SenderIDs können in EnOcean-Aktoren eingelernt werden, damit die Aktoren auf FHEM reagieren [[#Aktoren|siehe unten]].&lt;br /&gt;
&lt;br /&gt;
==== Kontakte ====&lt;br /&gt;
[[EnOcean-STM-250-Fenster-T%C3%BCrkontakt|STM 320 Batterieloses Magnetkontakt-Funkmodul]] ([http://www.enocean.com/de/enocean_module/stm-320-data-sheet-pdf/ Datenblatt])&lt;br /&gt;
&lt;br /&gt;
EEP: D5-00-01&lt;br /&gt;
&lt;br /&gt;
FHEM in den learningMode versetzen, dazu im Befehl-Eingabefeld eingeben:&lt;br /&gt;
 set TCM_ESP3_0 teach 600&lt;br /&gt;
&lt;br /&gt;
Anlerntelegramm laut Anleitung verschicken oder Magnetkontakt öffnen und schließen.&lt;br /&gt;
&lt;br /&gt;
Der Kontakt wird automatisch in FHEM definiert und ist angelernt.&lt;br /&gt;
&lt;br /&gt;
* exemplarischer Auszug aus Konfiguration&lt;br /&gt;
 define EnO_contact_0000FF53 EnOcean 0000FF53&lt;br /&gt;
 attr EnO_contact_0000FF53 IODev TCM_ESP3_0&lt;br /&gt;
 attr EnO_contact_0000FF53 room EnOcean&lt;br /&gt;
 attr EnO_contact_0000FF53 subType contact&lt;br /&gt;
 define FileLog_EnO_contact_0000FF53 FileLog ./log/EnO_contact_0000FF53-%Y.log EnO_contact_0000FF53&lt;br /&gt;
 attr FileLog_EnO_contact_0000FF53 logtype text&lt;br /&gt;
 attr FileLog_EnO_contact_0000FF53 room EnOcean&lt;br /&gt;
&lt;br /&gt;
==== Sonstige Sensoren ====&lt;br /&gt;
===== 4BS-Teach-In =====&lt;br /&gt;
FHEM in den learningMode versetzen, dazu im Befehl-Eingabefeld eingeben:&lt;br /&gt;
 set TCM_ESP3_0 teach 600&lt;br /&gt;
Dann das Anlerntelegramm laut Bedienungsanleitung am Sensor auslösen. Der Sensor wird dann automatisch in FHEM definiert und ist angelernt.&lt;br /&gt;
&lt;br /&gt;
===== Profilloses 4BS-Teach-In =====&lt;br /&gt;
Omnio Ratio eagle-PM101 Licht- und Anwesenheitssensor ([http://www.omnio.ch/content-en/downloads/Betriebsanleitungen/2902000_Betriebsanleitung_ea.pdf Betriebsanleitung])&lt;br /&gt;
&lt;br /&gt;
FHEM in den learningMode versetzen, dazu im Befehl-Eingabefeld eingeben:&lt;br /&gt;
 set TCM_ESP3_0 teach 600&lt;br /&gt;
&lt;br /&gt;
Das Anlerntelegramm vom Omnio Ratio eagle-PM101 verschicken (MÖGLICH??)&lt;br /&gt;
&lt;br /&gt;
Im angelegten FHEM-Device manuell das Attribut &amp;lt;code&amp;gt;subType&amp;lt;/code&amp;gt; auf &amp;lt;code&amp;gt;PM101&amp;lt;/code&amp;gt; setzen.&lt;br /&gt;
&lt;br /&gt;
=== Aktoren ===&lt;br /&gt;
Die Bedienungsanleitungen und die commandref liefern Informationen, welche Anlernvorgänge der Aktor unterstützt. Finden sich keine Hinweise auf besondere PC- oder Gateway-Anlernvorgänge, so kann FHEM als &amp;quot;Notlösung&amp;quot; immer als virtueller FHEM-Schalter (Tasteremulation) angelernt werden. Einige Aktoren unterstützen mehrere Arten von Anlernvorgängen. Hier ist der mit den meisten/besten Steuerungsmöglichkeiten zu bevorzugen.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Aktoren Beispiele:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== unidirektionale Aktoren ====&lt;br /&gt;
Bei unidirektionalen Aktoren steht eine SenderID des TCM-Gateways immer im &amp;lt;code&amp;gt;define&amp;lt;/code&amp;gt; des FHEM-Devices. Mit dieser SenderID steuert FHEM den Aktor. Diese SenderID muss dazu im Aktor eingelernt werden.&lt;br /&gt;
{{Hinweis|&#039;&#039;&#039;MERKE:&#039;&#039;&#039; Eine SenderID des TCM-Gateways muss bei unidirektionalen Aktoren immer im &amp;lt;code&amp;gt;define&amp;lt;/code&amp;gt; des Devices stehen.&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;MERKE:&#039;&#039;&#039; Bei unidirektionalen Aktoren stimmt der Status des FHEM-Devices im Webfrontend nur mit dem realen Aktorzustand überein, wenn ausschließlich über FHEM gesteuert wird ([[#Physischer_EnOcean-_und_virtueller_FHEM-Schalter_zu_einem_Device_zusammenfassen|Abhilfe]])}}&lt;br /&gt;
===== Teach-In als Tasteremulation =====&lt;br /&gt;
PEHA 451 FU-EP o.T. (Schaltaktor unidirektional) &lt;br /&gt;
&lt;br /&gt;
Eine [[#Wie ermittelt man freie Sender-IDs des TCM-basierten Funkgateways?|freie SenderID des TCM-basierten Gateways heraussuchen]] und diese als EnOcean-Gerät in FHEM definieren, dazu im Befehl-Eingabefeld eingeben:&lt;br /&gt;
 define eg_fl_Licht EnOcean AABBCC01&lt;br /&gt;
&lt;br /&gt;
Alternativ kann man FHEM auch anweisen, für das EnOcean-Gerät selbst die nächste freie SenderID zu ermitteln. Die Definition ist dann folgendermaßen vorzunehmen:&lt;br /&gt;
 define eg_fl_Licht EnOcean getNextID&lt;br /&gt;
&lt;br /&gt;
Anschließend das Attribut &amp;lt;code&amp;gt;subType&amp;lt;/code&amp;gt; beim erzeugten Device auf &amp;lt;code&amp;gt;switch&amp;lt;/code&amp;gt; setzen. Durch diese Definition wird ein 8-fach EnOcean-Taster erzeugt. Der Taster hat 4 Kanäle (A,B,C,D) zu je 2 Tasten (0,I). Alle diese 8 Taster senden mit der gleichen SenderID des TCM. Das entspricht einem Gerät mit 4 Schaltwippen die jeweils &amp;quot;oben&amp;quot; &#039;&#039;&#039;oder&#039;&#039;&#039; &amp;quot;unten&amp;quot; gedrückt sein können. FHEM emuliert mit diesem EnOcean-Gerät einen EnOcean-Schalter (darum auch &amp;quot;virtueller FHEM-Schalter&amp;quot;). Der Taster 0 des Kanal A wird &amp;quot;gedrückt&amp;quot; mit &amp;lt;code&amp;gt;set eg_fl_Licht A0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Dieser virtuelle FHEM-Schalter wird in den Aktor wie ein physischer Schalter eingelernt. Den Aktor in den Anlernmodus bringen (Taste LRN/SET drücken) und den virtuellen FHEM-Schalter betätigen, indem im Befehl-Eingabefeld eingeben wird:&lt;br /&gt;
 set eg_fl_Licht B0&lt;br /&gt;
Wenn der Aktor den erfolgreichen Anlernvorgang signalisiert, den Anlernmodus am Aktor ausschalten.&lt;br /&gt;
&lt;br /&gt;
* exemplarischer Auszug aus Konfiguration&lt;br /&gt;
 define eg_fl_Licht EnOcean AABBCC01        &amp;lt;--- AABBCC01 ist eine der 127 SenderID&#039;s des TCM, mit der FHEM sendet &lt;br /&gt;
 attr eg_fl_Licht room EG_Flur&lt;br /&gt;
 attr eg_fl_Licht eventMap BI:off B0:on&lt;br /&gt;
 attr eg_fl_Licht subType switch&lt;br /&gt;
 define FileLog_eg_fl_Licht FileLog ./log/ eg_fl_Licht-%Y.log eg_fl_Licht&lt;br /&gt;
 attr FileLog_eg_fl_Licht logtype text&lt;br /&gt;
&lt;br /&gt;
Der Status des Devices im Webfrontend stimmt bei unidirektionalen Aktoren nur, wenn die Steuerung des Aktors ausschließlich über FHEM erfolgt. Wird der Aktor sowohl über einen physischen Schalter als auch über FHEM gesteuert, so müssen die Status der beiden Devices für physischen und virtuellen Schalter im Webfrontend verknüpft werden, damit der richtige Status des Aktors angezeigt wird ([[#Physischer EnOcean- und virtueller FHEM-Schalter zu einem Device zusammenfassen |siehe unten]]).&lt;br /&gt;
&lt;br /&gt;
===== Teach-In als Gateway/PC-Steuerung =====&lt;br /&gt;
&amp;quot;ältere&amp;quot; Eltako FSB61 (Produktionszeitraum KW 43/10 - KW 40/11 [http://www.eltako.com/fileadmin/downloads/de/_bedienung/FSB61NP_30200420-3_dtsch.pdf Bedienungsanleitung])&lt;br /&gt;
&lt;br /&gt;
EEP: A5-3F-7F &lt;br /&gt;
&lt;br /&gt;
Eine [[#Wie ermittelt man freie Sender-IDs des TCM-basierten Funkgateways?|freie SenderID des TCM-basierten Gateways heraussuchen]] und diese als EnOcean-Gerät in FHEM definieren, dazu im Befehl-Eingabefeld eingeben:&lt;br /&gt;
 define eg_fl_Rollo EnOcean AABBCC02&lt;br /&gt;
&lt;br /&gt;
Alternativ kann man FHEM auch anweisen, für das EnOcean-Gerät selbst die nächste freie SenderID zu ermitteln. Die Definiton ist dann folgendermaßen vorzunehmen:&lt;br /&gt;
 define eg_fl_Rollo EnOcean getNextID&lt;br /&gt;
&lt;br /&gt;
Beim erzeugten FHEM-Device muss das Attribut &amp;lt;code&amp;gt;subType&amp;lt;/code&amp;gt; auf &amp;lt;code&amp;gt;manufProfile&amp;lt;/code&amp;gt; gesetzt werden. Die Attribute &amp;lt;code&amp;gt;manufID&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;model&amp;lt;/code&amp;gt; sind auf die unten in der Konfiguration gezeigten Werte zu setzen.&lt;br /&gt;
&lt;br /&gt;
Dieser virtuelle FHEM-Schalter wird in den Aktor als PC/Szenentaster angelernt indem im Befehl-Eingabefeld eingeben wird:&lt;br /&gt;
 set eg_fl_Rollo teach&lt;br /&gt;
Wenn der Aktor den erfolgreichen Anlernvorgang signalisiert, den Anlernmodus am Aktor ausschalten.&lt;br /&gt;
&lt;br /&gt;
* exemplarischer Auszug aus Konfiguration&lt;br /&gt;
 define eg_fl_Rollo EnOcean AABBCC02        &amp;lt;--- AABBCC02 ist eine der 127 SenderID&#039;s des TCM, mit der FHEM sendet &lt;br /&gt;
 attr eg_fl_Rollo room EG_Flur&lt;br /&gt;
 attr eg_fl_Rollo subType manufProfile&lt;br /&gt;
 attr eg_fl_Rollo manufID 00D&lt;br /&gt;
 attr eg_fl_Rollo model Eltako_FSB61&lt;br /&gt;
&lt;br /&gt;
Der Status des Devices im Webfrontend stimmt bei unidirektionalen Aktoren nur, wenn die Steuerung des Aktors ausschließlich über FHEM erfolgt. Wird der Aktor sowohl über einen physischen Schalter als auch über FHEM gesteuert, so müssen die Status der beiden Devices für physischen und virtuellen Schalter im Webfrontend verknüpft werden, damit der richtige Status des Aktors angezeigt wird ([[#Physischer EnOcean- und virtueller FHEM-Schalter zu einem Device zusammenfassen |siehe unten]]).&lt;br /&gt;
&lt;br /&gt;
==== bidirektionale Aktoren ====&lt;br /&gt;
Bei bidirektionalen Aktoren steht die SenderID des Aktors im &amp;lt;code&amp;gt;define&amp;lt;/code&amp;gt; des FHEM-Devices. FHEM ordnet empfangene Bestätigungstelegramme anhand der Aktor-SenderID dem passenden FHEM-Device zu. Eine SenderID des TCM-Gateways mit der FHEM den Aktor steuert steht bei bidirektionalen Aktoren immer im Attribut &amp;lt;code&amp;gt;subDef&amp;lt;/code&amp;gt;. Diese SenderID muss dazu im Aktor eingelernt werden.&lt;br /&gt;
{{Hinweis|&#039;&#039;&#039;MERKE:&#039;&#039;&#039; Eine SenderID des TCM-Gateways muss bei bidirektionalen Aktoren immer im Attribut &amp;lt;code&amp;gt;subDef&amp;lt;/code&amp;gt; des Devices stehen.&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;MERKE:&#039;&#039;&#039; Bei bidirektionalen Aktoren stimmt nach korrekter Einbindung in FHEM der Status des FHEM-Devices im Webfrontend immer mit dem realen Aktorzustand überein.}}&lt;br /&gt;
===== Teach-In als Tasteremulation =====&lt;br /&gt;
[[EnOcean-FSR61VA-10A-Stromsto%C3%9F-Schaltrelais_mit_Strommessung|10A-Stromstoß-Schaltrelais mit Strommessung FSR61VA]]&amp;lt;br/&amp;gt;&lt;br /&gt;
Schaltrelais (bidirektional)&lt;br /&gt;
&lt;br /&gt;
FHEM in den learningMode versetzen, dazu im Befehl-Eingabefeld eingeben:&lt;br /&gt;
 set TCM_ESP3_0 teach 600&lt;br /&gt;
&lt;br /&gt;
Die [[#SenderID|SenderID]] des Aktors heraussuchen und diese als EnOcean-Gerät in FHEM definieren, dazu im Befehl-Eingabefeld eingeben:&lt;br /&gt;
 define EnO_switch_FSR61VA EnOcean FFAABBC0&lt;br /&gt;
&lt;br /&gt;
Eine freie SenderID des TCM-basierten Gateways heraussuchen und diese im Attribut &amp;lt;code&amp;gt;subDef&amp;lt;/code&amp;gt; des angelegten Devices hinterlegen.&lt;br /&gt;
&lt;br /&gt;
Anschließend die Attribute &amp;lt;code&amp;gt;subType&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;switchMode&amp;lt;/code&amp;gt; wie im unten wiedergegebenen exemplarischen Auszug aus der Konfiguration anlegen.&lt;br /&gt;
&lt;br /&gt;
Damit der FSR61VA auf FHEM reagieren kann (Ein/Ausschalten), wird das FHEM-Device EnO_switch_FSR61VA in den FSR61VA als Richtungstaster (bzw. Taster ein/aus) eingelernt:&lt;br /&gt;
# Unterer Drehschalter je nach Produktionswoche des FSR61VA (aufgedruckt):&lt;br /&gt;
## bis KW 2/13: &amp;quot;ca. Mitte&amp;quot; (Taster Ein/Aus einlernen)&lt;br /&gt;
## ab KW 3/13 bis KW 10/14: &amp;quot;60&amp;quot; (Taster Ein/Aus einlernen)&lt;br /&gt;
## ab KW 11/14: &amp;quot;40&amp;quot; (Richtungstaster einlernen)&lt;br /&gt;
# Oberer Funktions-Drehschalter: &amp;quot;LRN&amp;quot; (LED blinkt)&lt;br /&gt;
# FHEM Eingabefeld: „set EnO_switch_FSR61VA B0“, &amp;amp;lt;Enter&amp;amp;gt; (LED erlischt)&lt;br /&gt;
# Oberer Funktions-Drehschalter: Eine der ESV-Einstellungen&lt;br /&gt;
# Unterer Funktions-Drehschalter: auf &amp;quot;oo&amp;quot; einstellen (unendlich)&lt;br /&gt;
&lt;br /&gt;
* exemplarischer Auszug aus der Konfiguration&lt;br /&gt;
 define EnO_switch_FSR61VA EnOcean FFAABBC0         --&amp;gt; EnO_switch_FSR61VA ist ein frei gewählter eindeutiger Name&lt;br /&gt;
                                                        für das FHEM-Device.&lt;br /&gt;
                                                        FFAABBC0 ist die erste am Boden des FSR61VA aufgedruckte SenderID. &lt;br /&gt;
                                                        Damit sendet das FSR61VA den Schaltzustand (B0/BI --&amp;gt; ein/aus)&lt;br /&gt;
 attr EnO_switch_FSR61VA IODev TCM_ESP3_0             --&amp;gt; TCM_ESP3_0 ist der Name des Devices, mit dem FHEM EnOcean-Funk &lt;br /&gt;
                                                        sendet und empfängt.&lt;br /&gt;
 attr EnO_switch_FSR61VA subDef FF998877            --&amp;gt; FF998877 ist eine der 127 SendeIDs des TCM_ESP3_0, damit sendet FHEM an den FSR61VA&lt;br /&gt;
 attr EnO_switch_FSR61VA subType switch             --&amp;gt; es handelt sich um einen EnOcean Schalter (der kann A0, AI, B0, BI,...)&lt;br /&gt;
 attr EnO_switch_FSR61VA switchMode pushbutton      --&amp;gt; als &amp;quot;pushbutton&amp;quot; sendet FHEM bei einem &lt;br /&gt;
                                                        &amp;quot;set EnO_switch_FSR61VA B0&amp;quot; nach dem Kommando (B0) noch ein &amp;quot;release&amp;quot;.&lt;br /&gt;
                                                        Das brauchts, wenn der FSR61VA als ES oder ESV betrieben wird.&lt;br /&gt;
                                                        Sonst wird jedes &amp;quot;set&amp;quot;-Kommando vom FSR61VA als  &lt;br /&gt;
                                                        &amp;quot;länger als eine Sekunde gedrückt&amp;quot; interpretiert -&amp;gt; &amp;quot;Tasterdauerlicht&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===== Unidirektionales 4BS-Teach-In =====&lt;br /&gt;
[[EnOcean-FSR14-4x-RS485-Bus-Schaltaktor-4-Kanal-Stromsto%C3%9F-Schaltrelais|RS485-Bus-Aktor 4-Kanal-Stromstoß-Schaltrelais FSR14]]&amp;lt;br/&amp;gt;&lt;br /&gt;
Schaltrelais (bidirektional)&lt;br /&gt;
&lt;br /&gt;
FHEM in den learningMode versetzen, dazu im Befehl-Eingabefeld eingeben:&lt;br /&gt;
 set TCM_ESP3_0 teach 600&lt;br /&gt;
&lt;br /&gt;
Die [[#SenderID|SenderID]] des Aktors heraussuchen und diese als EnOcean-Gerät in FHEM definieren, dazu im Befehl-Eingabefeld eingeben:&lt;br /&gt;
 define EnOcean_switch_FEFF4AF8 EnOcean FEFF4AF8&lt;br /&gt;
&lt;br /&gt;
{{Randnotiz|RNText=Ab {{Link2Forum|Topic=31450|Message=239937|LinkText=Updatestand 04.01.2015}} ist eine manuelle Vergabe einer freien SenderID per &amp;lt;code&amp;gt;subDef&amp;lt;/code&amp;gt; nicht mehr notwendig. Beim ersten Senden des &amp;quot;teach&amp;quot;-Befehls an den Aktor wird eine freie SenderID vergeben, sofern keine gültige SenderID eingetragen war.}}&lt;br /&gt;
Eine freie SenderID des TCM-basierten Gateways heraussuchen und diese im Attribut &amp;lt;code&amp;gt;subDef&amp;lt;/code&amp;gt; des angelegten Devices hinterlegen.&lt;br /&gt;
&lt;br /&gt;
Anschließend die Attribute &amp;lt;code&amp;gt;subType&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;gwCmd&amp;lt;/code&amp;gt; wie im unten wiedergegebenen exemplarischen Auszug aus der Konfiguration anlegen.&lt;br /&gt;
&lt;br /&gt;
Jetzt den Aktor in den Lernmodus versetzen und dann von FHEM das Lerntelegramm verschicken:&lt;br /&gt;
 set EnOcean_switch_FEFF4AF8 teach&lt;br /&gt;
Lernmodus am Aktor ausschalten&lt;br /&gt;
&lt;br /&gt;
* exemplarischer Auszug aus Konfiguration&lt;br /&gt;
 define EnOcean_switch_FEFF4AF8 EnOcean FEFF4AF8   &amp;lt;--- FEFF4AF8 ist hier die SenderID eines FSR14-Kanals (Aktor)&lt;br /&gt;
 attr EnOcean_switch_FEFF4AF8 subDef AABBCC03      &amp;lt;--- AABBCC03 ist eine der 127 SenderID&#039;s des TCM, mit der FHEM sendet [[#Taster - physisch und in FHEM|(siehe unten)]]&lt;br /&gt;
 attr EnOcean_switch_FEFF4AF8 room EnOcean        # Der Raum kann angepasst werden&lt;br /&gt;
 attr EnOcean_switch_FEFF4AF8 gwCmd switching     # Wichtig für FSR14&lt;br /&gt;
 attr EnOcean_switch_FEFF4AF8 subType gateway     # Wichtig für FSR14&lt;br /&gt;
 define FileLog_EnOcean_switch_FEFF4AF8 FileLog ./log/EnOcean_switch_FEFF4AF8-%Y.log EnOcean_switch_FEFF4AF8&lt;br /&gt;
 attr FileLog_EnOcean_switch_FEFF4AF8 logtype text&lt;br /&gt;
&lt;br /&gt;
===== Bidirektionales 4BS-Teach-In =====&lt;br /&gt;
[[EnOcean-MD15-Kleinstellantrieb|Kleinstellantrieb MD15-FTL-xx]]&amp;lt;br/&amp;gt; &lt;br /&gt;
Funkgesteuerter, batteriegespeister Kleinstellantrieb für Raumtemperaturregelung (bidirektional)&lt;br /&gt;
&lt;br /&gt;
EEP: A5-20-01&lt;br /&gt;
&lt;br /&gt;
4BS-Bidirektionales-Teach-In:&lt;br /&gt;
&lt;br /&gt;
#Aktor möglichst komplett zurücksetzen, sofern nicht mehr im Original-Auslieferzustand&lt;br /&gt;
#Falls vorhanden, alle bisherigen FHEM-Devices des Aktors löschen und nach Speichern der geänderten Konfiguration FHEM neu starten&lt;br /&gt;
#FHEM in Lernmodus schalten: &amp;lt;code&amp;gt;set &amp;lt;nowiki&amp;gt;&amp;lt;IODev&amp;gt; teach &amp;lt;time/s&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
#Taster am MD15-FTL-xx so lange drücken, bis ein Signalton ertönt. MD15 bestätigt erfolgreichen Anlernvorgang durch das Aufleuchten der Status-LED und 2 Signaltöne&lt;br /&gt;
#Aktor wird in FHEM automatisch mit allen notwendigen Parametern angelegt.&lt;br /&gt;
&lt;br /&gt;
* exemplarischer Auszug aus Konfiguration&lt;br /&gt;
 define EnO_sensor_01000EFA EnOcean 01000EFA&lt;br /&gt;
 attr EnO_sensor_01000EFA IODev TCM_ESP3_0&lt;br /&gt;
 attr EnO_sensor_01000EFA comMode biDir&lt;br /&gt;
 attr EnO_sensor_01000EFA destinationID unicast&lt;br /&gt;
 attr EnO_sensor_01000EFA manufID 00A&lt;br /&gt;
 attr EnO_sensor_01000EFA room EnOcean&lt;br /&gt;
 attr EnO_sensor_01000EFA subDef AABBCC04&lt;br /&gt;
 attr EnO_sensor_01000EFA subType hvac.01&lt;br /&gt;
 define FileLog_EnO_sensor_01000EFA FileLog ./log/EnO_sensor_01000EFA-%Y.log EnO_sensor_01000EFA&lt;br /&gt;
 attr FileLog_EnO_sensor_01000EFA logtype text&lt;br /&gt;
 attr FileLog_EnO_sensor_01000EFA room EnOcean&lt;br /&gt;
&lt;br /&gt;
===== UTE-Teach-In =====&lt;br /&gt;
[[EnOcean-D-452-FU-EBIM-Aktor-2fach|Einbau-Aktor 452 FU-EBIM o.T.]]&amp;lt;br/&amp;gt;&lt;br /&gt;
2-Kanal-Multifunktionsaktor (bidirektional) mit Energiemessfunktion&lt;br /&gt;
&lt;br /&gt;
EEP: D2-01-08&lt;br /&gt;
&lt;br /&gt;
UTE-Teach-In:&lt;br /&gt;
&lt;br /&gt;
#Aktor möglichst komplett zurücksetzen, sofern nicht mehr im Original-Auslieferzustand&lt;br /&gt;
#Falls vorhanden, alle bisherigen FHEM Devices des Aktors löschen und nach Speichern der geänderten Konfiguration FHEM neu starten&lt;br /&gt;
#FHEM in Lernmodus schalten: &amp;lt;code&amp;gt;set &amp;lt;nowiki&amp;gt;&amp;lt;IODev&amp;gt; teach &amp;lt;time/s&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
#Aktor-Kanal 0 oder 1 in Lernmodus versetzen (immer nur einen Kanal)&lt;br /&gt;
#Aktor-Kanal 0 oder 1 wird in FHEM automatisch mit allen notwendigen Parametern angelegt.&lt;br /&gt;
#Das Anlernen für den zweiten Kanal wie nach 3. bis 5. beschrieben wiederholen&lt;br /&gt;
&lt;br /&gt;
Die Kanäle können jetzt geschaltet werden mit:&lt;br /&gt;
&lt;br /&gt;
*FHEM Device für Kanal 0: set &amp;lt;Name_0&amp;gt; on|off 0&lt;br /&gt;
*FHEM Device für Kanal 1: set &amp;lt;Name_1&amp;gt; on|off 1&lt;br /&gt;
&lt;br /&gt;
Falls gewünscht, kann der Kanal mit dem Attribut attr &amp;lt;Name_0|1&amp;gt; defaultChannel 0|1 voreingestellt werden. Dann entfällt die Angabe des Kanals im set-Befehl.&lt;br /&gt;
&lt;br /&gt;
Die Statusrückmeldungen mit den aktuellen Werten des Energieverbrauches und der Leistung werden vom Aktor automatisch gesendet. Sie werden sowohl als Telegramme nach EEP D2-01-08 als auch nach EEP A5-11-04 mit unterschiedlichen SenderIDs (vgl. Etikett in Original-Verpackung) gesendet.&lt;br /&gt;
Die Rückmeldungen nach EEP D2-01-08 werden von FHEM im Aktor-Device subType actuator.01 berücksichtigt. Die Rückmeldungen nach EEP A5-11-04 werden von FHEM in einem senor-device subType lightCtrlState.02 berücksichtigt. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Besonderheiten für die Anzeige im WebFrontend ==&lt;br /&gt;
&lt;br /&gt;
=== Aufteilung der Kanäle in unabhängige Devices ===&lt;br /&gt;
===== Mehrkanalige bidirektionale Aktoren =====&lt;br /&gt;
Mehrkanalige bidirektionale Aktoren (bspw. Eltako FMS61NP) haben teilweise nur eine SenderID und werden daher in FHEM über ein FHEM-Device im Webfrontend abgebildet und gesteuert. Um im WebFrontend für jeden Kanal ein separates FHEM-Device zur Anzeige und Steuerung zu erhalten, kann [[ReadingsProxy|readingsProxy]] genutzt werden.&lt;br /&gt;
&lt;br /&gt;
Zunächst wird der Aktor standardmäßig in FHEM definiert/angelernt und die Funktion geprüft (hier am Beispiel eines Aktor mit dem Namen &amp;quot;Aktor&amp;quot;). Anschließend wird pro Kanal ein readingProxy-Device mit Bezug auf das Reading channelA, channelB, ... angelegt:&lt;br /&gt;
&lt;br /&gt;
 #Kanal A zur Steuerung mit on und off&lt;br /&gt;
 define AktorKanalA readingsProxy Aktor:channelA&lt;br /&gt;
 attr AktorKanalA setFn {($CMD eq &amp;quot;on&amp;quot;)?&amp;quot;A0&amp;quot;:&amp;quot;AI&amp;quot;;;} &lt;br /&gt;
 attr AktorKanalA setList off on &lt;br /&gt;
 attr AktorKanalA valueFn {($VALUE eq &amp;quot;A0&amp;quot;)?&amp;quot;on&amp;quot;:&amp;quot;off&amp;quot;}&lt;br /&gt;
 attr AktorKanalA webCmd off:on &lt;br /&gt;
&lt;br /&gt;
 #Kanal B zur Steuerung mit on und off&lt;br /&gt;
 define AktorKanalB readingsProxy Aktor:channelB&lt;br /&gt;
 attr AktorKanalB setFn {($CMD eq &amp;quot;on&amp;quot;)?&amp;quot;B0&amp;quot;:&amp;quot;BI&amp;quot;;;} &lt;br /&gt;
 attr AktorKanalB setList off on &lt;br /&gt;
 attr AktorKanalB valueFn {($VALUE eq &amp;quot;B0&amp;quot;)?&amp;quot;on&amp;quot;:&amp;quot;off&amp;quot;}&lt;br /&gt;
 attr AktorKanalB webCmd off:on &lt;br /&gt;
&lt;br /&gt;
Jeder Kanal wird jetzt separat im WebFrontend durch das readingsProxy-Device abgebildet (Statusanzeige) und kann mit diesem gesteuert werden.&lt;br /&gt;
&lt;br /&gt;
Ein ausführlicheres readingsProxy-Beispiel für einen mehrkanaligen Jalousieaktor mit Visualisierung über Slider enthält dieser {{Link2Forum|Topic=59418|Message=512758}}.&lt;br /&gt;
[[Datei:EnO_Jalousie_OmnioAktor_REGJ12-04.png|400px|thumb|center|readingsProxy-Beispiel für einen mehrkanaligen Jalousieaktor mit Visualisierung über Slider]]&lt;br /&gt;
&lt;br /&gt;
===== Virtuelle Schalter für unidirektionale Aktoren =====&lt;br /&gt;
Um die 4 Kanäle jeweils einzeln als Schalter (einzelne Schaltwippe) im WebFrontend abzubilden kann [[ReadingsProxy|readingsProxy]] genutzt werden. So werden vier Schalter (im unten gezeigten Beispiel: fhemSchalterKanal[A-D]) mit nur einer der 127 eigenen SenderIDs zur Verfügung gestellt.&lt;br /&gt;
{{Randnotiz|RNTyp=i|RNText=Ab [[version|Modulversion]] 11866/31.7.2016 besitzen auch virtuelle Schalter die Readings channel[A-D]. Ein readingsProxy sollte seitdem besser von diesen Readings, wie im [[#Mehrkanalige_bidirektionale_Aktoren|vorherigen Abschnitt]] dargestellt, abgeleitet werden. }}&lt;br /&gt;
Anders als bei den bekannten bidirektionalen Aktoren und den FHEM-Devices der physischen Schalter, existiert bei den virtuellen Schaltern das Reading channelA, channelB, ... nicht. Daher muss das readingsProxy für den virtuellen Schalter vom Reading state abgeleitet werden:&lt;br /&gt;
&lt;br /&gt;
 #Kanal A zur Steuerung mit on und off&lt;br /&gt;
 define fhemSchalterKanalA readingsProxy fhemSchalter:state&lt;br /&gt;
 attr fhemSchalterKanalA setFn {($CMD eq &amp;quot;on&amp;quot;)?&amp;quot;A0&amp;quot;:&amp;quot;AI&amp;quot;;;}&lt;br /&gt;
 attr fhemSchalterKanalA setList on off&lt;br /&gt;
 attr fhemSchalterKanalA valueFn {$LASTCMD}&lt;br /&gt;
 attr fhemSchalterKanalA webCmd on:off&lt;br /&gt;
&lt;br /&gt;
 #Kanal B zur Steuerung mit on und off&lt;br /&gt;
 define fhemSchalterKanalB readingsProxy fhemSchalter:state&lt;br /&gt;
 attr fhemSchalterKanalB setFn {($CMD eq &amp;quot;on&amp;quot;)?&amp;quot;B0&amp;quot;:&amp;quot;BI&amp;quot;;;}&lt;br /&gt;
 attr fhemSchalterKanalB setList on off&lt;br /&gt;
 attr fhemSchalterKanalB valueFn {$LASTCMD}&lt;br /&gt;
 attr fhemSchalterKanalB webCmd on:off&lt;br /&gt;
&lt;br /&gt;
 #Kanal C zur Steuerung mit on und off&lt;br /&gt;
 define fhemSchalterKanalC readingsProxy fhemSchalter:state&lt;br /&gt;
 attr fhemSchalterKanalC setFn {($CMD eq &amp;quot;on&amp;quot;)?&amp;quot;C0&amp;quot;:&amp;quot;CI&amp;quot;;;}&lt;br /&gt;
 attr fhemSchalterKanalC setList on off&lt;br /&gt;
 attr fhemSchalterKanalC valueFn {$LASTCMD}&lt;br /&gt;
 attr fhemSchalterKanalC webCmd on:off&lt;br /&gt;
&lt;br /&gt;
 #Kanal D zur Steuerung mit on und off&lt;br /&gt;
 define fhemSchalterKanalD readingsProxy fhemSchalter:state&lt;br /&gt;
 attr fhemSchalteKanalD setFn {($CMD eq &amp;quot;on&amp;quot;)?&amp;quot;D0&amp;quot;:&amp;quot;DI&amp;quot;;;}&lt;br /&gt;
 attr fhemSchalterKanalD setList on off&lt;br /&gt;
 attr fhemSchalterKanalD valueFn {$LASTCMD}&lt;br /&gt;
 attr fhemSchalterKanalD webCmd on:off&lt;br /&gt;
&lt;br /&gt;
Werden diese FHEM-Taster (und etwaige physische Taster) in EnOcean-Aktoren eingelernt (siehe Anleitung des Aktors), so können nun die EnOcean-Aktoren mit physischen Tastern (sendet mit der 8-stelligen SenderID des Tasters) und mit virtuellen FHEM-Readingsproxy-Schaltern (senden mit einer der 127 eigenen SenderIDs) bedient werden.&lt;br /&gt;
&lt;br /&gt;
=== Physischer EnOcean- und virtueller FHEM-Schalter zu einem Device zusammenfassen ===&lt;br /&gt;
Um im Webfrontend die Aktionen beider Schalter in einem Element zusammengefasst und damit den realen Zustand bei &#039;&#039;&#039;unidirektionalen&#039;&#039;&#039; Aktoren zu sehen, kann man eine &amp;lt;code&amp;gt;structure&amp;lt;/code&amp;gt; nutzen:&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
(Bei bidirektionalen Aktoren ist dies aufgrund der Statusrückmeldungen nicht notwendig. Achtung: Teilweise müssen Statusrückmeldungen/Bestätigungstelegramme erst am Aktor eingeschaltet werden)&lt;br /&gt;
&lt;br /&gt;
 #Definition des virtuellen FHEM-Schalters&lt;br /&gt;
 define fhemSchalter EnOcean AABBCC01              &amp;lt;--- AABBCC01 ist eine der 127 SenderID&#039;s des TCM, mit der FHEM sendet&lt;br /&gt;
 attr fhemSchalter eventMap BI:off B0:on&lt;br /&gt;
 attr fhemSchalter icon icoBELEUCHTUNG.png&lt;br /&gt;
 attr fhemSchalter subType switch&lt;br /&gt;
 &lt;br /&gt;
 #Definition des physischen Tasters (z.B. durch autocreate erzeugt)&lt;br /&gt;
 define EnO_switch_0021E4BB EnOcean 0021E4BB      &amp;lt;--- 0021E4BB ist die (aufgedruckte) 8-stellige SenderID des physischen Tasters&lt;br /&gt;
 attr EnO_switch_0021E4BB eventMap BI:off B0:on&lt;br /&gt;
 attr EnO_switch_0021E4BB room EnOcean&lt;br /&gt;
 attr EnO_switch_0021E4BB subType switch&lt;br /&gt;
 attr EnO_switch_0021E4BB dummy&lt;br /&gt;
 &lt;br /&gt;
 #fhemSchalter ist der Name des virtuellen FHEM-Schalters&lt;br /&gt;
 #EnO_switch_0021E4BB ist der (z.B. per autocreate erstellte) FHEM-Taster&lt;br /&gt;
 define Gruppe_test_notify structure room fhemSchalter EnO_switch_0021E4BB&lt;br /&gt;
 attr Gruppe_test_notify eventMap BI:off B0:on&lt;br /&gt;
 attr Gruppe_test_notify room Gaestezimmer&lt;br /&gt;
 attr Gruppe_test_notify clientstate_behavior last&lt;br /&gt;
&lt;br /&gt;
Alternativ kann man für diesen Zweck auch ein &amp;lt;code&amp;gt;notify&amp;lt;/code&amp;gt; in Verbindung mit &amp;lt;code&amp;gt; setreading &amp;lt;device&amp;gt; state &amp;lt;state&amp;gt;&amp;lt;/code&amp;gt; nutzen:&lt;br /&gt;
&lt;br /&gt;
 define nAbgleich notify EnO_switch_0021E4BB:(on|off) setreading fhemSchalter state $EVENT&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
=== Warum schaltet mein Aktor nicht, wenn ich im WebFrontend auf das Icon für den physischen Taster/Schalter klicke bzw. mit &amp;lt;code&amp;gt;set &amp;lt;device&amp;gt; &amp;lt;command&amp;gt;&amp;lt;/code&amp;gt; ansteuere? ===&lt;br /&gt;
:Aus Sicherheitsgründen können bei EnOcean keine physischen Geräte(-adressen) durch FHEM bzw. das TCM-Gateway emuliert werden. FHEM muss zur Steuerung separat an den Aktor angelernt werden. Dazu eine der TCM-Adressen an den Aktor anlernen.&lt;br /&gt;
&lt;br /&gt;
=== Welche Infos sollten Anfragen im EnOcean-Forum enthalten? ===&lt;br /&gt;
* Anfragen bitte nur zur aktuellsten FHEM-Version: Befehl &amp;lt;code&amp;gt;update&amp;lt;/code&amp;gt; ergibt Ausgabe &amp;quot;nothing to do...&amp;quot;&lt;br /&gt;
* detaillierte Beschreibung des Problems&lt;br /&gt;
* beteiligte Komponenten (genaue Bezeichnung und evtl. Link auf Hersteller-Dokumentation)&lt;br /&gt;
* list des jeweiligen devices (Ausgabe von &amp;lt;code&amp;gt;list &amp;lt;device&amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
* passender Ausschnitt aus Logfile (siehe Link im FHEM-Menü links) generiert mit gesetztem Attribut verbose 5 am TCM-Device (&amp;lt;code&amp;gt;attr &amp;lt;IODev&amp;gt; verbose 5&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
=== Wie kann ich zur Fortentwicklung der EnOcean-Module beitragen? ===&lt;br /&gt;
* Erfolgreichen Einsatz von neuen/bisher nicht gemeldeten EnOcean-Geräten im Forum mitteilen&lt;br /&gt;
* In der {{Link2CmdRef}} als [untested] markierte EEPs bei erfolgreichen Tests im Forum als getestet melden&lt;br /&gt;
* Codeschnipsel und Ideen im Forum posten&lt;br /&gt;
* Fehler und Probleme im Forum melden&lt;br /&gt;
* Wiki: Neue Geräte ins Wiki aufnehmen; Codeschnipsel und Beispiele einpflegen&lt;br /&gt;
&lt;br /&gt;
=== Wie findet man die Sender-ID eines bidirektionalen Aktors? ===&lt;br /&gt;
* Aufkleber auf dem Aktor oder beigelegte Information in der Aktorverpackung&lt;br /&gt;
* Ermittlung mit FHEM:&lt;br /&gt;
# Bestätigungstelegramme am Aktor aktivieren&lt;br /&gt;
# Funktaster am Aktor anlernen oder alternativ Taster am örtlichen Steuereingang anschließen&lt;br /&gt;
# FHEM in den learningMode versetzen: &amp;lt;code&amp;gt;set &amp;lt;nowiki&amp;gt;&amp;lt;IODev&amp;gt; teach &amp;lt;time/s&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
# [[Event monitor|Event Monitor]] aufrufen&lt;br /&gt;
# Aktor mit Taster schalten&lt;br /&gt;
# Im Event Monitor wird nun die Sender-ID des Aktors durch das Bestätigungstelegramm angezeigt. Sofern ein Funktaster zur Ansteuerung genutzt wird, zeigt der Event Monitor auch dessen Sender-ID.&lt;br /&gt;
# FHEM hat mittels autocreate für das Bestätigungstelegramm ein Device angelegt, sofern das vorher noch nicht existierte. Dieses Device kann man nach eventueller Änderung des subType und dem Setzen anderer gegebenenfalls notwendiger Attribute an den Aktor anlernen.&lt;br /&gt;
&lt;br /&gt;
=== Wie ermittelt man freie Sender-IDs des TCM-basierten Funkgateways? ===&lt;br /&gt;
FHEM ermittelt eine freie SenderID automatisch, wenn die Definition folgermaßen erfolgt:&lt;br /&gt;
* unidirektionaler Aktor:&lt;br /&gt;
: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;define &amp;lt;name&amp;gt; EnOcean getNextID &amp;lt;EEP&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
: Im definierten Device ist &amp;quot;getNextID&amp;quot; durch eine freie SenderID des TCMs ersetzt.&lt;br /&gt;
* bidirektionaler Aktor:&lt;br /&gt;
: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;define &amp;lt;name&amp;gt; EnOcean &amp;lt;SenderId des Aktors&amp;gt; &amp;lt;EEP&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
: Dem definierten Device wird das Attribut &amp;lt;code&amp;gt;subDef&amp;lt;/code&amp;gt; mit dem Wert &amp;lt;code&amp;gt;getNextId&amp;lt;/code&amp;gt; zugewiesen: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;attr &amp;lt;name&amp;gt; subDef getNextID&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. &amp;quot;getNextID&amp;quot; ersetzt FHEM automatisch durch eine freie SenderID des TCMs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Manuelle Ermittlung der freien SenderIDs, wenn die obige automatische mit FHEM fehlschlägt oder eine manuelle Vergabe gewünscht wird:&lt;br /&gt;
* Aus der oben [[EnOcean_Starter_Guide#Vorbereitung|gezeigten Tabelle]]&lt;br /&gt;
* Anzeige der nächsten freien Sender-ID: &amp;lt;pre&amp;gt;{EnOcean_CheckSenderID(&amp;quot;getNextID&amp;quot;, &amp;quot;&amp;lt;IODev&amp;gt;&amp;quot;, &amp;quot;0000000&amp;quot;)}&amp;amp;#13; &amp;lt;/pre&amp;gt;&lt;br /&gt;
* Auflistung der bereits vergebenen Sender-IDs: &amp;lt;pre&amp;gt;{EnOcean_CheckSenderID(&amp;quot;getUsedID&amp;quot;, &amp;quot;&amp;lt;IODev&amp;gt;&amp;quot;, &amp;quot;0000000&amp;quot;)}&amp;amp;#13; &amp;lt;/pre&amp;gt;&lt;br /&gt;
* Auflistung der noch nicht vergebenen Sender-IDs: &amp;lt;pre&amp;gt;{EnOcean_CheckSenderID(&amp;quot;getFreeID&amp;quot;, &amp;quot;&amp;lt;IODev&amp;gt;&amp;quot;, &amp;quot;0000000&amp;quot;)}&amp;amp;#13; &amp;lt;/pre&amp;gt;&lt;br /&gt;
Den jeweiligen Befehl in das &amp;quot;[[Konfiguration#Befehl-Eingabefeld|Befehl-Eingabefeld]]&amp;quot; kopieren, &amp;lt;IODev&amp;gt; durch den Namen des TCM-Devices ersetzen und dann Auslösen.&lt;br /&gt;
&lt;br /&gt;
=== Schaltet immer AI ein und A0 aus, BI ein und B0 aus usw. ? ===&lt;br /&gt;
Nein. &amp;lt;br&amp;gt;&lt;br /&gt;
Das Verhalten der Aktoren ist abhängig vom Hersteller und/oder vom Anlernvorgang. Laut EEP schaltet xI ein und x0 aus. Dies wird von den meisten Herstellern entsprechend umgesetzt. Eltako definiert dies genau andersherum: xI schaltet aus und x0 ein. Analog sind auch die jeweiligen Bestätigungstelegramme der Aktoren herstellerspezifisch festgelegt. Zudem kann bei einigen Aktoren auch je nach Anlernvorgang ein anderes Verhalten erreicht werden; Details enthalten die Bedienungsanleitungen.&lt;br /&gt;
&lt;br /&gt;
=== Wie kann man einen Plot für ein EnOcean-Device anlegen? ===&lt;br /&gt;
Bei der manuellen Anlage von Devices über das EEP und bei der automatischen Anlage durch die autocreate-Funktion beim teach-in werden neben dem Device selbst auch das FileLog-Device und -soweit als Vorlage von FHEM mitgeliefert- die SVG-Devices mit .gplot-Datei für die Plots automatisch erzeugt. Manuell sollten die Devices deshalb möglichst über die Vorgabe des EEP erzeugt werden:&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;define &amp;lt;name&amp;gt; EnOcean &amp;lt;ID&amp;gt; &amp;lt;EEP&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; oder&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;define &amp;lt;name&amp;gt; EnOcean &amp;lt;EEP&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;define test EnOcean A5-04-02&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei bestehenden Devices können die FileLog- und SVG-Devices nachträglich erzeugt werden. Hierzu wird im DEF das entsprechende EEP statt der ID eingetragen und {{Taste|modify &amp;lt;name&amp;gt;}} bestätigt. Nach dem automatischen Anlegen der zugehörigen Devices erscheint dort wieder die ID.&lt;br /&gt;
&lt;br /&gt;
Sollte für das EEP keine .gplot-Vorlage für einen Plot bzw. das SVG-Device existieren, kann ein Plot mit dem [[Plots erzeugen|.gplot-Editor]] erstellt werden.&lt;br /&gt;
&lt;br /&gt;
=== Was muss man beim Einsatz der &amp;quot;set extensions&amp;quot; (on-for-timer, on-till, ...) beachten? ===&lt;br /&gt;
Die {{Link2CmdRef|Anker=setExtensions|Label=set extensions}} werden von EnOcean grundsätzlich unterstützt, wenn das Device als &lt;br /&gt;
# set-Befehle &amp;quot;on&amp;quot; und &amp;quot;off&amp;quot; automatisch anbietet &#039;&#039;&#039;oder&#039;&#039;&#039; &lt;br /&gt;
# dies manuell durch das Mapping (bspw. &amp;lt;code&amp;gt;eventMap BI:on B0:off&amp;lt;/code&amp;gt;) erreicht wird.&lt;br /&gt;
&lt;br /&gt;
Im 1. Fall sind alle &amp;quot;set extensions&amp;quot;-Befehle automatisch funktionsfähig.&lt;br /&gt;
&lt;br /&gt;
Im 2. Fall ist die eventMap jedoch zusätzlich - je nach gewünschten &amp;quot;set extensions&amp;quot;-Befehl - zwingend weiter zu ergänzen:&lt;br /&gt;
* on-tor-timer:  &amp;lt;code&amp;gt;attr &amp;lt;device&amp;gt; eventMap on-for-timer:on-for-timer BI:on B0:off&amp;lt;/code&amp;gt;  ({{Link2Forum|Topic=28855|Message=214960}})&lt;br /&gt;
* off-tor-timer:  &amp;lt;code&amp;gt;attr &amp;lt;device&amp;gt; eventMap off-for-timer:off-for-timer BI:on B0:off&amp;lt;/code&amp;gt;&lt;br /&gt;
* on-till:  &amp;lt;code&amp;gt;attr &amp;lt;device&amp;gt; eventMap on-till:on-till BI:on B0:off&amp;lt;/code&amp;gt;  ({{Link2Forum|Topic=29993|Message=226886}})&lt;br /&gt;
* off-till:  &amp;lt;code&amp;gt;attr &amp;lt;device&amp;gt; eventMap off-till:off-till BI:on B0:off&amp;lt;/code&amp;gt;&lt;br /&gt;
* blink:  &amp;lt;code&amp;gt;attr &amp;lt;device&amp;gt; eventMap on-for-timer:on-for-timer BI:on B0:off&amp;lt;/code&amp;gt;  ({{Link2Forum|Topic=31358|Message=239151}})&lt;br /&gt;
* intervals:  &amp;lt;code&amp;gt;attr &amp;lt;device&amp;gt; eventMap on-till:on-till BI:on B0:off&amp;lt;/code&amp;gt;&lt;br /&gt;
Sollen mehrere &amp;quot;set extensions&amp;quot;-Befehle verwendet werden, so sind die obigen Codes entsprechend zu kombinieren.&lt;br /&gt;
&lt;br /&gt;
=== Für mein EnOcean-Gerät gibt es keine spezielle Wiki-Seite; wo finde ich dann Informationen? ===&lt;br /&gt;
* In der {{Link2CmdRef}} nach dem Gerät suchen&lt;br /&gt;
* In der commandref nach dem verwendeten EEP suchen&lt;br /&gt;
* Im Wiki nach einem Gerät mit einer ähnlichen EEP/subType suchen&lt;br /&gt;
* Im EnOcean-Forum nach Threads zum Gerät/EEP suchen&lt;br /&gt;
&lt;br /&gt;
=== Warum funktioniert mein Eltako-Gerät nicht wie in commandref/Wiki beschrieben? ===&lt;br /&gt;
* Eltako-Geräte haben bei gleicher Produktbezeichnung teilweise je nach Produktionswoche unterschiedliche Funktionen/Eigenschaften&lt;br /&gt;
* die Produktionswoche ist auf dem Gerät angegeben (z.B. 11/14 -&amp;gt; Elfte Woche im Jahr 2014)&lt;br /&gt;
* in den nach Produktionswoche untergliederten [http://www.eltako.com/de/bedienungsanleitungen/gebaeudefunk-powerline.html Bedienungsanleitungen] stehen genauere Angaben&lt;br /&gt;
* Angaben in commandref/Wiki analog für die Angaben laut Bedienungsanleitung für den speziellen Produktionszeitraum umsetzen&lt;br /&gt;
* bei gravierenden Abweichungen und Neuerungen Info im Forum/Wiki&lt;br /&gt;
&lt;br /&gt;
=== Wie kann ich Eltako-Aktoren anhand Ihrer Modellbezeichnung grob unterscheiden? ===&lt;br /&gt;
* 12er Baureihe (ausgelaufen) = unidirektionale RS485-Bus-Aktoren für Hutschiene&lt;br /&gt;
* 14er Baureihe = bidirektionale RS485-Bus-Aktoren für Hutschiene&lt;br /&gt;
* 61er Baureihe = uni- und bidirektionale Aktoren je nach Produktionszeitraum für Einbaumontage (Hohlwanddose)&lt;br /&gt;
* 70/71er Baureihe = uni- und bidirektionale Aktoren je nach Produktionszeitraum für Einbaumontage (Zwischendecke)&lt;br /&gt;
* zwischen den Modellreihen gibt es bei uni- und bidirektonalen Aktoren bei der Ansteuerung Übereinstimmungen; Angaben können dementsprechend analog zwischen den Geräten übertragen werden&lt;br /&gt;
&lt;br /&gt;
=== Wie kann ich PEHA-Aktoren anhand Ihrer Modellbezeichnung grob unterscheiden? ===&lt;br /&gt;
* Easyclick-Unterputzempfänger: unidirektionale Aktoren für Einbaumontage; Modellbezeichnung enthält typischerweise die Buchstaben EP&lt;br /&gt;
* Easyclickpro-Unterputzempfänger: bidirektionale Aktoren für Einbaumontage; Modellbezeichnung enthält die Buchstaben EBI oder EBIM (mit zusätzlicher Energiemessung)&lt;br /&gt;
&lt;br /&gt;
=== Wo finde ich Angaben zu Jäger Direkt - OPUS GreenNet EnOcean-Geräten? ===&lt;br /&gt;
* Es handelt sich im Wesentlichen um umgelabelte Produkte anderer Hersteller (Peha, Eltako usw.). Anhand der Gehäuseform lassen sich Rückschlüsse ziehen&lt;br /&gt;
* Angaben zu den &amp;quot;Original&amp;quot;-Produkten können grundsätzlich -soweit bekannt- auf OPUS GreenNet Geräte übertragen werden&lt;br /&gt;
&lt;br /&gt;
=== Wie ermittele ich die Signalstärke, Signalqualität durch die Anzeige des RSSI/Repeatingcounter? ===&lt;br /&gt;
* Durch anlegen einer readingsGroup: &amp;lt;code&amp;gt;define TCM_Signal readingsGroup TYPE=EnOcean:+TCM_ESP3_0_RSSI,+TCM_ESP3_0_ReceivingQuality,+TCM_ESP3_0_RepeatingCounter,+TCM_ESP3_0_TIME&amp;lt;/code&amp;gt;&lt;br /&gt;
Dabei muss TCM_ESP3_0 durch den Devicenamen des eigenen TCMs ersetzt werden!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HOWTOS]]&lt;br /&gt;
[[Kategorie:EnOcean Components]]&lt;/div&gt;</summary>
		<author><name>Mikka</name></author>
	</entry>
</feed>