FHEM2FHEM – Zwei FHEM Installationen verbinden

Am Anfang wird jeder zunächst mit einer FHEM-Installation arbeiten. Mit der Zeit steigt aber die Zahl an definierten Devices und eingerichteten Gateways. Auch die "Ausbreitung" seines Smart Homes steigt stetig. Am Anfang hat man vielleicht nur sein Wohnzimmer ausgestattet. 

Später kamen weitere Räume und weitere Stockwerke hinzu. Dies führt dazu, dass die eine FHEM-Installation irgendwann an seine Grenze stößt. Sei es aufgrund der eingeschränkten Leistung oder der örtlichen Einschränkungen. Der 433-MHz-Cul reicht zum Beispiel leider nicht in den Keller. 

Genau hier kommt nun das Modul FHEM2FHEM zum Einsatz. Wie der Name schon sagt, lassen sich somit zwei FHEM-Installationen verbinden. In diesem Beitrag möchte ich euch zeigen, wie ihr FHEM2FHEM einrichtet und welche Möglichkeiten sich damit ergeben. 

Funktionsweise

Mit dem Modul "FHEM2FHEM" lassen sich zwei FHEM-Installationen verbinden. Dabei arbeitet eine FHEM-Installation als "Haupt-FHEM" und eine andere FHEM-Installation als "Remote-FHEM". Die Kommunikation dieser beiden Installation kann über zwei Arten erfolgen.

LOG - Auf Events basierte Kommunikation

Beim Betriebsmodus "LOG" werden alle Events so behandelt, als ob sie auch auf dem Haupt-FHEM generiert werden. Ein Event wird somit von beiden FHEM-Installationen empfangen und wahrgenommen. 

Durch die Event-basierte Kommunikation werden auf beiden FHEM-Installationen Log-Einträge angelegt. Es kann ein beliebiges Notify (o.ä.) auf das Event reagieren. Richtet man zudem ein Device mit dem gleichen Namen auf beide FHEM-Installtion ein, so reagieren beide auf entsprechende Events. 

Autocreate-Events werden jedoch nicht an Haupt-FHEM weitergeleitet. 

RAW - Nachrichten unaufbereitet empfangen

Im RAW-Modus werden Device-Nachrichten vom Haupt-FHEM so empfangen, als wäre das Device lokal am Haupt-FHEM eingerichtet, obwohl es am Remote-FHEM angeschlossen ist. Der RAW-Moauds ist vor allem für Gateways nützlich (CUL, FHZ, CM11, SISPM, RFXCOM, TCM, TRX, TUL). So lässt sich ein CUL, welcher am Remote-FHEM angeschlossen ist am Haupt-FHEM benutzt werden. 

Für die RAW-Kommunikation muss das Device als Dummy innerhalb der Haupt-FHEM eingerichtet werden. Mehr dazu weiter unten unter Einrichtung in FHEM.

Vorbereitung

Die Kommunikation der beiden FHEM-Installation läuft über die telnet-Verbindung. Dazu muss auf dem Raspberry die benötigten Pakete installiert werden:

sudo apt-get install libwww-perl

Es kann nun auf jeder Installation ein telnet-Device eingerichtet werden. 

define telnetPort telnet 7072 global

Die telnet-Verbindung läuft somit über Port 7072. 

Einrichtung in FHEM

Die Einrichtung in FHEM wird nun nur noch auf dem Haupt-FHEM erfolgen. Zu nächst wird das eigentliche FHEM2FHEM-Device definiert. Die Syntax der Definition lautet wie folgt:

define <name> FHEM2FHEM <host>[:<portnr>][:SSL] [LOG:regexp|RAW:devicename] {portpassword} 

Als <host> gibt man die IP-Adresse des Remote-FHEM an. Unter <:portnr> wird der Port der telnet-Verbindung angegeben. Der Zusatz <:SSL> muss angegeben werden, wenn eine SSL-Verbindung voraussetzt wird. Anschließend kann der zu verwendene Kommunikations-Modus festgelegt werden. Als letzter Parameter kann das FHEM-Passwort (telnet-Passwort) der Remote-Verbindung mit übergeben werden. 

Um das Einrichten euch verständlich zu erklären, werde ich euch ein paar Beispiele zeigen.

Für die Übersichtlichkeit habe ich die Befehle eingefärbt. Blaue Befehle werden auf dem Remote-FHEM ausgeführt und rote Befehle auf dem Haupt-FHEM.

Device mit gleichem Namen auf beiden Installationen

Ein Möglichkeit FHEM2FHEM zu benutzen ist das Einrichten eines Devices mit dem gleichen Namen auf beiden Installationen einzurichten. 

In diesem Beispiel werde ich ein Wetter-Dummy nehmen, welches ich durch at-Devices mit diversen Wetter-Messwerte beschreibe.

Ausgangslage: Ein Dummy-Devices innerhalb des Remote-FHEMs (192.168.2.101) mit den Readings "Temperatur" und "Luftfeuchtigkeit", welches durch ein at-Device beschrieben wird.

Das Ziel ist es, auf dem Haupt-FHEM (192.168.2.168) ebenfalls ein Dummy zu erstellen, welches die beiden Readings von diesem Dummy übernimmt. 

Dazu wird zunächst das FHEM2FHEM-Device eingerichtet. Dieses wird im Haupt-FHEM definiert.


define RemoteFHEM FHEM2FHEM 192.168.2.101:7072 LOG:.*

Anschließend wird das Dummy definiert, ebenfalls im Haupt-FHEM.


