Mit dem Modul “RFHEM” ist es möglich, eine zweite FHEM Installation zu steuern: Alle “set” Befehle, wie zum Beispiel “set Lampe on”, lassen sich so von einer FHEM Installation an eine zweite Senden und diese so fernsteuern. Das kann praktisch sein, wenn in jedem Stockwerk ein Raspberry mit FHEM und verschiedenen Sensoren und Aktoren läuft, die aber trotzdem miteinander kommunizieren sollen: So kann zum Beispiel FHEM auf dem Raspberry Pi im Keller das Licht im Erdgeschoss über den FHEM-Server dort einschalten, wenn der Bewegungsmelder auf der Treppe eine Bewegung erkennt.
Anders als bei FHEM2FHEM werden so nicht nur Werte und Daten von Sensoren oder Geräten von einer FHEM Installation zur nächsten Übertragen (zum Beispiel die Temperatur-Werte), sondern man kann aktiv einen Schaltbefehl absetzen. Eine Alternative zu RFHEM, die aber etwas langsamer ist und mehr Einträge im Log-File hinterlässt, wäre das direkte Aufrufen der anderen FHEM Instanz per wget oder curl.
Der Vorteil von RFHEM ist, dass die Befehle direkt an den zweiten FHEM Server geschickt und ohne Verzögerung ausgeführt werden – ganz so, als hätte man sie dort direkt eingegeben – und anders als per wget oder curl abgegebene Befehle blockieren sie das System auch nicht.
RFHEM: Steuerung des 2. FHEM-Servers einrichten
Zur Steuerung einer zweiten FHEM Instanz braucht man nur zwei Zeilen: Die erste definiert die Verbindung zum zweiten FHEM Server, die andere setzt dann bei bestimmten Ereignissen die Befehle ab. Um auf die zweite FHEM Instanz zuzugreifen, braucht man deren IP-Adresse, außerdem muss dort Telnet aktiviert sein (das braucht man aber schon für FHEM2FHEM).
define RemoteFHEM RFHEM 192.168.1.102
Die erste Angabe “RemoteFHEM” ist der Name des neuen Devices, den man selber frei wählen kann, der zweite Wert “RFHEM” ist das Modul – anschließend folgt die IP Adresse des zweiten FHEM Rechners.
Läuft Telnet nicht auf dem Standard-Port 7072, kann man den Port ebenfalls angeben:
define RemoteFHEM RFHEM 192.168.1.102:7073
Und wenn Telnet nur mit Passwort zugänglich ist, kann man dieses ebenfalls angeben:
define RemoteFHEM RFHEM 192.168.1.102:7073 passwort
Um jetzt einen Befehl an den Rechner “RemoteFHEM” zu senden, reicht dieser Befehl:
set RemoteFHEM cmd set Lampe on
Zunächst teilt man FHEM mit, dass man dem Device “RemoteFHEM” einen Befehl senden möchte, anschließend folgt mit dem Wort “cmd” das entsprechende Kommando, das an den anderen Rechner geschickt wird – außer “set Lampe on” geht natürlich auch “set Lampe off” oder “set Lampe on-for-timer 15”: Alle Befehle und angemeldeten Geräte, die sich auch so in FHEM nutzen lassen, stehen auch mit RFHEM zur Verfügung.
Probleme mit RFHEM und FHEM
Fällt ein Netzwerk-Gerät aus, an dass Befehle per RFHEM geschickt werden sollen, kann dies das gesamte Hauptsystem blockieren und dessen Reaktionsgeschwindigkeit beeinflussen. Im Logfile findet man dann unter Umständen diese Fehlermeldung:
Can’t use an undefined value as a symbol reference at ./FHEM/93_RFHEM.pm line 86.
Hier gibt es für RFHEM leider selbst keine Lösung – daher ist das Modul nur dann geeignet, wenn die anderen FHEM-Server immer und sicher erreichbar sind.