EnOcean Starter Guide: Unterschied zwischen den Versionen

Aus FHEMWiki
K (Überarbeitung - WorkInProgress)
K (Link aktualisiert)
 
(81 dazwischenliegende Versionen von 8 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
{{Baustelle}}
{{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 ++++ https://forum.fhem.de/index.php/topic,97027.0.html: autocreate nur noch für Teach-In-Telegramm, wenn nicht "attr <IODev> learningDev all" gesetzt ist. }}
 
<div style="float:right">
{{Infobox Modul
|Name=TCM
|ModPurpose=Einbindung EnOcean-Gateway
|ModType=d
|ModCmdRef=TCM
|ModForumArea=EnOcean
|ModTechName=00_TCM.pm
|ModOwner=klaus.schauer ([http://forum.fhem.de/index.php?action=profile;u=293 Forum] / [[Benutzer Diskussion:Klaus.schauer|Wiki]])
}}
{{Infobox Modul
|Name=EnOcean
|ModPurpose=Ansteuerung EnOcean-Geräte über TCM
|ModType=d
|ModCmdRef=EnOcean
|ModForumArea=EnOcean
|ModTechName=10_EnOcean.pm
|ModOwner=klaus.schauer ([http://forum.fhem.de/index.php?action=profile;u=293 Forum] / [[Benutzer Diskussion:Klaus.schauer|Wiki]])
}}
</div>
 
== EnOcean ==
== EnOcean ==
[http://www.enocean.com/de/ EnOcean] ist  
[http://www.enocean.com/de/ EnOcean] ist  
* ein [http://www.enocean.com/de/enocean-wireless-standard/ ISO ratifizierter Funkstandard], ausgelegt für Funksensoren und Funksensornetze mit besonders niedrigem Energieverbrauch
* ein [http://www.enocean.com/de/enocean-wireless-standard/ ISO ratifizierter Funkstandard], ausgelegt für Funksensoren und Funksensornetze mit besonders niedrigem Energieverbrauch
* ein Anbieter batterieloser Funksensoren
* ein Anbieter batterieloser Funksensoren
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.  
EnOcean-Endgeräte mit dem von der EnOcean Alliance zur Verfügung gestellten EnOcean-Funkprotokoll werden von [https://www.enocean-alliance.org/de/produkte/ zahlreichen Hardware-Herstellern] angeboten.  


Abhängig von den Funktionen des EnOcean-Endgerätes werden bestimmte 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.
=== EnOcean Equipment Profile ===
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.


EnOcean bietet -neben den veröffentlichten Standard-Enocean-Profilen- die Möglichkeit für die Nutzung von herstellerspezifischen Funk-Profilen/Telegrammen (MSC = Manufacturer Specific Communication). Falls die Herstellerfirmen den Inhalt dieser MSC-Telegramme nicht veröffentlichen, ist eine Unterstützung durch Fhem grds. nicht möglich. Teilweise werden die Produkte sowohl mit MSC- als auch mit Standard-Enocean-Profilen vertrieben [http://forum.fhem.de/index.php/topic,19544.msg132240.html#msg132240]. Angaben zu den verwendeten Profilen/Telegrammen sind regelmäßig den Bedienungsanleitungen der Produkte zu entnehmen.
==== Manufacturer Specific Communication ====
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.


EnOcean-Endgeräte gibt es sowohl in uni- als auch in bidirektionalen Ausführungen. Bei '''unidirektionalen Endgeräten''' 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 '''bidirektionalen Endgeräten''' erfolgt die Funk-Kommunikation hingegen in zwei Richtungen; sie bieten Sende- und Empfangsmöglichkeiten. Der bidirektionale Aktor kann somit unter anderem die erfolgreiche Ausführung eines empfangenen Befehls zurückmelden.
=== uni- versus bidirektional ===
EnOcean-Endgeräte gibt es sowohl in uni- als auch in bidirektionalen Ausführungen. Bei '''unidirektionalen Endgeräten''' 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 '''bidirektionalen Endgeräten''' erfolgt die Funk-Kommunikation hingegen in zwei Richtungen: sie bieten  
# Sende- und  
# Empfangsmöglichkeiten.  
Der bidirektionale Aktor kann somit unter anderem die erfolgreiche Ausführung eines empfangenen Befehls zurückmelden.


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. "Funktaster 1" den "Dimmer 1" steuert. Beim Anlernvorgang wird die eindeutige SenderID des Sensors in der Empfängertabelle des Aktors gespeichert. Alle EnOcean Geräte mit Sendefunktion haben eine eindeutige 8-stellige Hex-SenderID (z.B. ffc54500; teilweise auch dargestellt mit Punkten oder Doppelpunkten dazwischen). Diese SenderID ist auf den EnOcean Geräten aufgedruckt oder liegt der Verpackung des Endgerätes bei.
=== SenderID ===
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. "Funktaster 1" den "Dimmer 1" steuert.  
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.
   
   
== EnOcean in Fhem ==
== EnOcean in FHEM ==
=== Allgemein ===
=== Allgemein ===
Fhem wird regelmäßig weiterentwickelt und verbessert. Daher ist es zwingend notwendig, dass Fhem auf dem aktuellsten Stand ist. Bitte nach Fhem-Installation den Befehl <code>update</code> ausführen und anschließend <code>shutdown restart</code> durchführen. Genauso auch bei Anfragen im Forum die Aktualität von Fhem überprüfen.
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 <code>update</code> ausführen und anschließend <code>shutdown restart</code> durchführen. Genauso auch vor [[#Welche_Infos_sollten_Anfragen_im_EnOcean-Forum_enthalten.3F|Anfragen im Forum]] die Aktualität von FHEM überprüfen.
 
Die Nutzung von EnOcean in Fhem ist für den Anfänger nur mit der standardmäßig eingeschalteten [http://fhem.de/commandref.html#autocreate autocreate-Funktion] einfach umsetzbar. Die Kenntnis der Fhem-Grundlagen und Durcharbeitung der Anfänger-Lektüren wird im Folgenden vorausgesetzt. Insbesondere ist [http://fhem.de/Heimautomatisierung-mit-fhem.pdf Heimautomatisierung mit Fhem] zu empfehlen, auch wenn es nicht speziell EnOcean behandelt, so werden doch wesentliche Punkte für ein Verständnis von Fhem vermittelt.
 
Im Folgendem und auf den [[:Kategorie:EnOcean Components|Wiki-Seiten der Einzelgeräte]] werden immer wieder Auszüge aus der [[Konfiguration|fhem.cfg]] dargestellt. Diese dienen zur Erläuterung und Veranschaulichung. Die Bearbeitung der [[Konfiguration|fhem.cfg]] sollte -zur Verhinderung von Anfängerfehler- nach Möglichkeit immer über das "Befehl-Eingabefeld" und die "Objektdetails" erfolgen.
 
=== EnOcean Funk mit Fhem empfangen und senden ===
Fhem kann mit einem Funkgateway, das auf einem TCM-Modul basiert, EnOcean-Funk empfangen und senden.
Bisher gibt es zwei Transceiver Chips von EnOcean:
* TCM120 (ausgelaufen)
** für den USB-Port: [https://embedded-intelligence.de/de/products/hardware/bsc-bor.html BSC BOR]
* TCM310
** 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]
** als Aufsteckmodul für Raspberry Pi: [http://www.enocean.com/de/enocean-pi/ EnOceanPi]
 
Zudem existiert eine [http://forum.fhem.de/index.php/topic,22635.msg160582.html#msg160582 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 Funkantennenmodel]] am RS485-Bus empfangen werden können.
 
==== Definition von TCM / Gateway ====
Das TCM-basierte Gateway wird nach dem Anschluss an den Fhem-Rechner beim Fhem-Start automatisch erkannt und grundlegend durch entsprechende Einträge in der fhem.cfg definiert. Ein manuelles Anlegen des TCM-Moduls oder Eingriff in die fhem.cfg ist regelmäßig nicht notwendig und auch nicht ratsam. Eine Ausnahme bilden RS485-basierte Gateways (bspw. FGW14) bei denen manuell das Attribut <code>comType</code> auf <code>RS485</code> in der [[Konfiguration|fhem.cfg]] gesetzt werden muss, da ansonsten Fhem nicht mehr startet.
 
Beispiele der automatisch erzeugten define-Zeile in der fhem.cfg:
 
TCM120/BSCBor an Rapberry Pi:
define BscBor TCM ESP2 /dev/ttyACM0@9600
 
TCM310/EnOceanPi an Raspberry Pi:
define TCM310_0 TCM ESP3 /dev/ttyACM0@57600
 
TCM310/USB300 an Fritzbox
define TCM310_0 TCM ESP3 /dev/ttyUSB3@57600


Hier Beispiel der define-Zeile in der fhem.cfg für kabelgebundene Anbindung mit FGW14 über serielle Schnittstelle
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.
define TCM120 TCM ESP2 /dev/ttyS3@57600
attr TCM120 comType RS485                    <---- Manuell zu setzen; zwingend, sonst startet Fhem nicht!!


Nach erfolgreicher Definition ist das Gateway im Raum "Everything" in der Gruppe "TCM" zu finden. Wenn neben dem Gatewaynamen "initialized" oder "opened" angezeigt wird, ist Fhem in der Lage mit den EnOcean-Geräten zu kommunizieren und der nächste Schritt, die Definition der EnOcean-Geräte in Fhem, kann erfolgen.  
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 "[[Konfiguration#Befehl-Eingabefeld|Befehl-Eingabefeld]]" und die "[[Konfiguration#Objektdetails|Objektdetails]]" erfolgen.


Mehr Details in der [http://fhem.de/commandref.html#TCM commandref] zu TCM
== Definition von Geräten ==
Alle EnOcean Geräte mit Sendefunktion haben eine eindeutige 8-stellige Hex-SenderID (z.B. ffc54500). Diese ID ist auch auf den EnOcean Geräten aufgedruckt (auch mit Punkten oder Doppelpunkten dazwischen, z.B. ff:c5:45:00). Diese eindeutige SenderID wird auch in Fhem zur Kommunikation genutzt und in der Definition der Geräte bzw. den Attributen hinterlegt.
=== Vorbereitung ===
=== Vorbereitung ===
Es empfiehlt sich eine Tabelle aufzubauen mit der Struktur (Vorschlag):
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:


<table class="wikitable" border="1">
<table class="wikitable" border="1">
Zeile 77: Zeile 72:
<th> Name EnOcean
<th> Name EnOcean
</th>
</th>
<th> Name in Fhem
<th> Name in FHEM
</th>
</th>
<th> HEX (Sender-ID)
<th> HEX (Sender-ID)
Zeile 84: Zeile 79:
</th></tr>
</th></tr>
<tr>
<tr>
<td>
<td></td>
</td>
<td> &lt;Name Hardwareschalter&gt;
<td> &lt;Name Hardwareschalter&gt;
</td>
</td>
<td> &lt;Name in Fhem&gt;
<td> &lt;Name in FHEM&gt;
</td>
</td>
<td> &lt;HEX Code&gt;
<td> &lt;HEX Code&gt;
Zeile 95: Zeile 89:
</td></tr>
</td></tr>
<tr>
<tr>
<td>
<td></td>
<td> TCM_ESP3_0
</td>
</td>
<td> TCM 310_0
<td> TCM_ESP3_0
</td>
<td> TCM 310_0
</td>
</td>
<td> AABBCC00
<td> AABBCC00
</td>
</td>
<td>
<td></td></tr>
</td></tr>
<tr>
<tr>
<td> 1
<td> 1
Zeile 119: Zeile 111:
<td> ...
<td> ...
</td>
</td>
<td>
<td></td>
</td>
<td></td>
<td>
<td></td>
</td>
<td></td></tr>
<td>
</td>
<td>
</td></tr>
<tr>
<tr>
<td> 128
<td> 128
</td>
</td>
<td>
<td></td>
</td>
<td></td>
<td>
<td></td>
</td>
<td></td></tr></table>
<td>
 
</td>
== Definition von TCM / Gateway ==
<td>
FHEM kann mit einem Funkgateway, das auf einem TCM-Modul basiert, EnOcean-Funk empfangen und senden.
</td></tr></table>
Bisher gibt es zwei Transceiver Chips von EnOcean:
* TCM120 (ausgelaufen)
** für den USB-Port: [https://embedded-intelligence.de/de/products/hardware/bsc-bor.html BSC BOR]
* TCM310
** 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]
** als Aufsteckmodul für Raspberry Pi: [http://www.enocean.com/de/enocean-pi/ EnOceanPi]<BR>
::* Beim Raspberry Pi 3 muss der GPIO-Port auf den Hardware-UART0 umgestellt werden: [[Raspberry Pi 3: GPIO-Port Module und Bluetooth]]
::* 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}}
 
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.
 
Das TCM-basierte Gateway wird unter Linux nach Anschluss an den FHEM-Rechner beim FHEM-Start oder ohne FHEM-Neustart durch Aufruf des Befehls <code>usb scan</code> 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 <code>usb scan</code> notwendig.
 
Bei RS485-basierte Gateways (bspw. FGW14) muss in der [[Konfiguration]] zusätzlich manuell das Attribut <code>comType</code> auf <code>RS485</code> gesetzt werden.
 
Beispiele der automatisch erzeugten define-Zeile in der Konfiguration:
 
EnOceanPi an Raspberry Pi:
define TCM_ESP3_0 TCM ESP3 /dev/ttyAMA0@57600
 
TCM310/USB300 an Fritzbox oder Raspberry Pi:
define TCM_ESP3_0 TCM ESP3 /dev/ttyUSB0@57600
 
Hier folgt ein Beispiel der define-Zeile in der Konfiguration für kabelgebundene Anbindung mit FGW14 über serielle Schnittstelle
define TCM_ESP2_0 TCM ESP2 /dev/ttyS3@57600
attr TCM_ESP2_0 comType RS485                    <---- Manuell zu setzen
 
Nach erfolgreicher Definition ist das Gateway im Raum "Everything" in der Gruppe "TCM" zu finden. Wenn neben dem Gatewaynamen "initialized" oder "opened" angezeigt wird, ist FHEM in der Lage mit den EnOcean-Geräten zu kommunizieren.
 
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:
* FHEM stehen 127 fortlaufende eigene SenderID zur Verfügung
* beginnend mit der baseID des TCM + 1
 
Die baseID des TCM erhält man durch Eingabe von
get TCM_ESP3_0 baseID
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.
 
Das Webfrontend zeigt dann beispielsweise:
BaseID=AABBCC00,RemainingWriteCycles=0A
Die niedrigste SenderID in diesem Beispiel ist AABBCC0'''1''' (BaseID=AABBCC00 +1 HEX!!!), die nächste AABBCC0'''2''' usw.
 
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.


== Definition von Geräten ==
=== Definition / Anlernvorgang (Teach-In) ===
=== Definition / Anlernvorgang (Teach-In) ===
Damit Fhem und EnOcean-Geräte miteinander kommunizieren können, müssen sie untereinander bekannt gemacht werden. Dies geschieht durch Definition des Gerätes in Fhem und den Anlernvorgang. Dazu muss sich Fhem im [http://fhem.de/commandref.html#TCM_learningMode 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 '''vorher''' am Gerät einzuschalten (u.a. Eltako).  
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 '''vorher''' am Gerät einzuschalten (u.a. Eltako).  


Fhem entnimmt die Angaben, wie ein Funk-Telegramm für ein bestimmtes Gerät aufgebaut ist, aus den Attributen <code>subType</code>, <code>manufID</code> und/oder <code>model</code> der Definition des Gerätes:
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:
*<code>subtype</code>: vom Gerät genutztes EEP-Profil (steht in der Bedienungsanleitung des Gerätes)
*<code>subtype</code>: 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. "roomSensorControl.01" bedienen mehrere ähnliche EEP gleichzeitig.
*<code>manufID</code>: Hersteller des Gerätes
*<code>manufID</code>: 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)
*<code>model</code>: Modell des Gerätes
*<code>model</code>: Modell des Gerätes
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-Profilen finden sich oft in der [http://fhem.de/commandref.html#EnOcean commandref] 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.
*<code>eep</code>: EEP des Gerätes. Unter anderem werden die Informationen zur automatischen Anlage von [[FileLog]], [[SVG]] und des Attributs <code>webCmd</code> anhand des EEPs ermittelt.
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.
   
   
Die Definition und der Anlernvorgang unterscheidet sich je nach Gerätetyp:
Die Definition und der Anlernvorgang unterscheiden sich je nach Gerätetyp:
* Sensoren:
* Sensoren:
** Schalter (EEP RPS): werden automatisch beim ersten empfangenen Funktelegramm in Fhem mit den notwendigen Attributen angelegt.
** [[#Schalter/Switch|Schalter (EEP RPS)]]: werden automatisch beim ersten empfangenen Funktelegramm in FHEM mit den notwendigen Attributen angelegt.
** Kontakte (EEP 1BS): werden automatisch beim ersten empfangenen Funktelegramm in Fhem mit den notwendigen Attributen angelegt.
** [[#Kontakte|Kontakte (EEP 1BS)]]: werden automatisch beim ersten empfangenen Funktelegramm in FHEM mit den notwendigen Attributen angelegt.
** 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.
** [[#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.
* 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.
* 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
** [[#uni- versus bidirektional|unidirektionalen]] Aktoren und
*** [[#Teach-In_als_Tasteremulation|Teach-In als Tasteremulation]]
*** [[#Teach-In_als_Gateway.2FPC-Steuerung|Teach-In als Gateway/PC-Steuerung]]
** [[#uni- versus bidirektional|bidirektionalen]] Aktoren
*** [[#Teach-In_als_Tasteremulation_2|Teach-In als Tasteremulation]]
*** [[#Unidirektionales_4BS-Teach-In|Unidirektionales 4BS-Teach-In]]
*** [[#Bidirektionales_4BS-Teach-In|Bidirektionales 4BS-Teach-In]]
*** [[#UTE-Teach-In|UTE-Teach-In]]


In den nachfolgenden Gliederungspunkten wird beispielhaft für ein Gerät aus den obigen Gerätetypen die Einbindung in Fhem erläutert.
In den nachfolgenden Gliederungspunkten wird beispielhaft für je ein Gerät aus den obigen Gerätetypen die Einbindung in FHEM erläutert.


Grundlegend gilt immer:
Grundlegend gilt immer:
Fhem legt sendende, noch nicht definierte EnOcean Geräte selbst an, wenn
FHEM legt sendende, noch nicht definierte EnOcean Geräte selbst an, wenn
* in fhem.cfg autocreate aktiviert ist:
* in Konfiguration autocreate aktiviert ist:
** <code>[http://fhem.de/commandref_DE.html#autocreate define autocreate autocreate]</code>
** <code>{{Link2CmdRef|Lang=de|Anker=autocreate|Label=define autocreate autocreate}}</code>
* Fhem/das TCM-Modul sich im <code>learningMode</code> befindet und
* FHEM/das TCM-Modul sich im <code>learningMode</code> befindet und
* Fhem eine Nachricht vom noch nicht definierten EnOcean Gerät empfängt
* FHEM eine Nachricht vom noch nicht definierten EnOcean Gerät empfängt
Im Webfrontend werden neue Geräte im Raum EnOcean angezeigt.
Im Webfrontend werden automatisch angelegte neue Geräte im Raum "EnOcean" angezeigt.


=== Sensoren ===
=== Sensoren ===
Zeile 169: Zeile 208:


==== Schalter/Switch ====
==== Schalter/Switch ====
PTM 210 - Schaltermodul [http://www.enocean.com/de/enocean_module/ptm-210-data-sheet-pdf/ Datenblatt]
[[EnOcean-PTM-210-Taster|PTM 210 - Schaltermodul]] ([http://www.enocean.com/de/enocean_module/ptm-210-data-sheet-pdf/ Datenblatt])


EEP: F6-02-xx
EEP: F6-02-xx


Fhem in den learingMode versetzen, dazu im Befehl-Eingabefeld eingeben:
FHEM in den learningMode (<code>set <nowiki><IODev> teach <time/s></nowiki></code>) versetzen, dazu im Befehl-Eingabefeld eingeben:
  set TCM310_0 teach 600
  set TCM_ESP3_0 teach 600


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 fhem.cfg hinzu:
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:
* exemplarischer Auszug aus fhem.cfg
* exemplarischer Auszug aus Konfiguration
  define EnO_switch_FFC54500 EnOcean FFC54500                    <-- "FFC54500" ist die 8-stellige Hex-SenderID des Tasters
  define EnO_switch_FFC54500 EnOcean FFC54500                    <-- "FFC54500" ist die 8-stellige Hex-SenderID des Tasters
  attr EnO_switch_FFC54500 IODev TCM310_0
  attr EnO_switch_FFC54500 IODev TCM_ESP3_0
  attr EnO_switch_FFC54500 room EnOcean
  attr EnO_switch_FFC54500 room EnOcean
  attr EnO_switch_FFC54500 subType switch                        <-- handelt sich um einen Schalter
  attr EnO_switch_FFC54500 subType switch                        <-- handelt sich um einen Schalter
Zeile 188: Zeile 227:
Ein Schalter (hier: FT55) hat vier Taster:
Ein Schalter (hier: FT55) hat vier Taster:
{|
{|
| '''Taster''' || '''in Fhem'''
| '''Taster''' || '''in FHEM'''
|-
|-
| links oben || A0
| links oben || A0
Zeile 207: Zeile 246:
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.
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.


Fhem kann sich '''nicht''' als einer der vorhandenen (automatisch angelegten) physischen Sensoren ausgeben (um z.B. das Licht zu schalten) sondern verwendet eigene SenderID/DestinationID's - [[#Schalter - physisch und virtuell in Fhem|siehe unten]]. Diese Fhem-eigenen SenderIDs können mit Hilfe eines virtuellen Fhem-Schalters in EnOcean Aktoren eingelernt werden, damit die Aktoren auf Fhem reagieren [[#Aktoren|siehe unten]].
FHEM kann sich '''nicht''' 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]].


==== Kontakte ====
==== Kontakte ====
STM 320 Batterieloses Magnetkontakt-Funkmodul ([http://www.enocean.com/de/enocean_module/stm-320-data-sheet-pdf/ Datenblatt])
[[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])


EEP: D5-00-01
EEP: D5-00-01


Fhem in den learingMode versetzen, dazu im Befehl-Eingabefeld eingeben:
FHEM in den learningMode versetzen, dazu im Befehl-Eingabefeld eingeben:
  set TCM310_0 teach 600
  set TCM_ESP3_0 teach 600


Anlerntelegramm laut Anleitung verschicken oder Magnetkontakt öffnen und schließen.
Anlerntelegramm laut Anleitung verschicken oder Magnetkontakt öffnen und schließen.


Der Kontakt wird automatisch in Fhem definiert und ist angelernt.
Der Kontakt wird automatisch in FHEM definiert und ist angelernt.


* exemplarischer Auszug aus fhem.cfg
* exemplarischer Auszug aus Konfiguration
  define EnO_contact_0000FF53 EnOcean 0000FF53
  define EnO_contact_0000FF53 EnOcean 0000FF53
  attr EnO_contact_0000FF53 IODev TCM310_0
  attr EnO_contact_0000FF53 IODev TCM_ESP3_0
  attr EnO_contact_0000FF53 room EnOcean
  attr EnO_contact_0000FF53 room EnOcean
  attr EnO_contact_0000FF53 subType contact
  attr EnO_contact_0000FF53 subType contact
Zeile 232: Zeile 271:
==== Sonstige Sensoren ====
==== Sonstige Sensoren ====
===== 4BS-Teach-In =====
===== 4BS-Teach-In =====
Fhem in den learingMode versetzen, dazu im Befehl-Eingabefeld eingeben:
FHEM in den learningMode versetzen, dazu im Befehl-Eingabefeld eingeben:
  set TCM310_0 teach 600
  set TCM_ESP3_0 teach 600
Dann Anlerntelegramm laut Bedienungsanleitung am Sensor auslösen. Der Sensor wird dann wird automatisch in Fhem definiert und ist angelernt.
Dann das Anlerntelegramm laut Bedienungsanleitung am Sensor auslösen. Der Sensor wird dann automatisch in FHEM definiert und ist angelernt.


===== Profilloses 4BS-Teach-In =====
===== Profilloses 4BS-Teach-In =====
Omnio Ratio eagle-PM101 Licht- und Anwesenheitssensor ([http://www.omnio.ch/content-en/downloads/Betriebsanleitungen/2902000_Betriebsanleitung_ea.pdf Betriebsanleitung])
Omnio Ratio eagle-PM101 Licht- und Anwesenheitssensor ([http://www.omnio.ch/content-en/downloads/Betriebsanleitungen/2902000_Betriebsanleitung_ea.pdf Betriebsanleitung])


Fhem in den learingMode versetzen, dazu im Befehl-Eingabefeld eingeben:
FHEM in den learningMode versetzen, dazu im Befehl-Eingabefeld eingeben:
  set TCM310_0 teach 600
  set TCM_ESP3_0 teach 600


Lerntelegramm vom Omnio Ratio eagle-PM101 verschicken (MÖGLICH??)
Das Anlerntelegramm vom Omnio Ratio eagle-PM101 verschicken (MÖGLICH??)


Im angelegten Fhem-Device manuell das Attribut <code>subType</code> auf <code>PM101</code> setzen.
Im angelegten FHEM-Device manuell das Attribut <code>subType</code> auf <code>PM101</code> setzen.


=== Aktoren ===
=== Aktoren ===
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 immmer als virtueller Fhem-Schalter (Tasteremulation) eingelernt werden. Einige Aktoren unterstützen mehrere Arten von Anlernvorgängen. Hier ist der mit den meisten/besten Steuerungsmöglichkeiten zu bevorzugen.
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 "Notlösung" 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.
   
   
'''Aktoren Beispiele:'''
'''Aktoren Beispiele:'''


==== unidirektionale Aktoren ====
==== unidirektionale Aktoren ====
Eine SenderID des TCM-Gateways muss bei unidirektionalen Aktoren immer im <code>define</code> des Devices stehen.
Bei unidirektionalen Aktoren steht eine SenderID des TCM-Gateways immer im <code>define</code> des FHEM-Devices. Mit dieser SenderID steuert FHEM den Aktor. Diese SenderID muss dazu im Aktor eingelernt werden.
 
{{Hinweis|'''MERKE:''' Eine SenderID des TCM-Gateways muss bei unidirektionalen Aktoren immer im <code>define</code> des Devices stehen.<br/>
'''MERKE:''' 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]])}}
===== Teach-In als Tasteremulation =====
===== Teach-In als Tasteremulation =====
PEHA 451 FU-EP o.T. (Schaltaktor unidirektional)  
PEHA 451 FU-EP o.T. (Schaltaktor unidirektional)  


Fhem in den learingMode versetzen, dazu im Befehl-Eingabefeld eingeben:
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:
  set TCM310_0 teach 600
  define eg_fl_Licht EnOcean AABBCC01


Eine frei SenderID des TCM-basierten Gateways heraussuchen und diese als EnOcean-Gerät in Fhem definieren, dazu im Befehl-Eingabefeld eingeben:
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:
  define eg_fl_Licht EnOcean AABBCC01
  define eg_fl_Licht EnOcean getNextID


Hierdurch wird in Fhem ein EnOcean-Gerät definiert, das standardmäßig das Attribut auf <code>subType</code> auf <code>switch</code> gesetzt hat. Fhem emuliert mit diesem EnOcean-Gerät einen EnOcean-Schalter (virtueller Fhem-Schalter).
Anschließend das Attribut <code>subType</code> beim erzeugten Device auf <code>switch</code> 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 "oben" '''oder''' "unten" gedrückt sein können. FHEM emuliert mit diesem EnOcean-Gerät einen EnOcean-Schalter (darum auch "virtueller FHEM-Schalter"). Der Taster 0 des Kanal A wird "gedrückt" mit <code>set eg_fl_Licht A0</code>.


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:
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:
  set eg_fl_Licht B0
  set eg_fl_Licht B0
Wenn der Aktor den erfolgreichen Anlernvorgang signalisiert, den Anlermodos am Aktor ausschalten.
Wenn der Aktor den erfolgreichen Anlernvorgang signalisiert, den Anlernmodus am Aktor ausschalten.


* exemplarischer Auszug aus fhem.cfg
* exemplarischer Auszug aus Konfiguration
  define eg_fl_Licht EnOcean AABBCC01        <--- AABBCC01 ist eine der 127 SenderID's des TCM mit der Fhem sendet  
  define eg_fl_Licht EnOcean AABBCC01        <--- AABBCC01 ist eine der 127 SenderID's des TCM, mit der FHEM sendet  
  attr eg_fl_Licht room EG_Flur
  attr eg_fl_Licht room EG_Flur
  attr eg_fl_Licht eventMap BI:off B0:on
  attr eg_fl_Licht eventMap BI:off B0:on
Zeile 277: Zeile 317:
  attr FileLog_eg_fl_Licht logtype text
  attr FileLog_eg_fl_Licht logtype text


Der Status des Devices im Webfrontend stimmt bei unidirektionalen Aktoren nur, wenn die Steuerung des Aktor ausschließlich über Fhem erfolgt. Wird der Aktor sowohl über einen physischen Schalter als auch über Fhem gesteuert, so müssen die Stati 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]])
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]]).


===== Teach-In als Gateway/PC-Steuerung =====
===== Teach-In als Gateway/PC-Steuerung =====
"ältere" Eltako FSB61 (Schaltaktor unidirektional)  
"ältere" Eltako FSB61 (Produktionszeitraum KW 43/10 - KW 40/11 [http://www.eltako.com/fileadmin/downloads/de/_bedienung/FSB61NP_30200420-3_dtsch.pdf Bedienungsanleitung])
 
EEP: A5-3F-7F
 
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:
define eg_fl_Rollo EnOcean AABBCC02
 
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:
define eg_fl_Rollo EnOcean getNextID
 
Beim erzeugten FHEM-Device muss das Attribut <code>subType</code> auf <code>manufProfile</code> gesetzt werden. Die Attribute <code>manufID</code> und <code>model</code> sind auf die unten in der Konfiguration gezeigten Werte zu setzen.
 
Dieser virtuelle FHEM-Schalter wird in den Aktor als PC/Szenentaster angelernt indem im Befehl-Eingabefeld eingeben wird:
set eg_fl_Rollo teach
Wenn der Aktor den erfolgreichen Anlernvorgang signalisiert, den Anlernmodus am Aktor ausschalten.


* exemplarischer Auszug aus Konfiguration
define eg_fl_Rollo EnOcean AABBCC02        <--- AABBCC02 ist eine der 127 SenderID's des TCM, mit der FHEM sendet
attr eg_fl_Rollo room EG_Flur
attr eg_fl_Rollo subType manufProfile
attr eg_fl_Rollo manufID 00D
attr eg_fl_Rollo model Eltako_FSB61


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]]).


==== bidirektionale Aktoren ====
==== bidirektionale Aktoren ====
Eine SenderID des TCM-Gateways muss bei bidirektionalen Aktoren immer im Attribut <code>subDef</code> des Devices stehen.
Bei bidirektionalen Aktoren steht die SenderID des Aktors im <code>define</code> 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 <code>subDef</code>. Diese SenderID muss dazu im Aktor eingelernt werden.
{{Hinweis|'''MERKE:''' Eine SenderID des TCM-Gateways muss bei bidirektionalen Aktoren immer im Attribut <code>subDef</code> des Devices stehen.<br/>
'''MERKE:''' Bei bidirektionalen Aktoren stimmt nach korrekter Einbindung in FHEM der Status des FHEM-Devices im Webfrontend immer mit dem realen Aktorzustand überein.}}
===== Teach-In als Tasteremulation =====
[[EnOcean-FSR61VA-10A-Stromsto%C3%9F-Schaltrelais_mit_Strommessung|10A-Stromstoß-Schaltrelais mit Strommessung FSR61VA]]<br />
Schaltrelais (bidirektional)
 
FHEM in den learningMode versetzen, dazu im Befehl-Eingabefeld eingeben:
set TCM_ESP3_0 teach 600
 
Die [[#SenderID|SenderID]] des Aktors heraussuchen und diese als EnOcean-Gerät in FHEM definieren, dazu im Befehl-Eingabefeld eingeben:
define EnO_switch_FSR61VA EnOcean FFAABBC0
 
Eine freie SenderID des TCM-basierten Gateways heraussuchen und diese im Attribut <code>subDef</code> des angelegten Devices hinterlegen.
 
Anschließend die Attribute <code>subType</code> und <code>switchMode</code> wie im unten wiedergegebenen exemplarischen Auszug aus der Konfiguration anlegen.
 
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:
# Unterer Drehschalter je nach Produktionswoche des FSR61VA (aufgedruckt):
## bis KW 2/13: "ca. Mitte" (Taster Ein/Aus einlernen)
## ab KW 3/13 bis KW 10/14: "60" (Taster Ein/Aus einlernen)
## ab KW 11/14: "40" (Richtungstaster einlernen)
# Oberer Funktions-Drehschalter: "LRN" (LED blinkt)
# FHEM Eingabefeld: „set EnO_switch_FSR61VA B0“, &lt;Enter&gt; (LED erlischt)
# Oberer Funktions-Drehschalter: Eine der ESV-Einstellungen
# Unterer Funktions-Drehschalter: auf "oo" einstellen (unendlich)
 
* exemplarischer Auszug aus der Konfiguration
define EnO_switch_FSR61VA EnOcean FFAABBC0        --> EnO_switch_FSR61VA ist ein frei gewählter eindeutiger Name
                                                        für das FHEM-Device.
                                                        FFAABBC0 ist die erste am Boden des FSR61VA aufgedruckte SenderID.
                                                        Damit sendet das FSR61VA den Schaltzustand (B0/BI --> ein/aus)
attr EnO_switch_FSR61VA IODev TCM_ESP3_0            --> TCM_ESP3_0 ist der Name des Devices, mit dem FHEM EnOcean-Funk
                                                        sendet und empfängt.
attr EnO_switch_FSR61VA subDef FF998877            --> FF998877 ist eine der 127 SendeIDs des TCM_ESP3_0, damit sendet FHEM an den FSR61VA
attr EnO_switch_FSR61VA subType switch            --> es handelt sich um einen EnOcean Schalter (der kann A0, AI, B0, BI,...)
attr EnO_switch_FSR61VA switchMode pushbutton      --> als "pushbutton" sendet FHEM bei einem
                                                        "set EnO_switch_FSR61VA B0" nach dem Kommando (B0) noch ein "release".
                                                        Das brauchts, wenn der FSR61VA als ES oder ESV betrieben wird.
                                                        Sonst wird jedes "set"-Kommando vom FSR61VA als 
                                                        "länger als eine Sekunde gedrückt" interpretiert -> "Tasterdauerlicht".


===== Unidirektionales 4BS-Teach-In =====
===== Unidirektionales 4BS-Teach-In =====
RS485-Bus-Aktor 4-Kanal-Stromstoß-Schaltrelais FSR14
[[EnOcean-FSR14-4x-RS485-Bus-Schaltaktor-4-Kanal-Stromsto%C3%9F-Schaltrelais|RS485-Bus-Aktor 4-Kanal-Stromstoß-Schaltrelais FSR14]]<br />
Schaltrelais (bidirektional)
Schaltrelais (bidirektional)


Fhem in den learingMode versetzen, dazu im Befehl-Eingabefeld eingeben:
FHEM in den learningMode versetzen, dazu im Befehl-Eingabefeld eingeben:
  set TCM310_0 teach 600
  set TCM_ESP3_0 teach 600


Die SenderID des Aktors heraussuchen und diese als EnOcean-Gerät in Fhem definieren, dazu im Befehl-Eingabefeld eingeben:
Die [[#SenderID|SenderID]] des Aktors heraussuchen und diese als EnOcean-Gerät in FHEM definieren, dazu im Befehl-Eingabefeld eingeben:
  define EnOcean_switch_FEFF4AF8 EnOcean FEFF4AF8
  define EnOcean_switch_FEFF4AF8 EnOcean FEFF4AF8


Eine frei SenderID des TCM-basierten Gateways heraussuchen und diese im Attribut <code>subDef</code> des angelegten Device hinterlegen.
{{Randnotiz|RNText=Ab {{Link2Forum|Topic=31450|Message=239937|LinkText=Updatestand 04.01.2015}} ist eine manuelle Vergabe einer freien SenderID per <code>subDef</code> nicht mehr notwendig. Beim ersten Senden des "teach"-Befehls an den Aktor wird eine freie SenderID vergeben, sofern keine gültige SenderID eingetragen war.}}
Eine freie SenderID des TCM-basierten Gateways heraussuchen und diese im Attribut <code>subDef</code> des angelegten Devices hinterlegen.


Anschließend die Attribute <code>subType</code> und <code>gwCmd</code> wie im unten wiedergegebenen exemplarischen Auszug aus der fhem.cfg anlegen.
Anschließend die Attribute <code>subType</code> und <code>gwCmd</code> wie im unten wiedergegebenen exemplarischen Auszug aus der Konfiguration anlegen.


Jetzt den Aktor in den Lernmodus versetzen und dann von Fhem das Lerntelegramm verschicken:
Jetzt den Aktor in den Lernmodus versetzen und dann von FHEM das Lerntelegramm verschicken:
  set EnOcean_switch_FEFF4AF8 teach
  set EnOcean_switch_FEFF4AF8 teach
Lernmodus am Aktor ausschalten
Lernmodus am Aktor ausschalten


* exemplarischer Auszug aus fhem.cfg
* exemplarischer Auszug aus Konfiguration
  define EnOcean_switch_FEFF4AF8 EnOcean FEFF4AF8 <- SenderID eines FSR14-Kanals (Aktor)
  define EnOcean_switch_FEFF4AF8 EnOcean FEFF4AF8   <--- FEFF4AF8 ist hier die SenderID eines FSR14-Kanals (Aktor)
  attr EnOcean_switch_FEFF4AF8 subDef FF834381     <--- FF834381 ist eine der 127 SenderID's des TCM mit der Fhem sendet [[#Taster - physisch und in Fhem|(siehe unten)]]
  attr EnOcean_switch_FEFF4AF8 subDef AABBCC03     <--- AABBCC03 ist eine der 127 SenderID's des TCM, mit der FHEM sendet [[#Taster - physisch und in FHEM|(siehe unten)]]
  attr EnOcean_switch_FEFF4AF8 room EnOcean        # Der Raum kann angepasst werden
  attr EnOcean_switch_FEFF4AF8 room EnOcean        # Der Raum kann angepasst werden
  attr EnOcean_switch_FEFF4AF8 gwCmd switching    # Wichtig für FSR14
  attr EnOcean_switch_FEFF4AF8 gwCmd switching    # Wichtig für FSR14
Zeile 314: Zeile 416:
  attr FileLog_EnOcean_switch_FEFF4AF8 logtype text
  attr FileLog_EnOcean_switch_FEFF4AF8 logtype text


(entnommen Forenbeitrag [http://forum.fhem.de/index.php/topic,25068.msg181966.html#msg181966], der weitere Erläuterungen enthält.)
===== Bidirektionales 4BS-Teach-In =====
[[EnOcean-MD15-Kleinstellantrieb|Kleinstellantrieb MD15-FTL-xx]]<br />
Funkgesteuerter, batteriegespeister Kleinstellantrieb für Raumtemperaturregelung (bidirektional)


===== Bidirektionales 4BS-Teach-In =====
EEP: A5-20-01
Kleinstellantrieb MD15-FTL-xx
Funkgesteuerter, batteriegespeister Kleinstellantrieb für Raumtemperaturregelung. (bidirektional)


4BS-Bidirektionales-Teach-In:
4BS-Bidirektionales-Teach-In:


#Aktor möglicht komplett zurücksetzen, sofern nicht mehr im Original-Auslieferzustand
#Aktor möglichst komplett zurücksetzen, sofern nicht mehr im Original-Auslieferzustand
#falls vorhanden, alle bisherigen Fhem Devices des Aktors löschen
#Falls vorhanden, alle bisherigen FHEM-Devices des Aktors löschen und nach Speichern der geänderten Konfiguration FHEM neu starten
#Fhem in Lernmodus schalten: <code>set <IODev> teach <time/s></code>
#FHEM in Lernmodus schalten: <code>set <nowiki><IODev> teach <time/s></nowiki></code>
#Taster am MD15-FTL-xx so lange drücken, bis ein Signalton ertönt. MD15 bestätigt erfolgreichen Anlernvorgang durch Aufleuchten Status-LED und 2 Signaltöne
#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
#Aktor wird in Fhem automatisch mit allen notwendigen Parametern angelegt.
#Aktor wird in FHEM automatisch mit allen notwendigen Parametern angelegt.


* exemplarischer Auszug aus fhem.cfg
* exemplarischer Auszug aus Konfiguration
  define EnO_sensor_01000EFA EnOcean 01000EFA
  define EnO_sensor_01000EFA EnOcean 01000EFA
  attr EnO_sensor_01000EFA IODev TCM310_0
  attr EnO_sensor_01000EFA IODev TCM_ESP3_0
  attr EnO_sensor_01000EFA comMode biDir
  attr EnO_sensor_01000EFA comMode biDir
  attr EnO_sensor_01000EFA destinationID unicast
  attr EnO_sensor_01000EFA destinationID unicast
  attr EnO_sensor_01000EFA manufID 00A
  attr EnO_sensor_01000EFA manufID 00A
  attr EnO_sensor_01000EFA room EnOcean
  attr EnO_sensor_01000EFA room EnOcean
  attr EnO_sensor_01000EFA subDef 00000000
  attr EnO_sensor_01000EFA subDef AABBCC04
  attr EnO_sensor_01000EFA subType hvac.01
  attr EnO_sensor_01000EFA subType hvac.01
  define FileLog_EnO_sensor_01000EFA FileLog ./log/EnO_sensor_01000EFA-%Y.log EnO_sensor_01000EFA
  define FileLog_EnO_sensor_01000EFA FileLog ./log/EnO_sensor_01000EFA-%Y.log EnO_sensor_01000EFA
Zeile 342: Zeile 444:


===== UTE-Teach-In =====
===== UTE-Teach-In =====
Einbau-Aktor 452 FU-EBIM o.T.
[[EnOcean-D-452-FU-EBIM-Aktor-2fach|Einbau-Aktor 452 FU-EBIM o.T.]]<br />
2-Kanal-Multifunktionsaktor (bidirektional) mit Energiemessfunktion
2-Kanal-Multifunktionsaktor (bidirektional) mit Energiemessfunktion
EEP: D2-01-08


UTE-Teach-In:
UTE-Teach-In:


#Aktor möglicht komplett zurücksetzen, sofern nicht mehr im Original-Auslieferzustand
#Aktor möglichst komplett zurücksetzen, sofern nicht mehr im Original-Auslieferzustand
#falls vorhanden, alle bisherigen Fhem Devices des Aktors löschen
#Falls vorhanden, alle bisherigen FHEM Devices des Aktors löschen und nach Speichern der geänderten Konfiguration FHEM neu starten
#Fhem in Lernmodus schalten: <code>set <IODev> teach <time/s></code>
#FHEM in Lernmodus schalten: <code>set <nowiki><IODev> teach <time/s></nowiki></code>
#Aktor-Kanal 0 oder 1 in Lernmodus versetzen (immer nur einen Kanal)
#Aktor-Kanal 0 oder 1 in Lernmodus versetzen (immer nur einen Kanal)
#Aktor-Kanal 0 oder 1 wird in Fhem automatisch mit allen notwendigen Parametern angelegt.
#Aktor-Kanal 0 oder 1 wird in FHEM automatisch mit allen notwendigen Parametern angelegt.
#Anlernen für 2. Kanal wie nach 3. bis 5. beschrieben wiederholen
#Das Anlernen für den zweiten Kanal wie nach 3. bis 5. beschrieben wiederholen


Die Kanäle können jetzt geschaltet werden mit:
Die Kanäle können jetzt geschaltet werden mit:


*Fhem Device für Kanal 0: set <Name_0> on|off 0
*FHEM Device für Kanal 0: set <Name_0> on|off 0
*Fhem Device für Kanal 1: set <Name_1> on|off 1
*FHEM Device für Kanal 1: set <Name_1> on|off 1


Falls gewünscht, kann der Kanal mit dem Attribut attr <Name_0|1> defaultChannel 0|1 voreingestellt werden. Dann entfällt die Angabe des Kanals im set-Befehl.
Falls gewünscht, kann der Kanal mit dem Attribut attr <Name_0|1> defaultChannel 0|1 voreingestellt werden. Dann entfällt die Angabe des Kanals im set-Befehl.


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 Absenderadressen (vgl. Etikett in Original-Verpackung) gesendet.
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.
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.  
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.  
 


(entnommen [http://forum.fhem.de/index.php/topic,22527.msg161008.html#msg161008 Forenbeitrag], der weitere Erläuterungen enthält.)
== Besonderheiten für die Anzeige im WebFrontend ==


=== Aufteilung der Kanäle in unabhängige Devices ===
===== Mehrkanalige bidirektionale Aktoren =====
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.


=== Schalter - physisch und virtuell in Fhem ===
Zunächst wird der Aktor standardmäßig in FHEM definiert/angelernt und die Funktion geprüft (hier am Beispiel eines Aktor mit dem Namen "Aktor"). Anschließend wird pro Kanal ein readingProxy-Device mit Bezug auf das Reading channelA, channelB, ... angelegt:


Fhem kann sich '''nicht''' als einer der vorhandenen (automatisch angelegten) Sensoren ausgeben (um z.B. das Licht zu schalten) sondern verwendet eigene SenderID/DestinationID's.
#Kanal A zur Steuerung mit on und off
* Fhem stehen 127 fortlaufende eigene SenderID/DestinationID zur Verfügung
define AktorKanalA readingsProxy Aktor:channelA
* beginnend mit der baseID des TCM + 1
attr AktorKanalA setFn {($CMD eq "on")?"A0":"AI";;}
attr AktorKanalA setList off on
attr AktorKanalA valueFn {($VALUE eq "A0")?"on":"off"}
attr AktorKanalA webCmd off:on


Die baseID des TCM erhält man mit dem Befehl
#Kanal B zur Steuerung mit on und off
  get TCM310_0 baseID
  define AktorKanalB readingsProxy Aktor:channelB
im Eingabefenster (gefolgt vom drücken der "Eingabe"-Taste ;-) )
attr AktorKanalB setFn {($CMD eq "on")?"B0":"BI";;}
Das Webfrontend zeigt dann:
  attr AktorKanalB setList off on
  BaseID=AABBCC00,RemainingWriteCycles=0A
attr AktorKanalB valueFn {($VALUE eq "B0")?"on":"off"}
Die niedrigste SenderID/DestinationID in diesem Beispiel ist AABBCC0'''1''' (BaseID=AABBCC00 +1 HEX!!!)
attr AktorKanalB webCmd off:on


==== Definition eines virtuellen Fhem Schalters zum Steuern von EnOcean Aktoren: ====
Jeder Kanal wird jetzt separat im WebFrontend durch das readingsProxy-Device abgebildet (Statusanzeige) und kann mit diesem gesteuert werden.
define fhemSchalter EnOcean AABBCC01              <--- AABBCC01 ist eine der 127 SenderID's des TCM mit der Fhem sendet
attr fhemSchalter subType switch


Durch diese Definition wird ein 8-fach Taster (4 Kanälen (A,B,C,D) zu je 2 Tasten (0,I)) erzeugt (all diese 8 Taster senden mit der gleichen SenderID des TCM). Entspricht einem Gerät mit 4 Schaltwippen die jeweils "oben" '''oder''' "unten" gedrückt sein können.
Ein ausführlicheres readingsProxy-Beispiel für einen mehrkanaligen Jalousieaktor mit Visualisierung über Slider enthält dieser {{Link2Forum|Topic=59418|Message=512758}}.
[[Datei:EnO_Jalousie_OmnioAktor_REGJ12-04.png|400px|thumb|center|readingsProxy-Beispiel für einen mehrkanaligen Jalousieaktor mit Visualisierung über Slider]]


Der Taster 0 des Kanal A wird "gedrückt" mit
===== Virtuelle Schalter für unidirektionale Aktoren =====
set fhemSchalter A0
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.
{{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. }}
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:


==== Aufteilung der Kanäle in unabhängige Devices ====
Um die 4 Kanäle jeweils einzeln als Schalter (einzelne Schaltwippe) im WebFrontend abzubilden dient folgende Konstruktion:
siehe auch [[ReadingsProxy]]
  #Kanal A zur Steuerung mit on und off
  #Kanal A zur Steuerung mit on und off
  define fhemSchalterKanalA readingsProxy fhemSchalter:state
  define fhemSchalterKanalA readingsProxy fhemSchalter:state
  attr fhemSchalterKanalA setFn {($CMD eq "on")?"AI":"A0";;}
  attr fhemSchalterKanalA setFn {($CMD eq "on")?"A0":"AI";;}
  attr fhemSchalterKanalA setList on off
  attr fhemSchalterKanalA setList on off
  attr fhemSchalterKanalA valueFn {$LASTCMD}
  attr fhemSchalterKanalA valueFn {$LASTCMD}
Zeile 401: Zeile 510:
  #Kanal B zur Steuerung mit on und off
  #Kanal B zur Steuerung mit on und off
  define fhemSchalterKanalB readingsProxy fhemSchalter:state
  define fhemSchalterKanalB readingsProxy fhemSchalter:state
  attr fhemSchalterKanalB setFn {($CMD eq "on")?"BI":"B0";;}
  attr fhemSchalterKanalB setFn {($CMD eq "on")?"B0":"BI";;}
  attr fhemSchalterKanalB setList on off
  attr fhemSchalterKanalB setList on off
  attr fhemSchalterKanalB valueFn {$LASTCMD}
  attr fhemSchalterKanalB valueFn {$LASTCMD}
Zeile 408: Zeile 517:
  #Kanal C zur Steuerung mit on und off
  #Kanal C zur Steuerung mit on und off
  define fhemSchalterKanalC readingsProxy fhemSchalter:state
  define fhemSchalterKanalC readingsProxy fhemSchalter:state
  attr fhemSchalterKanalC setFn {($CMD eq "on")?"CI":"C0";;}
  attr fhemSchalterKanalC setFn {($CMD eq "on")?"C0":"CI";;}
  attr fhemSchalterKanalC setList on off
  attr fhemSchalterKanalC setList on off
  attr fhemSchalterKanalC valueFn {$LASTCMD}
  attr fhemSchalterKanalC valueFn {$LASTCMD}
Zeile 415: Zeile 524:
  #Kanal D zur Steuerung mit on und off
  #Kanal D zur Steuerung mit on und off
  define fhemSchalterKanalD readingsProxy fhemSchalter:state
  define fhemSchalterKanalD readingsProxy fhemSchalter:state
  attr fhemSchalteKanalD setFn {($CMD eq "on")?"DI":"D0";;}
  attr fhemSchalteKanalD setFn {($CMD eq "on")?"D0":"DI";;}
  attr fhemSchalterKanalD setList on off
  attr fhemSchalterKanalD setList on off
  attr fhemSchalterKanalD valueFn {$LASTCMD}
  attr fhemSchalterKanalD valueFn {$LASTCMD}
  attr fhemSchalterKanalD webCmd on:off
  attr fhemSchalterKanalD webCmd on:off


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 Fhem devices (sendet mit einer der 127 eigenen SenderIDs) bedient werden.
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.


==== Physischer EnOcean- und virtueller Fhem-Schalter zu einem Device zusammenfassen ====
=== Physischer EnOcean- und virtueller FHEM-Schalter zu einem Device zusammenfassen ===
Um im Webfrontend die Aktionen beider Schalter in einem Element zusammengefasst und damit den realen Zustand bei '''unidirektionalen''' Aktoren zu sehen, dient folgendes Konstrukt mit einer <code>structure</code>:
Um im Webfrontend die Aktionen beider Schalter in einem Element zusammengefasst und damit den realen Zustand bei '''unidirektionalen''' Aktoren zu sehen, kann man eine <code>structure</code> nutzen:
<br />
(Bei bidirektionalen Aktoren ist dies aufgrund der Statusrückmeldungen nicht notwendig. Achtung: Teilweise müssen Statusrückmeldungen/Bestätigungstelegramme erst am Aktor eingeschaltet werden)
(Bei bidirektionalen Aktoren ist dies aufgrund der Statusrückmeldungen nicht notwendig. Achtung: Teilweise müssen Statusrückmeldungen/Bestätigungstelegramme erst am Aktor eingeschaltet werden)


  #Definition des Fhem Schalters
  #Definition des virtuellen FHEM-Schalters
  define fhemSchalter EnOcean AABBCC01              <--- AABBCC01 ist eine der 127 SenderID's des TCM mit der Fhem sendet
  define fhemSchalter EnOcean AABBCC01              <--- AABBCC01 ist eine der 127 SenderID's des TCM, mit der FHEM sendet
  attr fhemSchalter eventMap BI:off B0:on
  attr fhemSchalter eventMap BI:off B0:on
  attr fhemSchalter icon icoBELEUCHTUNG.png
  attr fhemSchalter icon icoBELEUCHTUNG.png
Zeile 439: Zeile 549:
  attr EnO_switch_0021E4BB dummy
  attr EnO_switch_0021E4BB dummy
   
   
  #fhemSchalter ist der Fhem Schalter
  #fhemSchalter ist der Name des virtuellen FHEM-Schalters
  #EnO_switch_0021E4BB ist der (z.B. per autocreate erstellte) Fhem-Taster
  #EnO_switch_0021E4BB ist der (z.B. per autocreate erstellte) FHEM-Taster
  define Gruppe_test_notify structure room fhemSchalter EnO_switch_0021E4BB
  define Gruppe_test_notify structure room fhemSchalter EnO_switch_0021E4BB
  attr Gruppe_test_notify eventMap BI:off B0:on
  attr Gruppe_test_notify eventMap BI:off B0:on
Zeile 446: Zeile 556:
  attr Gruppe_test_notify clientstate_behavior last
  attr Gruppe_test_notify clientstate_behavior last


Alternativ kann man für diesen Zweck auch ein <code>notify</code> in Verbindung mit <code>setreading <device> state <state>)</code> nutzen:
Alternativ kann man für diesen Zweck auch ein <code>notify</code> in Verbindung mit <code> setreading <device> state <state></code> nutzen:


  define nAbgleich notify EnO_switch_0021E4BB:(on|off) setreading fhemSchalter state $EVENT
  define nAbgleich notify EnO_switch_0021E4BB:(on|off) setreading fhemSchalter state $EVENT


== FAQ ==
== FAQ ==
* Warum schaltet mein Aktor nicht, wenn ich im WebFrontend auf das Icon für den physichen Taster/Schalter klicke?
=== Warum schaltet mein Aktor nicht, wenn ich im WebFrontend auf das Icon für den physischen Taster/Schalter klicke bzw. mit <code>set <device> <command></code> ansteuere? ===
::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.
: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.
* Wie ermittelt man freie Sender-IDs des TCM-basierten Funkgateways?
 
** Aus der oben [[EnOcean_Starter_Guide#Vorbereitung|gezeigten Tabelle]] oder hilfsweise mit den nachfolgenden Befehlen
=== Welche Infos sollten Anfragen im EnOcean-Forum enthalten? ===
** Anzeige der nächsten freien Sender-ID: <pre>{EnOcean_CheckSenderID("getNextID", "<TCM-device>", "0000000")}&#13; </pre>
* Anfragen bitte nur zur aktuellsten FHEM-Version: Befehl <code>update</code> ergibt Ausgabe "nothing to do..."
** Auflistung der bereits vergebenen Sender-IDs: <pre>{EnOcean_CheckSenderID("getUsedID", "<TCM-device>", "0000000")}&#13; </pre>
* detaillierte Beschreibung des Problems
** Auflistung der noch nicht vergebenen Sender-IDs: <pre>{EnOcean_CheckSenderID("getFreeID", "<TCM-device>", "0000000")}&#13; </pre>
* beteiligte Komponenten (genaue Bezeichnung und evtl. Link auf Hersteller-Dokumentation)
* Welche Infos sollten Anfragen im EnOcean-Forum enthalten?
* list des jeweiligen devices (Ausgabe von <code>list <device></code>)
** beteiligte Komponenten (genaue Bezeichnung und evtl. Link auf Hersteller-Dokumentation)
* passender Ausschnitt aus Logfile (siehe Link im FHEM-Menü links) generiert mit gesetztem Attribut verbose 5 am TCM-Device (<code>attr <IODev> verbose 5</code>)
** Config-Auszug (fhem.cfg)
 
** list des jeweiligen devices (<code>list <device></code>)
=== Wie kann ich zur Fortentwicklung der EnOcean-Module beitragen? ===
** logs mit verbose 5 (<code>attr <device> verbose 5</code>)
* Erfolgreichen Einsatz von neuen/bisher nicht gemeldeten EnOcean-Geräten im Forum mitteilen
* Wie kann ich zu Fortentwicklung der EnOcean-Module beitragen?
* In der {{Link2CmdRef}} als [untested] markierte EEPs bei erfolgreichen Tests im Forum als getestet melden
** Wiki: Neue Geräte ins Wiki aufnehmen; Codeschnipsel und Beispiele einpflegen
* Codeschnipsel und Ideen im Forum posten
** In der Commandref als [untested] markierte EEPs bei erfolgreichen Tests im Forum als getestet melden
* Fehler und Probleme im Forum melden
** Fehler und Probleme im Forum melden
* Wiki: Neue Geräte ins Wiki aufnehmen; Codeschnipsel und Beispiele einpflegen
 
=== Wie findet man die Sender-ID eines bidirektionalen Aktors? ===
* Aufkleber auf dem Aktor oder beigelegte Information in der Aktorverpackung
* Ermittlung mit FHEM:
# Bestätigungstelegramme am Aktor aktivieren
# Funktaster am Aktor anlernen oder alternativ Taster am örtlichen Steuereingang anschließen
# FHEM in den learningMode versetzen: <code>set <nowiki><IODev> teach <time/s></nowiki></code>
# [[Event monitor|Event Monitor]] aufrufen
# Aktor mit Taster schalten
# 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.
# 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.
 
=== Wie ermittelt man freie Sender-IDs des TCM-basierten Funkgateways? ===
FHEM ermittelt eine freie SenderID automatisch, wenn die Definition folgermaßen erfolgt:
* unidirektionaler Aktor:
: <code><nowiki>define <name> EnOcean getNextID <EEP></nowiki></code>
: Im definierten Device ist "getNextID" durch eine freie SenderID des TCMs ersetzt.
* bidirektionaler Aktor:
: <code><nowiki>define <name> EnOcean <SenderId des Aktors> <EEP></nowiki></code>
: Dem definierten Device wird das Attribut <code>subDef</code> mit dem Wert <code>getNextId</code> zugewiesen: <code><nowiki>attr <name> subDef getNextID</nowiki></code>. "getNextID" ersetzt FHEM automatisch durch eine freie SenderID des TCMs
 
 
Manuelle Ermittlung der freien SenderIDs, wenn die obige automatische mit FHEM fehlschlägt oder eine manuelle Vergabe gewünscht wird:
* Aus der oben [[EnOcean_Starter_Guide#Vorbereitung|gezeigten Tabelle]]
* Anzeige der nächsten freien Sender-ID: <pre>{EnOcean_CheckSenderID("getNextID","<IODev>","0000000")}; </pre>
* Auflistung der bereits vergebenen Sender-IDs: <pre>{EnOcean_CheckSenderID("getUsedID","<IODev>","0000000")}; </pre>
* Auflistung der noch nicht vergebenen Sender-IDs: <pre>{EnOcean_CheckSenderID("getFreeID","<IODev>","0000000")}; </pre>
Den jeweiligen Befehl in das "[[Konfiguration#Befehl-Eingabefeld|Befehl-Eingabefeld]]" kopieren, <IODev> durch den Namen des TCM-Devices ersetzen und dann Auslösen.
 
=== Schaltet immer AI ein und A0 aus, BI ein und B0 aus usw. ? ===
Nein. <br>
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.


   
=== Wie kann man einen Plot für ein EnOcean-Device anlegen? ===
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:
* <code><nowiki>define <name> EnOcean <ID> <EEP></nowiki></code> oder
* <code><nowiki>define <name> EnOcean <EEP></nowiki></code>
 
Beispiel:
<code><nowiki>define test EnOcean A5-04-02</nowiki></code>
 
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 <name>}} bestätigt. Nach dem automatischen Anlegen der zugehörigen Devices erscheint dort wieder die ID.
 
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.
 
=== Was muss man beim Einsatz der "set extensions" (on-for-timer, on-till, ...) beachten? ===
Die {{Link2CmdRef|Anker=setExtensions|Label=set extensions}} werden von EnOcean grundsätzlich unterstützt, wenn das Device als
# set-Befehle "on" und "off" automatisch anbietet '''oder'''
# dies manuell durch das Mapping (bspw. <code>eventMap BI:on B0:off</code>) erreicht wird.
 
Im 1. Fall sind alle "set extensions"-Befehle automatisch funktionsfähig.
 
{{Randnotiz|RNTyp=Info|RNText=Die Ergänzung des Attributs eventMap im 2. Fall ist nur bis FHEM-Updatestand 09.01.2019 vorzunehmen. Ab Updatestand 10.01.2019 müssen/dürfen durch das Mapping (bspw. <code>eventMap BI:on B0:off</code>) nur die Befehle "on" und "off" festgelegt werden.}}
Im 2. Fall ist die eventMap jedoch zusätzlich - je nach gewünschten "set extensions"-Befehl - zwingend weiter zu ergänzen:
* on-tor-timer: <code>attr <device> eventMap on-for-timer:on-for-timer BI:on B0:off</code>  ({{Link2Forum|Topic=28855|Message=214960}})
* off-tor-timer:  <code>attr <device> eventMap off-for-timer:off-for-timer BI:on B0:off</code>
* on-till:  <code>attr <device> eventMap on-till:on-till BI:on B0:off</code>  ({{Link2Forum|Topic=29993|Message=226886}})
* off-till:  <code>attr <device> eventMap off-till:off-till BI:on B0:off</code>
* blink:  <code>attr <device> eventMap on-for-timer:on-for-timer BI:on B0:off</code>  ({{Link2Forum|Topic=31358|Message=239151}})
* intervals:  <code>attr <device> eventMap on-till:on-till BI:on B0:off</code>
Sollen mehrere "set extensions"-Befehle verwendet werden, so sind die obigen Codes entsprechend zu kombinieren.
 
=== Für mein EnOcean-Gerät gibt es keine spezielle Wiki-Seite; wo finde ich dann Informationen? ===
* In der {{Link2CmdRef}} nach dem Gerät suchen
* In der commandref nach dem verwendeten EEP suchen
* Im Wiki nach einem Gerät mit einer ähnlichen EEP/subType suchen
* Im EnOcean-Forum nach Threads zum Gerät/EEP suchen
 
=== Warum funktioniert mein Eltako-Gerät nicht wie in commandref/Wiki beschrieben? ===
* Eltako-Geräte haben bei gleicher Produktbezeichnung teilweise je nach Produktionswoche unterschiedliche Funktionen/Eigenschaften
* die Produktionswoche ist auf dem Gerät angegeben (z.B. 11/14 -> Elfte Woche im Jahr 2014)
* in den nach Produktionswoche untergliederten [http://www.eltako.com/de/bedienungsanleitungen/gebaeudefunk-powerline.html Bedienungsanleitungen] stehen genauere Angaben
* Angaben in commandref/Wiki analog für die Angaben laut Bedienungsanleitung für den speziellen Produktionszeitraum umsetzen
* bei gravierenden Abweichungen und Neuerungen Info im Forum/Wiki
 
=== Wie kann ich Eltako-Aktoren anhand Ihrer Modellbezeichnung grob unterscheiden? ===
* 12er Baureihe (ausgelaufen) = unidirektionale RS485-Bus-Aktoren für Hutschiene
* 14er Baureihe = bidirektionale RS485-Bus-Aktoren für Hutschiene
* 61er Baureihe = uni- und bidirektionale Aktoren je nach Produktionszeitraum für Einbaumontage (Hohlwanddose)
* 70/71er Baureihe = uni- und bidirektionale Aktoren je nach Produktionszeitraum für Einbaumontage (Zwischendecke)
* 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
 
=== Wie kann ich PEHA-Aktoren anhand Ihrer Modellbezeichnung grob unterscheiden? ===
* Easyclick-Unterputzempfänger: unidirektionale Aktoren für Einbaumontage; Modellbezeichnung enthält typischerweise die Buchstaben EP
* Easyclickpro-Unterputzempfänger: bidirektionale Aktoren für Einbaumontage; Modellbezeichnung enthält die Buchstaben EBI oder EBIM (mit zusätzlicher Energiemessung)
 
=== Wo finde ich Angaben zu Jäger Direkt - OPUS GreenNet EnOcean-Geräten? ===
* Es handelt sich im Wesentlichen um umgelabelte Produkte anderer Hersteller (Peha, Eltako usw.). Anhand der Gehäuseform lassen sich Rückschlüsse ziehen
* Angaben zu den "Original"-Produkten können grundsätzlich -soweit bekannt- auf OPUS GreenNet Geräte übertragen werden
 
=== Wie ermittele ich die Signalstärke, Signalqualität durch die Anzeige des RSSI/Repeatingcounter? ===
* Durch anlegen einer readingsGroup: <code>define TCM_Signal readingsGroup TYPE=EnOcean:+TCM_ESP3_0_RSSI,+TCM_ESP3_0_ReceivingQuality,+TCM_ESP3_0_RepeatingCounter,+TCM_ESP3_0_TIME</code>
Dabei muss TCM_ESP3_0 durch den Devicenamen des eigenen TCMs ersetzt werden!


=== Wo genau ist der Unterschied zwischen "EEP Manufacturer Specific Applications" und "Inofficial EEP for special devices"? ===
* 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.


[[Kategorie:HOWTOS]]
[[Kategorie:HOWTOS]]
[[Kategorie:EnOcean Components]]
[[Kategorie:EnOcean Components|!]]

Aktuelle Version vom 2. Juni 2022, 07:33 Uhr

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 ++++ https://forum.fhem.de/index.php/topic,97027.0.html: autocreate nur noch für Teach-In-Telegramm, wenn nicht "attr <IODev> learningDev all" gesetzt ist.


TCM
Zweck / Funktion
Einbindung EnOcean-Gateway
Allgemein
Typ Gerätemodul
Details
Dokumentation EN / DE
Support (Forum) EnOcean
Modulname 00_TCM.pm
Ersteller klaus.schauer (Forum / Wiki)
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref!


EnOcean
Zweck / Funktion
Ansteuerung EnOcean-Geräte über TCM
Allgemein
Typ Gerätemodul
Details
Dokumentation EN / DE
Support (Forum) EnOcean
Modulname 10_EnOcean.pm
Ersteller klaus.schauer (Forum / Wiki)
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref!

EnOcean

EnOcean ist

  • ein ISO ratifizierter Funkstandard, ausgelegt für Funksensoren und Funksensornetze mit besonders niedrigem Energieverbrauch
  • ein Anbieter batterieloser Funksensoren

EnOcean-Endgeräte mit dem von der EnOcean Alliance zur Verfügung gestellten EnOcean-Funkprotokoll werden von zahlreichen Hardware-Herstellern angeboten.

EnOcean Equipment Profile

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 EnOcean Equipment Profiles (EEPs) sind auf der Internetseite der EnOcean Alliance zu finden.

Manufacturer Specific Communication

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 Beitrag. Angaben zu den verwendeten Profilen/Telegrammen sind den Bedienungsanleitungen der Produkte zu entnehmen.

uni- versus bidirektional

EnOcean-Endgeräte gibt es sowohl in uni- als auch in bidirektionalen Ausführungen. Bei unidirektionalen Endgeräten 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 bidirektionalen Endgeräten erfolgt die Funk-Kommunikation hingegen in zwei Richtungen: sie bieten

  1. Sende- und
  2. Empfangsmöglichkeiten.

Der bidirektionale Aktor kann somit unter anderem die erfolgreiche Ausführung eines empfangenen Befehls zurückmelden.

SenderID

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. "Funktaster 1" den "Dimmer 1" steuert. 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.

EnOcean in FHEM

Allgemein

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 update ausführen und anschließend shutdown restart durchführen. Genauso auch vor Anfragen im Forum die Aktualität von FHEM überprüfen.

Die Nutzung von EnOcean in FHEM ist (nicht nur für den Anfänger) ausschließlich mit der standardmäßig eingeschalteten 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 und Heimautomatisierung mit FHEM Pflicht, auch wenn sie nicht EnOcean behandeln, so werden doch wesentliche Punkte für ein Verständnis von FHEM vermittelt.

Im Folgenden und auf den 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 "Befehl-Eingabefeld" und die "Objektdetails" erfolgen.

Vorbereitung

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:

A B C D E
Nr. Name EnOcean Name in FHEM HEX (Sender-ID) Zimmer
<Name Hardwareschalter> <Name in FHEM> <HEX Code> <Raumname>
TCM_ESP3_0 TCM_ESP3_0 AABBCC00
1 EnO_switch_123456 eg_fl_Licht AABBCC01 EG_Flur
...
128

Definition von TCM / Gateway

FHEM kann mit einem Funkgateway, das auf einem TCM-Modul basiert, EnOcean-Funk empfangen und senden. Bisher gibt es zwei Transceiver Chips von EnOcean:

  • Beim Raspberry Pi 3 muss der GPIO-Port auf den Hardware-UART0 umgestellt werden: Raspberry Pi 3: GPIO-Port Module und Bluetooth
  • Die seriellen Schnittstelle /dev/ttyAMA0 muss am Raspberry Pi freigeschaltet werden, damit das EnOceanPi-Modul funktionsfähig ist. Zur Vorgehensweise siehe: Beitrag

Zudem existiert eine Lösung zur kabelgebundenen Anbindung des FHEM-Rechners mittels Eltako FGW14 an den Eltako RS485-Bus, über die sowohl Busaktoren als auch EnOcean-Funkaktoren gesteuert werden können und auch EnOcean-Funktelegramme über das FAM14 Funkantennenmodul am RS485-Bus empfangen werden können.

Das TCM-basierte Gateway wird unter Linux nach Anschluss an den FHEM-Rechner beim FHEM-Start oder ohne FHEM-Neustart durch Aufruf des Befehls usb scan 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 Serial-by-Id anzusprechen. Unter Windows ist ein manuelles Anlegen der Definition des TCM-Gateways wegen fehlender Unterstützung des Befehls usb scan notwendig.

Bei RS485-basierte Gateways (bspw. FGW14) muss in der Konfiguration zusätzlich manuell das Attribut comType auf RS485 gesetzt werden.

Beispiele der automatisch erzeugten define-Zeile in der Konfiguration:

EnOceanPi an Raspberry Pi:

define TCM_ESP3_0 TCM ESP3 /dev/ttyAMA0@57600

TCM310/USB300 an Fritzbox oder Raspberry Pi:

define TCM_ESP3_0 TCM ESP3 /dev/ttyUSB0@57600

Hier folgt ein Beispiel der define-Zeile in der Konfiguration für kabelgebundene Anbindung mit FGW14 über serielle Schnittstelle

define TCM_ESP2_0 TCM ESP2 /dev/ttyS3@57600
attr TCM_ESP2_0 comType RS485                    <---- Manuell zu setzen

Nach erfolgreicher Definition ist das Gateway im Raum "Everything" in der Gruppe "TCM" zu finden. Wenn neben dem Gatewaynamen "initialized" oder "opened" angezeigt wird, ist FHEM in der Lage mit den EnOcean-Geräten zu kommunizieren.

Wie im 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:

  • FHEM stehen 127 fortlaufende eigene SenderID zur Verfügung
  • beginnend mit der baseID des TCM + 1

Die baseID des TCM erhält man durch Eingabe von

get TCM_ESP3_0 baseID 

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.

Das Webfrontend zeigt dann beispielsweise:

BaseID=AABBCC00,RemainingWriteCycles=0A

Die niedrigste SenderID in diesem Beispiel ist AABBCC01 (BaseID=AABBCC00 +1 HEX!!!), die nächste AABBCC02 usw.

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.

Definition von Geräten

Definition / Anlernvorgang (Teach-In)

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 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 vorher am Gerät einzuschalten (u.a. Eltako).

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:

  • subtype: 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. "roomSensorControl.01" bedienen mehrere ähnliche EEP gleichzeitig.
  • manufID: Code für den Hersteller des Gerätes (Übersetzungstabelle Code zu Name ist in der 10_EnOcean.pm unter %EnO_manuf)
  • model: Modell des Gerätes
  • eep: EEP des Gerätes. Unter anderem werden die Informationen zur automatischen Anlage von FileLog, SVG und des Attributs webCmd anhand des EEPs ermittelt.

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 commandref/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.

Die Definition und der Anlernvorgang unterscheiden sich je nach Gerätetyp:

  • Sensoren:
    • Schalter (EEP RPS): werden automatisch beim ersten empfangenen Funktelegramm in FHEM mit den notwendigen Attributen angelegt.
    • Kontakte (EEP 1BS): werden automatisch beim ersten empfangenen Funktelegramm in FHEM mit den notwendigen Attributen angelegt.
    • 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.
  • 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

In den nachfolgenden Gliederungspunkten wird beispielhaft für je ein Gerät aus den obigen Gerätetypen die Einbindung in FHEM erläutert.

Grundlegend gilt immer: FHEM legt sendende, noch nicht definierte EnOcean Geräte selbst an, wenn

  • in Konfiguration autocreate aktiviert ist:
  • FHEM/das TCM-Modul sich im learningMode befindet und
  • FHEM eine Nachricht vom noch nicht definierten EnOcean Gerät empfängt

Im Webfrontend werden automatisch angelegte neue Geräte im Raum "EnOcean" angezeigt.

Sensoren

Sensoren Beispiele:

Schalter/Switch

PTM 210 - Schaltermodul (Datenblatt)

EEP: F6-02-xx

FHEM in den learningMode (set <IODev> teach <time/s>) versetzen, dazu im Befehl-Eingabefeld eingeben:

set TCM_ESP3_0 teach 600

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:

  • exemplarischer Auszug aus Konfiguration
define EnO_switch_FFC54500 EnOcean FFC54500                    <-- "FFC54500" ist die 8-stellige Hex-SenderID des Tasters
attr EnO_switch_FFC54500 IODev TCM_ESP3_0
attr EnO_switch_FFC54500 room EnOcean
attr EnO_switch_FFC54500 subType switch                        <-- handelt sich um einen Schalter
# attr EnO_switch_FFC54500 eventMap AI:off A0:on BI:an B0:aus  <-- bei Bedarf ... die gemapten Werte (hier: off, on, an, aus) sollen eindeutig sein
define FileLog_EnO_switch_FFC54500 FileLog ./log/EnO_switch_FFC54500-%Y.log EnO_switch_FFC54500
attr FileLog_EnO_switch_FFC54500 logtype text

Ein Schalter (hier: FT55) hat vier Taster:

Taster in FHEM
links oben A0
links unten AI (nicht "eins" sondern "i"!)
rechts oben B0
rechts unten BI

Das Log FileLog_EnO_switch_FFC54500 zeichnet beim einmaligen Drücken des linken unteren Tasters ("AI") folgendes auf:

2014-01-01_07:00:01 EnO_switch_FFC54500 buttons: pressed
2014-01-01_07:00:01 EnO_switch_FFC54500 channelA: AI
2014-01-01_07:00:01 EnO_switch_FFC54500 AI
2014-01-01_07:00:02 EnO_switch_FFC54500 buttons: released

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.

FHEM kann sich nicht 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 siehe unten.

Kontakte

STM 320 Batterieloses Magnetkontakt-Funkmodul (Datenblatt)

EEP: D5-00-01

FHEM in den learningMode versetzen, dazu im Befehl-Eingabefeld eingeben:

set TCM_ESP3_0 teach 600

Anlerntelegramm laut Anleitung verschicken oder Magnetkontakt öffnen und schließen.

Der Kontakt wird automatisch in FHEM definiert und ist angelernt.

  • exemplarischer Auszug aus Konfiguration
define EnO_contact_0000FF53 EnOcean 0000FF53
attr EnO_contact_0000FF53 IODev TCM_ESP3_0
attr EnO_contact_0000FF53 room EnOcean
attr EnO_contact_0000FF53 subType contact
define FileLog_EnO_contact_0000FF53 FileLog ./log/EnO_contact_0000FF53-%Y.log EnO_contact_0000FF53
attr FileLog_EnO_contact_0000FF53 logtype text
attr FileLog_EnO_contact_0000FF53 room EnOcean

Sonstige Sensoren

4BS-Teach-In

FHEM in den learningMode versetzen, dazu im Befehl-Eingabefeld eingeben:

set TCM_ESP3_0 teach 600

Dann das Anlerntelegramm laut Bedienungsanleitung am Sensor auslösen. Der Sensor wird dann automatisch in FHEM definiert und ist angelernt.

Profilloses 4BS-Teach-In

Omnio Ratio eagle-PM101 Licht- und Anwesenheitssensor (Betriebsanleitung)

FHEM in den learningMode versetzen, dazu im Befehl-Eingabefeld eingeben:

set TCM_ESP3_0 teach 600

Das Anlerntelegramm vom Omnio Ratio eagle-PM101 verschicken (MÖGLICH??)

Im angelegten FHEM-Device manuell das Attribut subType auf PM101 setzen.

Aktoren

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 "Notlösung" 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.

Aktoren Beispiele:

unidirektionale Aktoren

Bei unidirektionalen Aktoren steht eine SenderID des TCM-Gateways immer im define des FHEM-Devices. Mit dieser SenderID steuert FHEM den Aktor. Diese SenderID muss dazu im Aktor eingelernt werden.

Info blue.png
MERKE: Eine SenderID des TCM-Gateways muss bei unidirektionalen Aktoren immer im define des Devices stehen.
MERKE: Bei unidirektionalen Aktoren stimmt der Status des FHEM-Devices im Webfrontend nur mit dem realen Aktorzustand überein, wenn ausschließlich über FHEM gesteuert wird (Abhilfe)


Teach-In als Tasteremulation

PEHA 451 FU-EP o.T. (Schaltaktor unidirektional)

Eine freie SenderID des TCM-basierten Gateways heraussuchen und diese als EnOcean-Gerät in FHEM definieren, dazu im Befehl-Eingabefeld eingeben:

define eg_fl_Licht EnOcean AABBCC01

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:

define eg_fl_Licht EnOcean getNextID

Anschließend das Attribut subType beim erzeugten Device auf switch 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 "oben" oder "unten" gedrückt sein können. FHEM emuliert mit diesem EnOcean-Gerät einen EnOcean-Schalter (darum auch "virtueller FHEM-Schalter"). Der Taster 0 des Kanal A wird "gedrückt" mit set eg_fl_Licht A0.

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:

set eg_fl_Licht B0

Wenn der Aktor den erfolgreichen Anlernvorgang signalisiert, den Anlernmodus am Aktor ausschalten.

  • exemplarischer Auszug aus Konfiguration
define eg_fl_Licht EnOcean AABBCC01        <--- AABBCC01 ist eine der 127 SenderID's des TCM, mit der FHEM sendet 
attr eg_fl_Licht room EG_Flur
attr eg_fl_Licht eventMap BI:off B0:on
attr eg_fl_Licht subType switch
define FileLog_eg_fl_Licht FileLog ./log/ eg_fl_Licht-%Y.log eg_fl_Licht
attr FileLog_eg_fl_Licht logtype text

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 (siehe unten).

Teach-In als Gateway/PC-Steuerung

"ältere" Eltako FSB61 (Produktionszeitraum KW 43/10 - KW 40/11 Bedienungsanleitung)

EEP: A5-3F-7F

Eine freie SenderID des TCM-basierten Gateways heraussuchen und diese als EnOcean-Gerät in FHEM definieren, dazu im Befehl-Eingabefeld eingeben:

define eg_fl_Rollo EnOcean AABBCC02

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:

define eg_fl_Rollo EnOcean getNextID

Beim erzeugten FHEM-Device muss das Attribut subType auf manufProfile gesetzt werden. Die Attribute manufID und model sind auf die unten in der Konfiguration gezeigten Werte zu setzen.

Dieser virtuelle FHEM-Schalter wird in den Aktor als PC/Szenentaster angelernt indem im Befehl-Eingabefeld eingeben wird:

set eg_fl_Rollo teach

Wenn der Aktor den erfolgreichen Anlernvorgang signalisiert, den Anlernmodus am Aktor ausschalten.

  • exemplarischer Auszug aus Konfiguration
define eg_fl_Rollo EnOcean AABBCC02        <--- AABBCC02 ist eine der 127 SenderID's des TCM, mit der FHEM sendet 
attr eg_fl_Rollo room EG_Flur
attr eg_fl_Rollo subType manufProfile
attr eg_fl_Rollo manufID 00D
attr eg_fl_Rollo model Eltako_FSB61

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 (siehe unten).

bidirektionale Aktoren

Bei bidirektionalen Aktoren steht die SenderID des Aktors im define 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 subDef. Diese SenderID muss dazu im Aktor eingelernt werden.

Info blue.png
MERKE: Eine SenderID des TCM-Gateways muss bei bidirektionalen Aktoren immer im Attribut subDef des Devices stehen.
MERKE: Bei bidirektionalen Aktoren stimmt nach korrekter Einbindung in FHEM der Status des FHEM-Devices im Webfrontend immer mit dem realen Aktorzustand überein.


Teach-In als Tasteremulation

10A-Stromstoß-Schaltrelais mit Strommessung FSR61VA
Schaltrelais (bidirektional)

FHEM in den learningMode versetzen, dazu im Befehl-Eingabefeld eingeben:

set TCM_ESP3_0 teach 600

Die SenderID des Aktors heraussuchen und diese als EnOcean-Gerät in FHEM definieren, dazu im Befehl-Eingabefeld eingeben:

define EnO_switch_FSR61VA EnOcean FFAABBC0

Eine freie SenderID des TCM-basierten Gateways heraussuchen und diese im Attribut subDef des angelegten Devices hinterlegen.

Anschließend die Attribute subType und switchMode wie im unten wiedergegebenen exemplarischen Auszug aus der Konfiguration anlegen.

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:

  1. Unterer Drehschalter je nach Produktionswoche des FSR61VA (aufgedruckt):
    1. bis KW 2/13: "ca. Mitte" (Taster Ein/Aus einlernen)
    2. ab KW 3/13 bis KW 10/14: "60" (Taster Ein/Aus einlernen)
    3. ab KW 11/14: "40" (Richtungstaster einlernen)
  2. Oberer Funktions-Drehschalter: "LRN" (LED blinkt)
  3. FHEM Eingabefeld: „set EnO_switch_FSR61VA B0“, <Enter> (LED erlischt)
  4. Oberer Funktions-Drehschalter: Eine der ESV-Einstellungen
  5. Unterer Funktions-Drehschalter: auf "oo" einstellen (unendlich)
  • exemplarischer Auszug aus der Konfiguration
define EnO_switch_FSR61VA EnOcean FFAABBC0         --> EnO_switch_FSR61VA ist ein frei gewählter eindeutiger Name
                                                       für das FHEM-Device.
                                                       FFAABBC0 ist die erste am Boden des FSR61VA aufgedruckte SenderID. 
                                                       Damit sendet das FSR61VA den Schaltzustand (B0/BI --> ein/aus)
attr EnO_switch_FSR61VA IODev TCM_ESP3_0             --> TCM_ESP3_0 ist der Name des Devices, mit dem FHEM EnOcean-Funk 
                                                       sendet und empfängt.
attr EnO_switch_FSR61VA subDef FF998877            --> FF998877 ist eine der 127 SendeIDs des TCM_ESP3_0, damit sendet FHEM an den FSR61VA
attr EnO_switch_FSR61VA subType switch             --> es handelt sich um einen EnOcean Schalter (der kann A0, AI, B0, BI,...)
attr EnO_switch_FSR61VA switchMode pushbutton      --> als "pushbutton" sendet FHEM bei einem 
                                                       "set EnO_switch_FSR61VA B0" nach dem Kommando (B0) noch ein "release".
                                                       Das brauchts, wenn der FSR61VA als ES oder ESV betrieben wird.
                                                       Sonst wird jedes "set"-Kommando vom FSR61VA als  
                                                       "länger als eine Sekunde gedrückt" interpretiert -> "Tasterdauerlicht".
Unidirektionales 4BS-Teach-In

RS485-Bus-Aktor 4-Kanal-Stromstoß-Schaltrelais FSR14
Schaltrelais (bidirektional)

FHEM in den learningMode versetzen, dazu im Befehl-Eingabefeld eingeben:

set TCM_ESP3_0 teach 600

Die SenderID des Aktors heraussuchen und diese als EnOcean-Gerät in FHEM definieren, dazu im Befehl-Eingabefeld eingeben:

define EnOcean_switch_FEFF4AF8 EnOcean FEFF4AF8
Info green.pngAb Updatestand 04.01.2015 ist eine manuelle Vergabe einer freien SenderID per subDef nicht mehr notwendig. Beim ersten Senden des "teach"-Befehls an den Aktor wird eine freie SenderID vergeben, sofern keine gültige SenderID eingetragen war.

Eine freie SenderID des TCM-basierten Gateways heraussuchen und diese im Attribut subDef des angelegten Devices hinterlegen.

Anschließend die Attribute subType und gwCmd wie im unten wiedergegebenen exemplarischen Auszug aus der Konfiguration anlegen.

Jetzt den Aktor in den Lernmodus versetzen und dann von FHEM das Lerntelegramm verschicken:

set EnOcean_switch_FEFF4AF8 teach

Lernmodus am Aktor ausschalten

  • exemplarischer Auszug aus Konfiguration
define EnOcean_switch_FEFF4AF8 EnOcean FEFF4AF8   <--- FEFF4AF8 ist hier die SenderID eines FSR14-Kanals (Aktor)
attr EnOcean_switch_FEFF4AF8 subDef AABBCC03      <--- AABBCC03 ist eine der 127 SenderID's des TCM, mit der FHEM sendet (siehe unten)
attr EnOcean_switch_FEFF4AF8 room EnOcean        # Der Raum kann angepasst werden
attr EnOcean_switch_FEFF4AF8 gwCmd switching     # Wichtig für FSR14
attr EnOcean_switch_FEFF4AF8 subType gateway     # Wichtig für FSR14
define FileLog_EnOcean_switch_FEFF4AF8 FileLog ./log/EnOcean_switch_FEFF4AF8-%Y.log EnOcean_switch_FEFF4AF8
attr FileLog_EnOcean_switch_FEFF4AF8 logtype text
Bidirektionales 4BS-Teach-In

Kleinstellantrieb MD15-FTL-xx
Funkgesteuerter, batteriegespeister Kleinstellantrieb für Raumtemperaturregelung (bidirektional)

EEP: A5-20-01

4BS-Bidirektionales-Teach-In:

  1. Aktor möglichst komplett zurücksetzen, sofern nicht mehr im Original-Auslieferzustand
  2. Falls vorhanden, alle bisherigen FHEM-Devices des Aktors löschen und nach Speichern der geänderten Konfiguration FHEM neu starten
  3. FHEM in Lernmodus schalten: set <IODev> teach <time/s>
  4. 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
  5. Aktor wird in FHEM automatisch mit allen notwendigen Parametern angelegt.
  • exemplarischer Auszug aus Konfiguration
define EnO_sensor_01000EFA EnOcean 01000EFA
attr EnO_sensor_01000EFA IODev TCM_ESP3_0
attr EnO_sensor_01000EFA comMode biDir
attr EnO_sensor_01000EFA destinationID unicast
attr EnO_sensor_01000EFA manufID 00A
attr EnO_sensor_01000EFA room EnOcean
attr EnO_sensor_01000EFA subDef AABBCC04
attr EnO_sensor_01000EFA subType hvac.01
define FileLog_EnO_sensor_01000EFA FileLog ./log/EnO_sensor_01000EFA-%Y.log EnO_sensor_01000EFA
attr FileLog_EnO_sensor_01000EFA logtype text
attr FileLog_EnO_sensor_01000EFA room EnOcean
UTE-Teach-In

Einbau-Aktor 452 FU-EBIM o.T.
2-Kanal-Multifunktionsaktor (bidirektional) mit Energiemessfunktion

EEP: D2-01-08

UTE-Teach-In:

  1. Aktor möglichst komplett zurücksetzen, sofern nicht mehr im Original-Auslieferzustand
  2. Falls vorhanden, alle bisherigen FHEM Devices des Aktors löschen und nach Speichern der geänderten Konfiguration FHEM neu starten
  3. FHEM in Lernmodus schalten: set <IODev> teach <time/s>
  4. Aktor-Kanal 0 oder 1 in Lernmodus versetzen (immer nur einen Kanal)
  5. Aktor-Kanal 0 oder 1 wird in FHEM automatisch mit allen notwendigen Parametern angelegt.
  6. Das Anlernen für den zweiten Kanal wie nach 3. bis 5. beschrieben wiederholen

Die Kanäle können jetzt geschaltet werden mit:

  • FHEM Device für Kanal 0: set <Name_0> on|off 0
  • FHEM Device für Kanal 1: set <Name_1> on|off 1

Falls gewünscht, kann der Kanal mit dem Attribut attr <Name_0|1> defaultChannel 0|1 voreingestellt werden. Dann entfällt die Angabe des Kanals im set-Befehl.

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. 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.


Besonderheiten für die Anzeige im WebFrontend

Aufteilung der Kanäle in unabhängige Devices

Mehrkanalige bidirektionale Aktoren

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 genutzt werden.

Zunächst wird der Aktor standardmäßig in FHEM definiert/angelernt und die Funktion geprüft (hier am Beispiel eines Aktor mit dem Namen "Aktor"). Anschließend wird pro Kanal ein readingProxy-Device mit Bezug auf das Reading channelA, channelB, ... angelegt:

#Kanal A zur Steuerung mit on und off
define AktorKanalA readingsProxy Aktor:channelA
attr AktorKanalA setFn {($CMD eq "on")?"A0":"AI";;} 
attr AktorKanalA setList off on 
attr AktorKanalA valueFn {($VALUE eq "A0")?"on":"off"}
attr AktorKanalA webCmd off:on 
#Kanal B zur Steuerung mit on und off
define AktorKanalB readingsProxy Aktor:channelB
attr AktorKanalB setFn {($CMD eq "on")?"B0":"BI";;} 
attr AktorKanalB setList off on 
attr AktorKanalB valueFn {($VALUE eq "B0")?"on":"off"}
attr AktorKanalB webCmd off:on 

Jeder Kanal wird jetzt separat im WebFrontend durch das readingsProxy-Device abgebildet (Statusanzeige) und kann mit diesem gesteuert werden.

Ein ausführlicheres readingsProxy-Beispiel für einen mehrkanaligen Jalousieaktor mit Visualisierung über Slider enthält dieser Beitrag.

readingsProxy-Beispiel für einen mehrkanaligen Jalousieaktor mit Visualisierung über Slider
Virtuelle Schalter für unidirektionale Aktoren

Um die 4 Kanäle jeweils einzeln als Schalter (einzelne Schaltwippe) im WebFrontend abzubilden kann 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.

Info green.pngAb Modulversion 11866/31.7.2016 besitzen auch virtuelle Schalter die Readings channel[A-D]. Ein readingsProxy sollte seitdem besser von diesen Readings, wie im vorherigen Abschnitt dargestellt, abgeleitet werden.

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:

#Kanal A zur Steuerung mit on und off
define fhemSchalterKanalA readingsProxy fhemSchalter:state
attr fhemSchalterKanalA setFn {($CMD eq "on")?"A0":"AI";;}
attr fhemSchalterKanalA setList on off
attr fhemSchalterKanalA valueFn {$LASTCMD}
attr fhemSchalterKanalA webCmd on:off
#Kanal B zur Steuerung mit on und off
define fhemSchalterKanalB readingsProxy fhemSchalter:state
attr fhemSchalterKanalB setFn {($CMD eq "on")?"B0":"BI";;}
attr fhemSchalterKanalB setList on off
attr fhemSchalterKanalB valueFn {$LASTCMD}
attr fhemSchalterKanalB webCmd on:off
#Kanal C zur Steuerung mit on und off
define fhemSchalterKanalC readingsProxy fhemSchalter:state
attr fhemSchalterKanalC setFn {($CMD eq "on")?"C0":"CI";;}
attr fhemSchalterKanalC setList on off
attr fhemSchalterKanalC valueFn {$LASTCMD}
attr fhemSchalterKanalC webCmd on:off
#Kanal D zur Steuerung mit on und off
define fhemSchalterKanalD readingsProxy fhemSchalter:state
attr fhemSchalteKanalD setFn {($CMD eq "on")?"D0":"DI";;}
attr fhemSchalterKanalD setList on off
attr fhemSchalterKanalD valueFn {$LASTCMD}
attr fhemSchalterKanalD webCmd on:off

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.

Physischer EnOcean- und virtueller FHEM-Schalter zu einem Device zusammenfassen

Um im Webfrontend die Aktionen beider Schalter in einem Element zusammengefasst und damit den realen Zustand bei unidirektionalen Aktoren zu sehen, kann man eine structure nutzen:
(Bei bidirektionalen Aktoren ist dies aufgrund der Statusrückmeldungen nicht notwendig. Achtung: Teilweise müssen Statusrückmeldungen/Bestätigungstelegramme erst am Aktor eingeschaltet werden)

#Definition des virtuellen FHEM-Schalters
define fhemSchalter EnOcean AABBCC01              <--- AABBCC01 ist eine der 127 SenderID's des TCM, mit der FHEM sendet
attr fhemSchalter eventMap BI:off B0:on
attr fhemSchalter icon icoBELEUCHTUNG.png
attr fhemSchalter subType switch

#Definition des physischen Tasters (z.B. durch autocreate erzeugt)
define EnO_switch_0021E4BB EnOcean 0021E4BB      <--- 0021E4BB ist die (aufgedruckte) 8-stellige SenderID des physischen Tasters
attr EnO_switch_0021E4BB eventMap BI:off B0:on
attr EnO_switch_0021E4BB room EnOcean
attr EnO_switch_0021E4BB subType switch
attr EnO_switch_0021E4BB dummy

#fhemSchalter ist der Name des virtuellen FHEM-Schalters
#EnO_switch_0021E4BB ist der (z.B. per autocreate erstellte) FHEM-Taster
define Gruppe_test_notify structure room fhemSchalter EnO_switch_0021E4BB
attr Gruppe_test_notify eventMap BI:off B0:on
attr Gruppe_test_notify room Gaestezimmer
attr Gruppe_test_notify clientstate_behavior last

Alternativ kann man für diesen Zweck auch ein notify in Verbindung mit setreading <device> state <state> nutzen:

define nAbgleich notify EnO_switch_0021E4BB:(on|off) setreading fhemSchalter state $EVENT

FAQ

Warum schaltet mein Aktor nicht, wenn ich im WebFrontend auf das Icon für den physischen Taster/Schalter klicke bzw. mit set <device> <command> ansteuere?

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.

Welche Infos sollten Anfragen im EnOcean-Forum enthalten?

  • Anfragen bitte nur zur aktuellsten FHEM-Version: Befehl update ergibt Ausgabe "nothing to do..."
  • detaillierte Beschreibung des Problems
  • beteiligte Komponenten (genaue Bezeichnung und evtl. Link auf Hersteller-Dokumentation)
  • list des jeweiligen devices (Ausgabe von list <device>)
  • passender Ausschnitt aus Logfile (siehe Link im FHEM-Menü links) generiert mit gesetztem Attribut verbose 5 am TCM-Device (attr <IODev> verbose 5)

Wie kann ich zur Fortentwicklung der EnOcean-Module beitragen?

  • Erfolgreichen Einsatz von neuen/bisher nicht gemeldeten EnOcean-Geräten im Forum mitteilen
  • In der commandref als [untested] markierte EEPs bei erfolgreichen Tests im Forum als getestet melden
  • Codeschnipsel und Ideen im Forum posten
  • Fehler und Probleme im Forum melden
  • Wiki: Neue Geräte ins Wiki aufnehmen; Codeschnipsel und Beispiele einpflegen

Wie findet man die Sender-ID eines bidirektionalen Aktors?

  • Aufkleber auf dem Aktor oder beigelegte Information in der Aktorverpackung
  • Ermittlung mit FHEM:
  1. Bestätigungstelegramme am Aktor aktivieren
  2. Funktaster am Aktor anlernen oder alternativ Taster am örtlichen Steuereingang anschließen
  3. FHEM in den learningMode versetzen: set <IODev> teach <time/s>
  4. Event Monitor aufrufen
  5. Aktor mit Taster schalten
  6. 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.
  7. 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.

Wie ermittelt man freie Sender-IDs des TCM-basierten Funkgateways?

FHEM ermittelt eine freie SenderID automatisch, wenn die Definition folgermaßen erfolgt:

  • unidirektionaler Aktor:
define <name> EnOcean getNextID <EEP>
Im definierten Device ist "getNextID" durch eine freie SenderID des TCMs ersetzt.
  • bidirektionaler Aktor:
define <name> EnOcean <SenderId des Aktors> <EEP>
Dem definierten Device wird das Attribut subDef mit dem Wert getNextId zugewiesen: attr <name> subDef getNextID. "getNextID" ersetzt FHEM automatisch durch eine freie SenderID des TCMs


Manuelle Ermittlung der freien SenderIDs, wenn die obige automatische mit FHEM fehlschlägt oder eine manuelle Vergabe gewünscht wird:

  • Aus der oben gezeigten Tabelle
  • Anzeige der nächsten freien Sender-ID:
    {EnOcean_CheckSenderID("getNextID","<IODev>","0000000")}; 
  • Auflistung der bereits vergebenen Sender-IDs:
    {EnOcean_CheckSenderID("getUsedID","<IODev>","0000000")}; 
  • Auflistung der noch nicht vergebenen Sender-IDs:
    {EnOcean_CheckSenderID("getFreeID","<IODev>","0000000")}; 

Den jeweiligen Befehl in das "Befehl-Eingabefeld" kopieren, <IODev> durch den Namen des TCM-Devices ersetzen und dann Auslösen.

Schaltet immer AI ein und A0 aus, BI ein und B0 aus usw. ?

Nein.
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.

Wie kann man einen Plot für ein EnOcean-Device anlegen?

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:

  • define <name> EnOcean <ID> <EEP> oder
  • define <name> EnOcean <EEP>

Beispiel: define test EnOcean A5-04-02

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 modify <name> bestätigt. Nach dem automatischen Anlegen der zugehörigen Devices erscheint dort wieder die ID.

Sollte für das EEP keine .gplot-Vorlage für einen Plot bzw. das SVG-Device existieren, kann ein Plot mit dem .gplot-Editor erstellt werden.

Was muss man beim Einsatz der "set extensions" (on-for-timer, on-till, ...) beachten?

Die set extensions werden von EnOcean grundsätzlich unterstützt, wenn das Device als

  1. set-Befehle "on" und "off" automatisch anbietet oder
  2. dies manuell durch das Mapping (bspw. eventMap BI:on B0:off) erreicht wird.

Im 1. Fall sind alle "set extensions"-Befehle automatisch funktionsfähig.

Info green.pngDie Ergänzung des Attributs eventMap im 2. Fall ist nur bis FHEM-Updatestand 09.01.2019 vorzunehmen. Ab Updatestand 10.01.2019 müssen/dürfen durch das Mapping (bspw. eventMap BI:on B0:off) nur die Befehle "on" und "off" festgelegt werden.

Im 2. Fall ist die eventMap jedoch zusätzlich - je nach gewünschten "set extensions"-Befehl - zwingend weiter zu ergänzen:

  • on-tor-timer: attr <device> eventMap on-for-timer:on-for-timer BI:on B0:off (Beitrag)
  • off-tor-timer: attr <device> eventMap off-for-timer:off-for-timer BI:on B0:off
  • on-till: attr <device> eventMap on-till:on-till BI:on B0:off (Beitrag)
  • off-till: attr <device> eventMap off-till:off-till BI:on B0:off
  • blink: attr <device> eventMap on-for-timer:on-for-timer BI:on B0:off (Beitrag)
  • intervals: attr <device> eventMap on-till:on-till BI:on B0:off

Sollen mehrere "set extensions"-Befehle verwendet werden, so sind die obigen Codes entsprechend zu kombinieren.

Für mein EnOcean-Gerät gibt es keine spezielle Wiki-Seite; wo finde ich dann Informationen?

  • In der commandref nach dem Gerät suchen
  • In der commandref nach dem verwendeten EEP suchen
  • Im Wiki nach einem Gerät mit einer ähnlichen EEP/subType suchen
  • Im EnOcean-Forum nach Threads zum Gerät/EEP suchen

Warum funktioniert mein Eltako-Gerät nicht wie in commandref/Wiki beschrieben?

  • Eltako-Geräte haben bei gleicher Produktbezeichnung teilweise je nach Produktionswoche unterschiedliche Funktionen/Eigenschaften
  • die Produktionswoche ist auf dem Gerät angegeben (z.B. 11/14 -> Elfte Woche im Jahr 2014)
  • in den nach Produktionswoche untergliederten Bedienungsanleitungen stehen genauere Angaben
  • Angaben in commandref/Wiki analog für die Angaben laut Bedienungsanleitung für den speziellen Produktionszeitraum umsetzen
  • bei gravierenden Abweichungen und Neuerungen Info im Forum/Wiki

Wie kann ich Eltako-Aktoren anhand Ihrer Modellbezeichnung grob unterscheiden?

  • 12er Baureihe (ausgelaufen) = unidirektionale RS485-Bus-Aktoren für Hutschiene
  • 14er Baureihe = bidirektionale RS485-Bus-Aktoren für Hutschiene
  • 61er Baureihe = uni- und bidirektionale Aktoren je nach Produktionszeitraum für Einbaumontage (Hohlwanddose)
  • 70/71er Baureihe = uni- und bidirektionale Aktoren je nach Produktionszeitraum für Einbaumontage (Zwischendecke)
  • 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

Wie kann ich PEHA-Aktoren anhand Ihrer Modellbezeichnung grob unterscheiden?

  • Easyclick-Unterputzempfänger: unidirektionale Aktoren für Einbaumontage; Modellbezeichnung enthält typischerweise die Buchstaben EP
  • Easyclickpro-Unterputzempfänger: bidirektionale Aktoren für Einbaumontage; Modellbezeichnung enthält die Buchstaben EBI oder EBIM (mit zusätzlicher Energiemessung)

Wo finde ich Angaben zu Jäger Direkt - OPUS GreenNet EnOcean-Geräten?

  • Es handelt sich im Wesentlichen um umgelabelte Produkte anderer Hersteller (Peha, Eltako usw.). Anhand der Gehäuseform lassen sich Rückschlüsse ziehen
  • Angaben zu den "Original"-Produkten können grundsätzlich -soweit bekannt- auf OPUS GreenNet Geräte übertragen werden

Wie ermittele ich die Signalstärke, Signalqualität durch die Anzeige des RSSI/Repeatingcounter?

  • Durch anlegen einer readingsGroup: define TCM_Signal readingsGroup TYPE=EnOcean:+TCM_ESP3_0_RSSI,+TCM_ESP3_0_ReceivingQuality,+TCM_ESP3_0_RepeatingCounter,+TCM_ESP3_0_TIME

Dabei muss TCM_ESP3_0 durch den Devicenamen des eigenen TCMs ersetzt werden!

Wo genau ist der Unterschied zwischen "EEP Manufacturer Specific Applications" und "Inofficial EEP for special devices"?

  • 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.