Fhem.pl
Die Datei fhem.pl stellt den eigentlichen Kern jeder Hausautomatisierung mit FHEM dar. Sie enthält den zentralen Perl-Code, der als Programm ausgeführt wird.
Standardaufruf
In der Regel wird FHEM über einen Aufruf innerhalb der jeweiligen Autostart-Routine des Betriebssystems[1] mit gestartet und läuft dann als eine Art "Schleife" dauerhaft im Hintergrund.
Im Startaufruf muss dabei eine Konfigurationsdatei[2] mit übergeben werden. Wird FHEM auf diese Weise gestartet,
- überwacht dieser FHEM-Prozess von den Modulen gesetze Timer,
- nimmt Daten aus den in der Konfiguration definierten Schnittstellen entgegen,
- gibt diese an Module weiter,
- generiert daraus Events[3],
- schreibt das zentrale Logfile und
- verarbeitet die Anweisungen, die die geladenen Module als Reaktion auf Events an fhem.pl zurückgeben.
Darüber hinaus stellt fhem.pl allen Modulen eine Reihe von Standardfunktionen zur Verfügung, um z.B. Readings zu aktualisieren oder abzufragen, Timer zu setzen oder zu löschen usw..
Erweiterte Möglichkeiten
Daneben besteht die Möglichkeit, fhem.pl mit dezidierten Anweisungen als zusätzlichen Prozess zu aufzurufen. Dies kann insbesondere nützlich sein, um Daten zwischen FHEM und anderen Anwendungen oder scripten[5] auszutauschen. Dieser Prozess wird dann nach Abarbeitung der Anweisung wieder beendet.
Beispielhaft hat Rudolf König die Vorgehensweise in diesem Forumsbeitrag erläutert:
- Abfrage eines Readings aus einem anderen Perl-Script:
my $regenmenge=`perl fhem.pl 7072 "{ReadingsNum('wetterstation','rain',0)}"`;
- Gerät aus einem shell-Script eine Zeitlang anschalten:
`perl fhem.pl 7073 "set Pumpe on-for-timer $dauer"`;
- oder ein Event auslosen:
`perl fhem.pl 7073 "trigger bewaessern giessen_ist_fertig"`;
Mit dieser Methode ist es möglich, Aufgaben auszulagern, die selbst schlafen, blockieren oder lange rechnen können, ohne dabei FHEM zu blockieren.
Hilfe: Im Log steht eine Fehlermeldung mit ...fhem.pl...
Da fhem.pl viele Funktionen für alle Module bereitstellt, finden sich auch bei Problemen häufig Fehlermeldungen, die scheinbar von fhem.pl verursacht sind, die aber eigentlich aus den Modulen kommen.
Sofern eine entsprechende Meldung im FHEM-Log zu finden ist, sollte man versuchen herauszufinden, wer der eigentliche Verursacher war. Hilfsmittel:
- FHEM startet nicht - Tipps zur Fehlersuche
- Setzen des globalen Attributs stacktrace auf 1.
Hinweise
- ↑ z.B. wird FHEM bei neueren Debian-Derivaten mit systemd gestartet
- ↑ bzw. die Datenbank, in der die Konfiguration enthalten ist
- ↑ dabei bestimmt in der Regel das Modul, dem Informationen von fhem.pl übergeben werden, ob und welche Events generiert werden sollen
- ↑ Stichworte: fork, non-Blocking
- ↑ z.B. shell-scripten, diese Möglichkeit ist aber nicht auf eine bestimmte Scriptsprache beschränkt.