HomeMatic Peering Beispiele: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
|||
Zeile 1: | Zeile 1: | ||
Dieser Artikel beschreibt wie mit FHEM Homematic Sensoren und Aktoren gepeert werden können. Peering ist nicht mit Pairing | Dieser Artikel beschreibt wie mit FHEM Homematic Sensoren und Aktoren gepeert werden können. Peering ist nicht zu verwechseln mit Pairing, d.h. dem Verknüpfen von Homematic Geräten mit einer Zentrale (wie beispielsweise Fhem). Details zum Pairing findet man [[HomeMatic_Devices_pairen|'''hier''']]. | ||
= Grundlagen = | = Grundlagen = | ||
Beim '''Peering'' (deutsch sinngemäß: Verbindung von Gleichen) handelt es sich um das Verknüpfen von Kanälen (Channels) verschiedender HomeMatic-Geräte, um diese auch ohne Zentrale kommunizieren zu lassen. Nach dem Peering sendet meist ein Sensorkanal (remote, push-button, Bewegungsmelder,...) einen Trigger an einen Aktorkanal des anderen Gerätes. Besonderheiten: | Beim '''Peering'' (deutsch sinngemäß: Verbindung von Gleichen) handelt es sich um das Verknüpfen von Kanälen (Channels) verschiedender HomeMatic-Geräte, um diese auch ohne Zentrale kommunizieren zu lassen. Nach dem Peering sendet meist ein Sensorkanal (remote, push-button, Bewegungsmelder,...) einen Trigger an einen Aktorkanal des anderen Gerätes. | ||
Besonderheiten: | |||
* peeren kann man nur Channels, nicht HomeMatic-Geräte. Die Peer-Listen der verschiedenen Kanäle eines Gerätes sind unabhängig voneinander. | * peeren kann man nur Channels, nicht HomeMatic-Geräte. Die Peer-Listen der verschiedenen Kanäle eines Gerätes sind unabhängig voneinander. | ||
* gepeert werden immer ein oder mehrere Sensorkanäle mit einem oder mehreren Aktorkanälen | * gepeert werden immer ein oder mehrere Sensorkanäle mit einem oder mehreren Aktorkanälen | ||
* der Sensor sendet einen Trigger, evtl. mit einem Zusatzwert. Es ist '''immer''' der Aktorkanal, der festlegt, welche Aktion ergriffen wird. Ein Button kann demnach gleichzeitig ein Einschalter für einen Aktor und ein Ausschalter für einen anderen Aktor sein. | * der Sensor sendet einen Trigger, evtl. mit einem Zusatzwert. Es ist '''immer''' der Aktorkanal, der festlegt, welche Aktion ergriffen wird. Ein Button kann demnach gleichzeitig ein Einschalter für einen Aktor und ein Ausschalter für einen anderen Aktor sein. | ||
Achtung: Das in vielen mitgelieferten HomeMatic-Anleitungen beschriebene Peering von Kanälen ohne Zentrale funktioniert nur, wenn keines der beiden Geräte gepairt ist. Im Folgenden gehen wir davon aus, dass beide Geräte bereits mit einer Homematic-Zentrale (z.B. Fhem) [[HomeMatic_Devices_pairen|gepairt]] sind. | |||
Die Syntax des Befehls zum Peering ist | |||
set <sensChan> peerChan 0 <actChan> [single|dual] [set|unset] | |||
wobei "<sensChan>" der Name des Sensorkanals und "<actChan>" der Name des Aktorkanals ist. | |||
Das Kommando unterliegt den allgemeinen [[HomeMatic#Kommunikation|Regeln]]. Es wirkt auf zwei Geräte gleichzeitig, beide sollten deshalb beobachtet werden. | |||
== Peering manuell == | |||
Insbesondere zur wiederherstellung gesicherter Konfigurationen, nicht aber zru normalen Nutzung ist das Kommando | |||
set <sensChan> peerBulk <peer1,peer2,...> | |||
gedacht. Hiermit kann man eine Liste von Peers en-block in ein Device schreiben. Die Gegenstelle und die Kommunikation der Beiden wird nicht berücksichtigt. | |||
==Sensoren == | ==Sensoren == | ||
Zeile 15: | Zeile 29: | ||
==Aktoren== | ==Aktoren== | ||
Ist ein Sensorkanal mit | Ist ein Sensorkanal mit einem Aktorkanal gepeert, muss im Aktorkanal eingestellt werden, welche Trigger gültig sind und welche Aktionen ergriffen werden sollen. Im Channel wird ein Satz Register angelegt, die als Reading mit '''R-<peername>...''' zusammengefasst sind. Meist sind 2 Gruppen je Peer vorhanden, eine für langen '''lg''' und eine für kurzen '''sh''' Tastendruck. Die Register für long und short sind deckungsgleich, bis auf das Register multiExec in der Gruppe long. | ||
Für das Setzen des Wertes im Aktorkanal gilt die Syntax | |||
set <actChan> regSet <register> <value> <peerId> | |||
===Condition Table=== | ===Condition Table=== | ||
Mit den Registern der Condition Table '''CT''' kann man Trigger filtern. So sendet beispielsweise ein Fensterkontakt einen Trigger mit einem Zusatzwert open=200 oder closed=0. Die CT hat 2 Vergleichswerte, '''Hi''' und '''Lo'''. Der Zusatzwert des Triggers wird entsprechend des Einträgen in der CT verglichen. Ist der Schalter z.B. an, dann wird auf den Eintrag in '''CTon''' genutzt. Steht dort '''geLo''' wird gprüft, ob der Zusatzwert des triggers grösser oder gleich dem Lo-Wert ist. Ist dies nicht der Fall, wird keine Aktion ausgeführt. | Mit den Registern der Condition Table '''CT''' kann man Trigger filtern. So sendet beispielsweise ein Fensterkontakt einen Trigger mit einem Zusatzwert open=200 oder closed=0. Die CT hat 2 Vergleichswerte, '''Hi''' und '''Lo'''. Der Zusatzwert des Triggers wird entsprechend des Einträgen in der CT verglichen. Ist der Schalter z.B. an, dann wird auf den Eintrag in '''CTon''' genutzt. Steht dort '''geLo''' wird gprüft, ob der Zusatzwert des triggers grösser oder gleich dem Lo-Wert ist. Ist dies nicht der Fall, wird keine Aktion ausgeführt. | ||
Zeile 33: | Zeile 50: | ||
set <device> regSet intKeysVisib visib | set <device> regSet intKeysVisib visib | ||
sichtbar und einstelllbar gemacht werden. | sichtbar und einstelllbar gemacht werden. | ||
== | ==Virtuelle Entities== | ||
Soll ein Aktorkanal nur eine Aktion in Fhem auslösen, muss er dort mit einer <u>[[HomeMatic#Virtuelle_Entities|virtuelle Entität]]</u> gepeert werden. Das Peering erfolgt wie bei realen Homematic-Geräten. Achtung: da diese virtuellen Peers nicht in einem realen Gerät gespeichert werden, ist nach der Definition ein '''Save config''' nötig. | |||
==IO Entities== | ==IO Entities== | ||
<u>[[HomeMatic#IO_Entities|IO Entities]]</u> kann man peeren. Hierzu ist das Kommando peerIODev zu nutzen. Siehe unten. | <u>[[HomeMatic#IO_Entities|IO Entities]]</u> kann man peeren. Hierzu ist das Kommando peerIODev zu nutzen. Siehe unten. | ||
= Beispiele= | = Beispiele= | ||
== Peering der Kanäle einer Fernbedienung mit einem Aktor == | == Peering der Kanäle einer Fernbedienung mit einem Aktor == | ||
Dabei muss beachtet werden, dass auf den Fernbedienungen immer zwei Buttons zusammengehören, also z.B. lock/unlock, open/light oder Btn01/Btn02, Btn03/Btn04. Achtung: Für ein erfolgreiches Peering muss ggf. auf der Fernbedienung die Anlerntaste gedrückt werden. | Dabei muss beachtet werden, dass auf den Fernbedienungen immer zwei Buttons zusammengehören, also z.B. lock/unlock, open/light oder Btn01/Btn02, Btn03/Btn04. Achtung: Für ein erfolgreiches Peering muss ggf. auf der Fernbedienung die Anlerntaste gedrückt werden. | ||
Zeile 69: | Zeile 78: | ||
wobei <IO> der Namen des IO device ist und <btn> die Nummer des virtuellen Kanals. Kanäle von 1 bis 50 sind zulässig. | wobei <IO> der Namen des IO device ist und <btn> die Nummer des virtuellen Kanals. Kanäle von 1 bis 50 sind zulässig. | ||
<name> sollte ein Aktor sein, kein Sensor. | <name> sollte ein Aktor sein, kein Sensor. | ||
Version vom 25. Januar 2015, 09:00 Uhr
Dieser Artikel beschreibt wie mit FHEM Homematic Sensoren und Aktoren gepeert werden können. Peering ist nicht zu verwechseln mit Pairing, d.h. dem Verknüpfen von Homematic Geräten mit einer Zentrale (wie beispielsweise Fhem). Details zum Pairing findet man hier.
Grundlagen
Beim 'Peering (deutsch sinngemäß: Verbindung von Gleichen) handelt es sich um das Verknüpfen von Kanälen (Channels) verschiedender HomeMatic-Geräte, um diese auch ohne Zentrale kommunizieren zu lassen. Nach dem Peering sendet meist ein Sensorkanal (remote, push-button, Bewegungsmelder,...) einen Trigger an einen Aktorkanal des anderen Gerätes. Besonderheiten:
- peeren kann man nur Channels, nicht HomeMatic-Geräte. Die Peer-Listen der verschiedenen Kanäle eines Gerätes sind unabhängig voneinander.
- gepeert werden immer ein oder mehrere Sensorkanäle mit einem oder mehreren Aktorkanälen
- der Sensor sendet einen Trigger, evtl. mit einem Zusatzwert. Es ist immer der Aktorkanal, der festlegt, welche Aktion ergriffen wird. Ein Button kann demnach gleichzeitig ein Einschalter für einen Aktor und ein Ausschalter für einen anderen Aktor sein.
Achtung: Das in vielen mitgelieferten HomeMatic-Anleitungen beschriebene Peering von Kanälen ohne Zentrale funktioniert nur, wenn keines der beiden Geräte gepairt ist. Im Folgenden gehen wir davon aus, dass beide Geräte bereits mit einer Homematic-Zentrale (z.B. Fhem) gepairt sind.
Die Syntax des Befehls zum Peering ist
set <sensChan> peerChan 0 <actChan> [single|dual] [set|unset]
wobei "<sensChan>" der Name des Sensorkanals und "<actChan>" der Name des Aktorkanals ist.
Das Kommando unterliegt den allgemeinen Regeln. Es wirkt auf zwei Geräte gleichzeitig, beide sollten deshalb beobachtet werden.
Peering manuell
Insbesondere zur wiederherstellung gesicherter Konfigurationen, nicht aber zru normalen Nutzung ist das Kommando
set <sensChan> peerBulk <peer1,peer2,...>
gedacht. Hiermit kann man eine Liste von Peers en-block in ein Device schreiben. Die Gegenstelle und die Kommunikation der Beiden wird nicht berücksichtigt.
Sensoren
Ist ein Sensorkanal mit einem Aktorkanal gepeert, gibt es meist nur wenig mögliche Einstellungen. Wichtige Beispiele sind
- Notwendigkeit, den Peer mit einem burst aufzuwecken (Register peerNeedsBurst).
- Erwartung von AES-Verschlüsselung/Authentifizierung (Register expectAES).
LED
Ein ungepeerter Sensorkanal signalisiert einen Tastendruck meist mit gelber LED. Ist der Kanal gepeert, wird mit einer grünen LED signalisiert, dass ALLE Peers den Empfang des Triggers bestätigt (d.h. "ACK" gesendet) haben. Sollten nicht alle Peers eine Bestätigung senden, wird mit einer rot LED quittiert.
Aktoren
Ist ein Sensorkanal mit einem Aktorkanal gepeert, muss im Aktorkanal eingestellt werden, welche Trigger gültig sind und welche Aktionen ergriffen werden sollen. Im Channel wird ein Satz Register angelegt, die als Reading mit R-<peername>... zusammengefasst sind. Meist sind 2 Gruppen je Peer vorhanden, eine für langen lg und eine für kurzen sh Tastendruck. Die Register für long und short sind deckungsgleich, bis auf das Register multiExec in der Gruppe long.
Für das Setzen des Wertes im Aktorkanal gilt die Syntax
set <actChan> regSet <register> <value> <peerId>
Condition Table
Mit den Registern der Condition Table CT kann man Trigger filtern. So sendet beispielsweise ein Fensterkontakt einen Trigger mit einem Zusatzwert open=200 oder closed=0. Die CT hat 2 Vergleichswerte, Hi und Lo. Der Zusatzwert des Triggers wird entsprechend des Einträgen in der CT verglichen. Ist der Schalter z.B. an, dann wird auf den Eintrag in CTon genutzt. Steht dort geLo wird gprüft, ob der Zusatzwert des triggers grösser oder gleich dem Lo-Wert ist. Ist dies nicht der Fall, wird keine Aktion ausgeführt. Register zur Condition Table sind:
CtDlyOff | literal | Jmp on condition from delayOff options:geLo,between,outside,ltLo,geHi,ltHi CtDlyOn | literal | Jmp on condition from delayOn options:geLo,between,outside,ltLo,geHi,ltHi CtOff | literal | Jmp on condition from off options:geLo,between,outside,ltLo,geHi,ltHi CtOn | literal | Jmp on condition from on options:geLo,between,outside,ltLo,geHi,ltHi CtValHi |0 to 255 | Condition value high for CT table CtValLo |0 to 255 | Condition value low for CT table
Remotes liefern keinen Zusatzwert. Die Conditon Table wird nicht genutzt.
Jump Table
In der Jump Table wird zusammen mit ActionType festgelegt, welche Aktion ein gültiger Trigger ausführen soll. Die Aktion ist vom Gerät abhängig.
Interne Peers
Aktoren können eingebaute oder direkt angeschlossene Taster oder Tasteneingänge haben, die auch als Peers verarbeitet werden. Normalerweise sind diese nicht sichtbar, sie können aber durch Absetzen des Befehls
set <device> regSet intKeysVisib visib
sichtbar und einstelllbar gemacht werden.
Virtuelle Entities
Soll ein Aktorkanal nur eine Aktion in Fhem auslösen, muss er dort mit einer virtuelle Entität gepeert werden. Das Peering erfolgt wie bei realen Homematic-Geräten. Achtung: da diese virtuellen Peers nicht in einem realen Gerät gespeichert werden, ist nach der Definition ein Save config nötig.
IO Entities
IO Entities kann man peeren. Hierzu ist das Kommando peerIODev zu nutzen. Siehe unten.
Beispiele
Peering der Kanäle einer Fernbedienung mit einem Aktor
Dabei muss beachtet werden, dass auf den Fernbedienungen immer zwei Buttons zusammengehören, also z.B. lock/unlock, open/light oder Btn01/Btn02, Btn03/Btn04. Achtung: Für ein erfolgreiches Peering muss ggf. auf der Fernbedienung die Anlerntaste gedrückt werden.
Bei einem "dual" Peering werden die beiden zusammengehörenden Kanäle der Fernbedienung mit einem Aktorkanal gepeert - einer der Buttons wirkt dann als "on", der andere als "off"-Schalter.
set fb_Btn03 peerChan 0 blind
peert die Buttons Btn03 und Btn04 mit dem Aktorkanal blind
Bei einem "single" Peering wird nur einer der beiden Kanäle der Fernbedienung mit einem Aktorkanal gepeert - als Aktion wird dann im Aktorkanal ein "toggle" eingetragen.
set fb_Btn07 peerChan 0 blind single
peert nur den Button Btn07 mit dem Aktorkanal blind
Das Unpeering, also das Löschen einer Paarung, erfolgt z.B. durch den Befehl
set fb_Btn07 peerChan 0 blind single unset
Peering von IO Entities
set <name> peerIODev <IO> <btn> [set|unset] set <name> peerIODev HMLAN1 5 set <name> peerIODev HMLAN1 7 unset
wobei <IO> der Namen des IO device ist und <btn> die Nummer des virtuellen Kanals. Kanäle von 1 bis 50 sind zulässig. <name> sollte ein Aktor sein, kein Sensor.