Mit dem freien Smart-Home System FHEM kann man viel erreichen: Ein großer Vorteil ist aber die Offenheit – so lässt es sich leicht mit eigenen Skripten und Programmen erweitern. Ganz egal, in welcher Programmiersprache sie geschrieben sind, so lange sie auf dem FHEM Rechner gestartet werden können, lassen sie sich auch in FHEM nutzen.
Wir gehen in diesem Beispiel allerdings von einem Linux Rechner wie dem sparsamen Raspberry Pi aus, da es sich hier um Linux-Befehle handelt.
Shell-Befehle mit system() ausführen
Mit dem Befehl lassen sich auch Programme außerhalb von FHEM einbinden: Ganz egal, ob es sich um ein Shell-Skript, ein Python- oder PHP-Programm oder einen normalen Linux-Befehl wie “wget” handelt: über den “system” Befehl lässt sich das Skript oder Programm problemlos in FHEM integrieren:
system("php /var/www/html/programm.php");
oder:
system("sh /home/pi/script.sh");
Der Nachteil ist aber, dass die Ausgabe des Programms direkt in das FHEM Log-File geschrieben wird und dieses unter Umständen stark aufblähen kann: Soll bei einer erkannten Bewegung automatisch mit einem Skript ein Bild von der Webcam per Email verschickt oder per FTP kopiert werden, wird dieses ebenfalls Byte für Byte in das Logfile geschrieben.
Alternative für system() Befehl: qx
Nutzt man statt dem “system()” Befehl dagegen “qx”, kann man genau so alle auf dem Linux-Rechner lauffähigen Programme und Skripte ausführen – sie Ausgabe wird aber nicht mehr in die FHEM Log-Datei geschrieben. Wer trotzdem einen kurzen Hinweis in seinem Logfile möchte, muss diesen daher von Hand ergänzen.
Der Befehl, um ein externes Skript per qx zu starten, sieht so aus:
qx "php /var/www/html/programm.php";
qx "sh /home/pi/script.sh";