define Wetter dummy

Damit nun auf die Events reagiert wird, wird ein Notify definiert.


define Wetter_notify Wetter {$EVENT=~s/://; fhem("setreading Wetter $EVENT");}

Ändern sich nun die Readings des Dummys innerhalb des Remote-FHEMs, so werden die Readings des Dummys innerhalb des Haupt-FHEMs ebenfalls verändert. 

Optional:

Mit der oben genannten FHEM2FHEM-Definiton werden alle Events an Haupt-FHEM weitergeleitet. Um nur bestimmte Events weiterzuleiten kann man die Definition entsprechend anpassen.

define RemoteFHEM FHEM2FHEM 192.168.2.101:7072 LOG:.*(Luftfeuchtigkeit|Temperatur).*

Mit dieser Definition werden nun nur noch Events, welche von den Readings Luftfeuchtigkeit und Temperatur ausgelöst werden an Haupt-FHEM weitergeleitet. 

Beliebiger Befehl an Haupt-FHEM senden

Eine weitere Möglichkeit FHEM2FHEM zu benutzen, ist das Senden von Befehlen vom Remote-FHEM (192.168.2.101) zum Haupt-FHEM (192.168.2.168). 

Auch hier muss zunächst das FHEM2FHEM-Device im Haupt-FHEM definiert werden. 


define RemoteFHEM FHEM2FHEM 192.168.2.101:7072 LOG:.*

Des Weiteren wird ein Dummy auf dem Remote-FHEM definiert, welches als Bindeglied dient.


define forwardRemote dummy

Auch hier wird wieder ein Notify auf dem Haupt-FHEM benötigt, welches auf die ankommenden Events vom Remote-FHEM reagiert.


define executeRemote notify forwardRemote {fhem "$EVENT"}

Nun kann auf dem Remote-FHEM jeder beliebiger Befehl an das Haupt-FHEM gesendet werden. Dazu wird das state-Reading des definierte Dummy (forwardRemote) auf das zusendende Befehl gesetzt.


set forwardRemote set FL_Licht off

In diesem Fall wird das State-Reading auf "set FL_Licht off" gesetzt. 

Das nun erzeugte Event wird durch das FHEM2FHEM-Device an das Haupt-FHEM gesendet. Das Notify (executeRemote) reagiert auf dieses Event und führt den Befehl aus. 

Gateway-Device am Remote-FHEM für Haupt-FHEM zur Verfügung stellen

Eine weitere Möglichkeit FHEM2FHEM zu verwenden ist die Bereitstellung eines Gateway-Devices am Remote-FHEM für den Haupt-FHEM.

Möglich ist dies mit Gateways, die die Dispatch-Funktion unterstützen. Dies sind zum Beispiel die CUL, FHZ, CM11, SISPM, RFXCOM, TCM, TRX und TUL-Devices. Den nur diese Devices senden RAW-Nachrichten. 

Für jedes Gateway muss ein separates FHEM2FHEM-Device auf dem Haupt-FHEM definiert werden. Zusätzlich muss ein Dummy auf dem Haupt-FHEM eingerichtet werden, des gleichen Typs, welches sozusagen das entfernte Gateway darstellt. Dieses Dummy sollte den selben Namen haben und die selben Attribute besitzen.

Die Syntax der Definition lautet wie folgt:

define <name> FHEM2FHEM <host>[:<portnr>][:SSL] [RAW:devicename] {portpassword} 

Neben dem Kommunikationstyp "RAW" muss der Name des Gateways angegeben werden. Als Beispiel nehme ich meinen JeeLink für die PCA301-Steckdosen. Dieser ist aktuell auf dem Remote-FHEM eingerichtet mit dem Namen "JeeLink"

Auf dem Haupt-FHEM wird nun ein Dummy-JeeLink angelegt, welches später den wirklichen JeeLink spiegeln soll. Das Dummy-Device muss den gleichen Namen wie das Original ("JeeLink") haben und muss auch vom gleichen Typ ("JeeLink") sein.


define JeeLink JeeLink none

Das Dummy-Device ist sozusagen ein normales JeeLink-Device (Typ JeeLink). Es wird nur die Angabe des Ports mit "none" angegeben. Es sollte zudem die gleichen Attribute wie das originale Device besitzen.

Nun kann das FHEM2FHEM-Device definiert werden.


define remoteJeeLink FHEM2FHEM 192.168.2.101 RAW:JeeLink

Der Dummy-JeeLink sollte nun als "opened" angezeigt werden. Normalerweise sollte nun auch die beiden Attribute "dummy" und "flashCommand" gesetzt sein. Ist dies nicht der Fall, müssen diese manuell gesetzt werden.

Mit diesem JeeLink-Dummy auf dem Haupt-FHEM können nun auch die PCA301-Steckdosen definiert werden. Mehr dazu auf meinem Blog-Beitrag zu den PCA301-Steckdosen.

INFO: Intertechno-Steckdosen (IT) funktionieren leider nicht mit FHEM2FHEM.

Mit dem Modul FHEM2FHEM lässt sich somit die Reichweite von Gateways erweitern. Man könnte somit zum Beispiel einen extra Raspberry mit Gateways pro Stockwert einrichten. Aber auch das Auslagern von Leistungsintensiven Aufgaben ist so möglich. Ich hoffe ich konnte euch die Einrichtung verständlich näher bringen.

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
Fotos und Bilder
 
 
 
sonstiges Dateiformat
 
 
 
  Subscribe  
Benachrichtige mich zu: