<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>http://wiki.fhem.de/w/index.php?action=history&amp;feed=atom&amp;title=Fhem.pl</id>
	<title>Fhem.pl - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.fhem.de/w/index.php?action=history&amp;feed=atom&amp;title=Fhem.pl"/>
	<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Fhem.pl&amp;action=history"/>
	<updated>2026-04-05T18:13:19Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in FHEMWiki</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Fhem.pl&amp;diff=27525&amp;oldid=prev</id>
		<title>Beta-User: Erste Version</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Fhem.pl&amp;diff=27525&amp;oldid=prev"/>
		<updated>2018-07-24T13:08:27Z</updated>

		<summary type="html">&lt;p&gt;Erste Version&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Die Datei &amp;#039;&amp;#039;&amp;#039;fhem.pl&amp;#039;&amp;#039;&amp;#039; stellt den eigentlichen Kern jeder Hausautomatisierung mit FHEM dar. Sie enthält den zentralen Perl-Code, der als Programm ausgeführt wird.&lt;br /&gt;
&lt;br /&gt;
== Standardaufruf ==&lt;br /&gt;
In der Regel wird FHEM über einen Aufruf innerhalb der jeweiligen Autostart-Routine des Betriebssystems&amp;lt;ref&amp;gt;z.B. wird FHEM bei neueren Debian-Derivaten mit systemd gestartet&amp;lt;/ref&amp;gt; mit gestartet und läuft dann als eine Art &amp;quot;Schleife&amp;quot; dauerhaft im Hintergrund.&lt;br /&gt;
&lt;br /&gt;
Im Startaufruf muss dabei eine [[Konfiguration|Konfigurationsdatei]]&amp;lt;ref&amp;gt;bzw. die Datenbank, in der die Konfiguration enthalten ist&amp;lt;/ref&amp;gt; mit übergeben werden. Wird FHEM auf diese Weise gestartet, &lt;br /&gt;
* überwacht dieser FHEM-Prozess von den Modulen gesetze Timer, &lt;br /&gt;
* nimmt Daten aus den in der Konfiguration definierten Schnittstellen entgegen, &lt;br /&gt;
* gibt diese an Module weiter,&lt;br /&gt;
* generiert daraus [[Event|Events]]&amp;lt;ref&amp;gt;dabei bestimmt in der Regel das Modul, dem Informationen von fhem.pl übergeben werden, ob und welche Events generiert werden sollen&amp;lt;/ref&amp;gt;,&lt;br /&gt;
* schreibt das zentrale Logfile und &lt;br /&gt;
* verarbeitet die Anweisungen, die die geladenen Module als Reaktion auf Events an fhem.pl zurückgeben.&lt;br /&gt;
&lt;br /&gt;
{{Hinweis|Dieser Prozess läuft streng linear ab, es wird also immer eine Anweisung nach der anderen abgearbeitet. Dauert die Bearbeitung einer Anweisung an fhem.pl länger, hängen solange auch alle anderen Programmabläufe. Manche Module erlauben daher, einen weiteren FHEM-Prozess zu generieren, der dann parallel abgearbeitet wird&amp;lt;ref&amp;gt;Stichworte: fork, non-Blocking&amp;lt;/ref&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
Darüber hinaus stellt &amp;#039;&amp;#039;fhem.pl&amp;#039;&amp;#039; 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..&lt;br /&gt;
&lt;br /&gt;
== Erweiterte Möglichkeiten ==&lt;br /&gt;
Daneben besteht die Möglichkeit, fhem.pl mit dezidierten Anweisungen als &amp;#039;&amp;#039;&amp;#039;zusätzlichen Prozess&amp;#039;&amp;#039;&amp;#039; zu aufzurufen. Dies kann insbesondere nützlich sein, um Daten zwischen FHEM und anderen Anwendungen oder scripten&amp;lt;ref&amp;gt;z.B. shell-scripten, diese Möglichkeit ist aber nicht auf eine bestimmte Scriptsprache beschränkt.&amp;lt;/ref&amp;gt; auszutauschen.&lt;br /&gt;
Dieser Prozess wird dann nach Abarbeitung der Anweisung wieder beendet.&lt;br /&gt;
&lt;br /&gt;
Beispielhaft hat Rudolf König die Vorgehensweise in diesem {{Link2Forum|Topic=88398|Message=808685|LinkText=Forumsbeitrag}} erläutert:&lt;br /&gt;
* Abfrage eines Readings aus einem anderen Perl-Script:&lt;br /&gt;
 my $regenmenge=`perl fhem.pl 7072 &amp;quot;{ReadingsNum(&amp;#039;wetterstation&amp;#039;,&amp;#039;rain&amp;#039;,0)}&amp;quot;`;&lt;br /&gt;
&lt;br /&gt;
* Gerät aus einem shell-Script eine Zeitlang anschalten:&lt;br /&gt;
&lt;br /&gt;
 `perl fhem.pl 7073 &amp;quot;set Pumpe on-for-timer $dauer&amp;quot;`;&lt;br /&gt;
&lt;br /&gt;
* oder ein Event auslosen:&lt;br /&gt;
&lt;br /&gt;
 `perl fhem.pl 7073 &amp;quot;trigger bewaessern giessen_ist_fertig&amp;quot;`;&lt;br /&gt;
&lt;br /&gt;
Mit dieser Methode ist es möglich, Aufgaben auszulagern, die selbst schlafen, blockieren oder lange rechnen können, ohne dabei FHEM zu blockieren.&lt;br /&gt;
&lt;br /&gt;
== Hilfe: Im Log steht eine Fehlermeldung mit &amp;#039;&amp;#039;...fhem.pl...&amp;#039;&amp;#039;  ==&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Sofern eine entsprechende Meldung im FHEM-Log zu finden ist, sollte man versuchen herauszufinden, wer der eigentliche Verursacher war. Hilfsmittel:&lt;br /&gt;
* [[FHEM startet nicht - Tipps zur Fehlersuche]]&lt;br /&gt;
* Setzen des {{Link2CmdRef|Lang=de|Anker=global|Label=globalen Attributs stacktrace}} auf 1.&lt;br /&gt;
&lt;br /&gt;
==Hinweise==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:FHEM]]&lt;br /&gt;
[[Kategorie:Glossary]]&lt;br /&gt;
[[Kategorie:FHEM-Verwendung]]&lt;/div&gt;</summary>
		<author><name>Beta-User</name></author>
	</entry>
</feed>