Quick-Start: Unterschied zwischen den Versionen

Aus FHEMWiki
K (veraltete "source"-Angaben in "syntaxhighlight" geändert)
 
(83 dazwischenliegende Versionen von 6 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
{{Hinweis|An english version of this document is available [[Quick-Start/en|here]]}}
==Installation==
==Installation==
Zunächst installieren Sie FHEM auf der von Ihnen bevorzugten Hardware (oder virtuellen Maschine). Sie finden dazu Erklärungen für die unterschiedlichsten Betriebssysteme [https://fhem.de/#Installation hier].
{{Randnotiz|RNTyp=b|RNText=Bei einer Standard-Installation unter Linux befinden sich - mit Ausnahme des für den automatischen Start erforderlichen Scripts - alle Dateien, die FHEM für den Betrieb benötigt oder anlegt im Verzeichnis <code>/opt/fhem</code> sowie den darin befindlichen Unterverzeichnissen. Denken Sie daher rechtzeitig daran, Sicherheitskopien des Verzeichnisses anzufertigen.}}Nach dem ersten Start von FHEM sehen die Einträge im FHEM-Logfile des Log-Verzeichnisses<ref>Dieses befindet sich häufig unter /opt/fhem/log</ref><ref>Hier wie im Folgenden wird davon ausgegangen, dass Sie FHEM auf einem Server mit einem Linux-Betriebssystem betreiben, sofern nicht ausdrücklich etwas anderes angegeben ist</ref> zum Beispiel wie folgt aus:


Zunächst installieren Sie FHEM auf der von Ihnen bevorzugten Hardware (oder virtuellen Maschine). Sie finden dazu Erklärungen für die unterschiedlichsten Betriebssysteme [https://fhem.de/#Installation hier].
<syntaxhighlight lang="text">
2018.03.09 09:17:51 1: Including fhem.cfg
2018.03.09 09:17:51 3: telnetPort: port 7072 opened
2018.03.09 09:17:51 3: WEB: port 8083 opened
2018.03.09 09:17:51 3: WEBphone: port 8084 opened
2018.03.09 09:17:51 3: WEBtablet: port 8085 opened
2018.03.09 09:17:51 2: eventTypes: loaded 0 events from ./log/eventTypes.txt
2018.03.09 09:17:51 1: usb create starting
2018.03.09 09:17:51 3: [...]
2018.03.09 09:17:51 1: usb create end
2018.03.09 09:17:51 0: Featurelevel: 5.8
2018.03.09 09:17:51 0: Server started with 9 defined entities (fhem.pl:16349/2018-03-07 perl:5.024001 os:linux user:fhem pid:9341)
</syntaxhighlight>


<!-- Der Hinweis auf den automatische Start wäre dann in der jeweiligen Installationsanleitung besser aufgehoben -->
==Erster Aufruf von FHEM==
<!--
Beim ersten Start ist FHEM über ein Webinterface ({{Link2CmdRef|Anker=FHEMWEB|Lang=de|Label=FHEMWEB}}) erreichbar. Die URL hierfür lautet '''http://<fhem-server>:8083/fhem'''.
{{Randnotiz|RNTyp=g|RNText=Bei Installation über ein Debian-Paket erfolgt der Start von FHEM automatisch mit jedem Start des Betriebssystems.}}
{{Hinweis|Für spezielle Zwecke oder Nutzergruppen können weitere FHEMWEB-Geräte definiert werden. Dies bietet sich an, wenn man einen anderen Style als den Standard-Style f18 zusammen mit kleineren Bildschirmgrößen verwendet oder Zugänge für bestimmte Nutzergruppen mit reduziertem Funktionsumfang bereitstellen will. Daneben kann man eine [[Telnet|telnet]]-Schnittstelle<ref>Da diese das System nur gering belastet, kann darüber FHEM auch noch in Situationen erreicht und gesteuert werden, in denen FHEMWEB nicht mehr funktioniert.</ref> definieren.}}
-->
Nach dem ersten Start von FHEM sehen die Einträge im FHEM-Logfile des Log-Verzeichnisses (<span style="color:green;">Beispielpfad angeben?</span>) wie folgt aus:


    2012.10.27 17:14:28 1: Including fhem.cfg
<gallery>
    2012.10.27 17:14:28 3: WEB: port 8083 opened
datei:ErsteSchritteInFhem01.png|Die Startseite direkt nach der Installation auf einem Desktop
    2012.10.27 17:14:28 3: WEBphone: port 8084 opened
datei:erster_aufruf_smartphone.png|Der erste Aufruf von FHEM auf einem Smartphone
    2012.10.27 17:14:28 3: WEBtablet: port 8085 opened
</gallery>
    2012.10.27 17:14:28 1: Including /tmp/fhem.save
    2012.10.27 17:14:28 3: telnetPort: port 7072 opened
    2012.10.27 17:14:28 1: usb create starting
    2012.10.27 17:14:28 1: usb create end
    2012.10.27 17:14:28 2: SecurityCheck:  ...
    2012.10.27 17:14:28 0: Server started (version Fhem 5.8 ...


<s>Die Sicherheits-Warnung (''SecurityCheck: ...'') sagt Ihnen, dass einige der FHEM-Webseiten ohne die Eingabe eines Passwortes geöffnet worden sind. Sie sollten entweder mindestens ein allowed-Device definieren, wie weiter unten angegeben, oder das globale Attribut ''motd'' setzen um diese Meldung zu unterdrücken wenn Sie ganz sicher sind, dass keine Sicherheitsmaßnahmen zur Absicherung Ihrer Installation erforderlich sind.</s>
<span style="color:green;">Den Absatz eventuell gleich unter Sicherheit?</span>


==Kontakt zu FHEM aufnehmen==
;Das Web-Interface kurz erklärt:
Für die weitere Konfiguration von FHEM können Sie entweder die telnet-Schnittstelle nutzen, oder Sie verbinden Sie sich mit FHEM, indem Sie im Internet-Browser bei Verwendung eines normalen Desktop-Rechners http://fhem-host:8083/fhem eingeben. Für Geräte mit kleineren Bildschirmen wie Smartphones können Sie http://fhem-host:8084/fhem aufrufen, bzw. http://fhem-host:8085/fhem bei Verwendung eines Tablets oder iPads.
*Am oberen Bildschirmrand befindet sich ein Kommandofeld. In diesem können Befehle eingegeben werden, die FHEM nach Eingabe der {{Taste|Enter}}-Taste ausführt
*Links daneben befindet sich ein Symbol (+), über das Sie ein Eingabefeld für den [[Import von Code Snippets|Import von RAW-Code]] erreichen können
*Mit dem ersten Menüpunkt links - ''Save config'' - können Änderungen gespeichert werden. Erst dann werden werden diese in die Konfigurationsdatei geschrieben und sind somit auch noch nach einem Neustart von FHEM vorhanden. Ungespeicherte Änderungen signalisiert FHEM durch ein ''?'' neben dem Menüpunkt
*Im nächsten Abschnitt links werden alle vorhandenen Räume aufgelistet. Zu Beginn sind das nur die Räume ''Unsorted'' und ''Everything''. Weitere Räume können natürlich später angelegt werden
*Im - vorläufig - letzten Abschnitt auf der linken Seite sind einige nützliche Links untergebracht


==Absicherung der FHEM-Serverkomponente==
==Absicherung der FHEM-Serverkomponente==
In der Grundkonfiguration kann jeder, der sich in dem selben Netzwerk wie der FHEM-Server befindet, unverschlüsselt und ohne der Eingabe von Benutzerdaten auf FHEM zugreifen. FHEM weist mit einer Sicherheitswarnung auf diesen Umstand hin.
Um die Installation abzusichern, bieten sich mehrere empfohlene Optionen an.


===allowed und SSL===
===allowed und SSL===
Beide TCP/IP-Schnittstellen in FHEM (telnet und FHEMWEB) können mit einem Passwort und zusätzlich mit Verschlüsselung (HTTPS/SSL) gesichert werden.
Mit diesen Einstellungen können beide Konfigurations-Möglichkeiten in FHEM (telnet und Webinterface) mit einem Passwort und einer Transport-Verschlüsselung (HTTPS/SSL) abgesichert werden.
Definieren Sie dazu zunächst ein oder mehrere allowed-Geräte. Die Anleitung dazu finden Sie in der commandref (https://fhem.de/commandref_DE.html#allowed), oder indem Sie in der Kommandozeile der Web-Schnittstelle "help allowed" eingeben.
 
Zusätzlich können Sie für FHEMWEB HTTPS Attribute festlegen, für telnet (welches mehr oder weniger ein TCP/IP Port ist) benutzen Sie das SSL Attribut. Anleitungen hierzu sind ebenfalls in der commandref zu finden.  
{{Randnotiz|RNTyp=b|RNText=Sie erhalten für alle FHEM-Befehle die jeweilige Syntax und weitere Informationen, wenn Sie <code>help <Befehl></code> in der Kommandozeile eingeben.}}
Dazu müssen zunächst ein oder mehrere ''allowed''-'''[[Gerät|Geräte]]'''<ref>Geräte werden in FHEM oft als "'''Device'''" bezeichnet. Allerdings wird der Begriff "[[Device]]" oder "[[Gerät]]" im FHEM-Kontext etwas weiter verstanden. Dies kann, muß aber nicht zwingend ein physisches Gerät sein. Als "Device" wird schlicht alles bezeichnet, für das eine "define ..."-Anweisung existiert bzw. eingegeben wurde/wird/werden kann.</ref> definiert werden. Die Anleitung dazu findet sich in der {{Link2CmdRef|Anker=allowed|Lang=de|Label=CommandRef}} oder indem in der FHEM-Kommandozeile der Web-Schnittstelle <code>help allowed</code> eingeben wird.


Das ist jedoch nicht der Standard für die meisten Konfigurationen und es ist der Grund weshalb Sie eine Sicherheitswarnung nach der Installation erhalten.
Ist keine allowed-Instanz definiert, sind Zugriffe auf FHEM nur innerhalb desselben Netzwerks möglich.
Ist keine allowed-Instanz definiert, sind Zugriffe auf FHEM nur innerhalb desselben Netzwerks möglich.
{{Randnotiz|RNTyp=b|RNText=Hier wie im Folgenden und in vielen Beispielen, die in der Dokumentation zu finden sind, findet sich die Schreibweise <code><Befehl> <Parameter></code>. Dies ist so zu verstehen, dass die Angaben in der Klammer jeweils einschließlich der <>-Zeichen durch eine sinnvolle eigene Angabe zu ersetzen sind.}}
Zusätzlich kann für [[FHEMWEB]] mithilfe des [[Attribut|Attributes]] {{Link2CmdRef|Anker=HTTPS|Lang=de|Label=HTTPS}} eine HTTPS-Verbindung aktiviert werden. Für telnet (welches mehr oder weniger ein TCP/IP Port ist) wird das [[Attribut]]<ref>Weitere Informationen zu den hier verwendeten FHEM-spezifischen Begriffen finden Sie im [[:Kategorie:Glossary|Glossar]]</ref> {{Link2CmdRef|Anker=SSL|Lang=de|Label=SSL}} verwendet.
Standardmäßig ist keine dieser Einstellungen gesetzt. Um die deshalb erscheinenden Sicherheitswarnungen zu deaktivieren, kann das globale Attribut {{Link2CmdRef|Anker=motd|Lang=de|Label=motd}} verwendet werden.


===FHEM und das Internet===
===FHEM und das Internet===
Sofern Ihr Server nicht nur aus dem lokalen Netz erreichbar sein soll, sollten Sie zusätzliche Sicherheitsmaßnahmen ergreifen. Der sicherste Weg, einen gesicherten Zugriff von Aussen auf FHEM zu erhalten, ist es eine VPN-Verbindung zu verwenden. Die Verbindung z.B. zu einer FRITZ!Box mittels VPN funktioniert sowohl für Geräte mit iOS als auch mit Android Betriebssystemen.
Sofern FHEM nicht nur aus dem lokalen Netz erreichbar sein soll, sollten zusätzliche Sicherheitsmaßnahmen ergriffen werden. Mögliche Optionen dafür sind die Verwendung eines VPNs (Virtual Private Network) und/oder eines Reverse-Proxy-Servers mit z.B. [[Apache_Authentication_Proxy|Apache]] oder [[HTTPS-Absicherung_%26_Authentifizierung_via_nginx_Webserver|nginx]].
Alternativ können Sie FHEM auch durch Nutzung eines ReverseProxy-Servers wie z.B. eines Apache-Servers schützen.


===Weitere Sicherheitshinweise===
===Weitere Sicherheitshinweise===
Beachten Sie, dass nicht nur die Software auf Ihrem Server stets aktuell gehalten werden muß, sondern auch die von Ihnen verwendeten Komponenten maßgeblich dazu beitragen, wie sicher Ihre Hausautomatisierung insgesamt ist.
Beachten Sie, dass nicht nur die Software auf Ihrem Server stets aktuell gehalten werden muss, sondern auch die von Ihnen verwendeten Komponenten maßgeblich dazu beitragen, wie sicher Ihre Hausautomatisierung insgesamt ist.


==Schnittstellen zur realen Wel==
Um Informationen über Ereignisse oder Zustände in der realten Welt zu erhalten, muß Ihr Server mit der Außenwelt verbunden werden. Dies geschieht häufig über USB-Geräte.


{{Randnotiz|RNTyp=g|RNText=Wenn Sie dieses Modul benötigen, können Sie es mit dem Kommando sudo cpan Device::SerialPort nachträglich installieren. Es gibt aber auch schon bereits vorkompilierte Debian-Pakete (libdevice-serialport-perl) und im OSX 10.5 ist das Paket auch bereits enthalten. Wenn Sie das Paket nicht installieren können, dann schauen Sie sich die @directio-Option auf der commandref.html-Seite als mögliche Informationsquelle an.}}Viele FHEM-Installationen verbinden die Außenwelt über ein USB-Gerät  welches mit dem FHEM-Rechner verbunden ist (diese Geräte sind z.B. CUL, FHZ1x00, TUL, EUL etc). Diese Installationen benötigen die Perl serial-Module. In dem commandref-Abschnitt des jeweiligen USB-Gerätes sehen Sie, ob das entsprechende Modul benötigt wird. Das gilt ensprechend, wenn Sie Geräte über die serielle Schnittstelle einbinden möchten, die an den GPIO-Schnittstellen eines Raspberry Pi verfügbar sind. Sie benötigen dieses Modul nicht, wenn das Gerät über Ethernet angeschlossen wird (z.B. HM-LAN oder CUNO).  
==Schnittstellen zur realen Welt==
{{Randnotiz|RNTyp=b|RNText=Sofern Sie an dieser Stelle keine konkreten Geräte haben, die Sie in Ihr FHEM einbinden wollen, können Sie mit Hilfe der [[Erste Schritte in FHEM|ersten Schritte in FHEM]] einen Eindruck gewinnen, wie Geräte in FHEM eingerichtet werden.}}Um Informationen über Ereignisse oder Zustände in der realen Welt zu erhalten, muss FHEM mit der Außenwelt verbunden werden.  


Schließen Sie dann eventuell vorhandene USB-Geräte an den PC an (CUL/FHZ1x00PC etc.).
Dies geschieht in vielen FHEM-Installationen durch die Verwendung eines oder mehrerer USB-Geräte (z.B. [[CUL]], [[FHZ nn00|FHZ1x00]], TCM, ZWave, etc.) welche mit dem FHEM-Server verbunden sind. Dazu werden die Perl ''serial''-Module<ref>Wenn das ''serial''-Modul benötigt wird, kann es mit dem Kommando <code>sudo cpan Device::SerialPort </code> nachträglich installiert werden. Es gibt aber auch schon bereits vorkompilierte Debian-Pakete (''libdevice-serialport-perl''). In OSX 10.5 ist das Paket ebenfalls bereits enthalten. Kann das Paket nicht installiert werden, bietet sich die ''@directio''-Option in der commandref als mögliche Informationsquelle an.</ref> benötigt. Im commandref-Abschnitt zum jeweiligen USB-Gerät ist ersichtlich, welche Module genau benötigt werden. <ref>Das gilt entsprechend, wenn Geräte über die serielle Schnittstellen eingebunden werden sollen, die an den GPIO-Schnittstellen eines Raspberry Pi verfügbar sind.</ref> Sie benötigen dieses Modul nicht, wenn das Gerät über Ethernet angeschlossen wird (z.B. [[HMLAN|HM-LAN]] oder [[CUNO]]).  


===Automatische Konfiguration===
===Automatische Konfiguration===
In der Standard-Konfiguration sucht FHEM beim Start nach über USB verbundenen Geräten wie FHZ, CUL, COC, ZWave oder TCM und erstellt automatisch die entsprechenden Einträge in der fhem.cfg. Schließen Sie also diese Geräte vor dem Start von FHEM an bzw. starten FHEM mit "shutdown restart" in der Kommandozeile, nachdem Sie die Geräte angeschlossen haben.
In der Standard-Konfiguration sucht FHEM beim Start automatisch nach USB-Geräten wie z.B. FHZ, [[CUL]]<ref>Unter einem Linux-Betriebssystem wird FHEM gegebenenfalls versuchen, einen bereits angesteckten aber noch unprogrammierten [[CUL]] zu programmieren. Details dazu entnehmen Sie bitte den Beschreibungen der Befehle usb und CUL flash in der commandref.</ref>
, [[COC]], ZWave oder TCM und erstellt die entsprechenden Einträge in seiner Konfigurationsdatei. Wird ein Gerät im laufenden FHEM-Betrieb angeschlossen, muss FHEM durch die Eingabe von <code>shutdown restart</code> in der Befehlszeile neu gestartet werden, bevor das Gerät verwendet werden kann.


Unter einem Linux-Betriebssystem wird FHEM gegebenenfalls versuchen, einen bereits angesteckten aber noch unprogrammierten CUL zu programmieren. Details dazu entnehmen Sie bitte den Beschreibungen der Befehle usb und CUL flash in der commandref. Die neu angelegten Geräte werden im Raum/Menüpunkt "Unsorted" angezeigt. Für die so eingebundenen Geräte müssen dann in der Regel noch weitere Einstellungen vorgenommen werden. Dies erfolgt durch das Setzen entsprechender Attribute. Die verfügbaren Attribute sowie teilweise auch konkret einstellbare Werte für die Attribute können Sie aufrufen, wenn Sie auf das entsprechende Gerät klicken.
Für automatisch eingebundene Geräte müssen in der Regel noch weitere Einstellungen vorgenommen werden. Dies erfolgt durch das Setzen entsprechender Attribute. Die verfügbaren Attribute sowie teilweise auch konkret einstellbare Werte für die Attribute können aufgerufen werden, indem auf auf das entsprechende Gerät im jeweiligen Raum geklickt wird. Neu angelegte Geräte werden im Raum ''Unsorted'' angezeigt.  


Sofern Sie die automatische Konfiguration Ihrer USB-Geräte abgeschlossen haben, sollten Sie die automatische Erkennung deaktivieren, da diese in bestimmten Konstellationen auch verhindert, dass FHEM ordnungegemäß startet:
Sobald die automatische Konfiguration aller zu verwendenden USB-Geräte abgeschlossen ist, sollte die automatische Erkennung durch Eingabe von <code>attr initialUsbCheck disable 1</code> in der Befehlszeile deaktiviert werden.
attr initialUsbCheck disable 1
===Manuelle Konfiguration
===Manuelle Konfiguration===
Um Geräte mit USB-Anschluss manuell zu definieren (oder falls FHEM diese nicht automatisch erkennt), schließen Sie das USB-Gerät (CUL, FHZ1000PC/FHZ1300, TUL, EUL, etc) zuerst an Ihren Computer an. Dann sehen Sie im Verzeichnis /dev nach der dort entsprechend eingetragenen Gerätebezeichnung. Für einen CUL wird eine Datei mit der Bezeichnung /dev/ttyACM* unter einem Linux-Betriebssystem und /dev/cu.usbmodem* unter dem Betriebssystem OS x angelegt. Beachten Sie die exakte Bezeichnung des Gerätes. Definieren Sie es in FHEM, indem Sie folgenden Eintrag in die FHEM Kommandozeile der Webseite eingeben:
{{Randnotiz|RNTyp=g|RNText=In der Commandref findet sich in der Regel eine Darstellung in der folgenden Form: <code>define <name> CUL <device> <FHTID></code>. Dabei sind alle Angaben mit Klammern dazu gedacht, durch eigene Werte (ohne Klammern) ersetzt zu werden.}}
 
Um Geräte mit USB-Anschluss manuell zu definieren (oder falls FHEM diese nicht automatisch erkennt), kann - nach Anschluss des Gerätes - im Verzeichnis /dev nach der dort entsprechend eingetragenen Gerätebezeichnung gesucht werden. Für einen [[CUL]] zum Beispiel wird unter einem Linux-Betriebssystem eine Datei mit der Bezeichnung ''/dev/ttyACM*'' angelegt. Auf OS X ''/dev/cu.usbmodem*''. Mit dieser Gerätebezeichnung (also des Dateinamens) kann das Gerät manuell in der Befehlszeile angelegt werden.
    define CUL1 CUL /dev/ttyACM0@9600 1234
 
{{Randnotiz|RNTyp=g|RNText=In der Commandref finden Sie in der Regel eine Darstellung in der folgenden Form: define <name> CUL <device> <FHTID>. Dabei sind alle Angaben mit Klammern dazu gedacht, dass Sie diese mit eigenen Werten (ohne Klammern) ersetzen.}}Anmerkung: die Angabe "1234" oben ist beispielhaft und für Ihre Installation durch einen geeigneten eigenen Wert zu ersetzen. Details über die Parameter zur Definition eines CUL finden Sie im Abschnitt CUL der Commandref.
 
/*Anmerkung: Wäre hier nicht besser ein moderneres Gerät dargestellt? ZWDONGLE?*/
 
Ein FHZ-Gerät wird ebenso, aber mit anderen Parametern, angelegt
 
    define FHZ1 FHZ /dev/ttyUSB0
 
===Achtung/Bemerkungen===
- Vergessen Sie nicht, den save-Button (neben der FHEM-Befehlseingabezeile) zu drücken, wenn Sie die Eingabe einer Gerätedefinition oder die Änderung der Geräteattribute fertiggestellt haben. Andernfalls werden die erfolgten Eingaben nicht in der Konfigurationsdatei gespeichert und bei einem Neustart von FHEM nicht mehr berücksichtigt.
 
- Zur Ausführung von in der FHEM Befehlszeile eingegebenen Anweisungen drücken Sie Enter auf der Tastatur. Betätigen des save-Buttons führt diese eingegebenen Anweisungen nicht aus.


- Sie erhalten den CUL vom Hersteller ohne Firmware. Sie können ihn mittels des CULflash Kommandos programmieren, wenn das Programm dfu-programmer im Verzeichnis fhem vorhanden ist.
*Am Beispiel eines CUL-Sticks: <code>define CUL1 CUL /dev/ttyACM0@9600 1234</code><ref>Auch hier ist die Angabe "1234" lediglich beispielhaft und durch einen eigenen Parameter zu ersetzen</ref>
*Oder eines Z-Wave-Controllers: <code>define ZWDongle ZWDongle /dev/serial/by-id/usb-0658_0200-if00@115200</code><ref>Die für diese Art der Einbindung erforderlichen Informationen erhalten Sie, indem Sie auf Betriebssystemebene <code>ls -l /dev/serial/by-id</code> eingeben</ref>


Informationen, wie genau das jeweilige Gerät angelernt wird, finden sich im zugehörigen Abschnitt der {{Link2CmdRef|Lang=de|Label=commandref}}


==Einbinden und Konfiguration von Sensoren und Aktoren==
==Einbinden und Konfiguration von Sensoren und Aktoren==


===autocreate===
===autocreate===
Viele funkgesteuerte Geräte werden in der default-Konfiguration wegen der voreingestellten autocreate-Funktion automatisch erstellt, sobald diese Werte senden.
Viele funkgesteuerte [[Gerät|Geräte]] werden in der default-Konfiguration wegen der voreingestellten {{Link2CmdRef|Anker=autocreate|Lang=de|Label=autocreate}}-Funktion automatisch erstellt, sobald diese Werte senden.


Diese Funktion erstellt automatisch diese Geräteeintragungen bei Empfang einer Nachricht von diesen Geräten (z.B. eines Sensors wie dem S300 oder FHT). Bitte warten Sie eine gewisse Zeit, beobachten Sie die Logeinträge und aktualisieren Sie Ihren Browser um neu erreichte Geräte angezeigt zu bekommen. Die automatisch vergebenen Namen orientieren sich dabei an technischen Parametern.
Diese Funktion erzeugt automatisch beim Empfang einer Nachricht von einem Geräten (z.B. eines Sensors wie dem S300 oder FHT) ein neues [[Device]] in FHEM. Bitte warten Sie eine gewisse Zeit, beobachten Sie die Logeinträge oder den [[Event monitor|Eventmonitor]] und aktualisieren Sie Ihren Browser um neu erstellte [[Gerät|Geräte]] angezeigt zu bekommen. Die automatisch vergebenen Namen orientieren sich dabei an technischen Parametern.


===Umbenennen===
===Umbenennen===
{{Randnotiz|RNTyp=g|RNText=Wenn Sie das Gerät selbst umbenennen, werden auch die zugehörigen Logfiles und Weblinks automatisch mit umbenannt. Wenn Sie dagegen die Weblinks oder Logfiles umbenennen, werden die zugehörigen Geräte nicht mit umbenannt.}}Sie können den Befehl rename benutzen, um automatisch erstellte Geräteeinträge umzubenennen. Geben Sie den Befehl mit den entsprechenden Parametern in der Befehlszeile der Webseite ein. Z.B.:
{{Randnotiz|RNTyp=g|RNText=Wenn Sie das Gerät selbst umbenennen, werden auch die zugehörigen Logfiles und Weblinks automatisch mit umbenannt. Wenn Sie dagegen die Weblinks oder Logfiles umbenennen, werden die zugehörigen Geräte nicht mit umbenannt.}}Um automatisch erstellte Geräteeinträge umzubenennen, kann der Befehl {{Link2CmdRef|Anker=rename|Lang=de|Label=rename}} verwendet werden. Geben Sie den Befehl mit den entsprechenden Parametern in der Befehlszeile der Webseite ein. Z.B.:


     rename FHT_1234 fht.kitchen  
     rename FHT_1234 fht.kitchen  


===Manuelles Anlegen===
===Manuelles Anlegen===
Wenn Sie das Gerät manuell anlegen wollen oder müssen, weil autocreate diese nicht anlegen kann, dann gehen Sie folgendermaßen vor:
Wenn Sie das [[Gerät]] manuell anlegen wollen oder müssen, weil autocreate diese nicht anlegen kann, dann gehen Sie folgendermaßen vor:


Warten Sie eine Weile bis Daten übertragen werden. Im Logfile (zu erreichen unter Webseite Menüpunkt Unsorted-> FileLog -> Logfile -> text) erscheint z.B. folgende Textzeile:
Warten Sie eine Weile bis Daten übertragen werden. Im Logfile (zu erreichen unter Webseite Menüpunkt Unsorted-> [[FileLog]] -> Logfile -> text) erscheint z.B. folgende Textzeile:
     FS20 Unknown device <HOUSECODE>, Button <BTN> Code <CDE>, please define it   
     FS20 Unknown device <HOUSECODE>, Button <BTN> Code <CDE>, please define it   


Zeile 103: Zeile 106:
     attr piri1 model fs20piri   
     attr piri1 model fs20piri   


Anschließend erhalten Sie nur noch die für dieses Gerät verfügbaren Attribute angezeigt. Hier sehen Sie eine komplette Liste der FS20 Modelle.
Anschließend erhalten Sie nur noch die für dieses Gerät verfügbaren Attribute angezeigt. Hier sehen Sie eine komplette Liste der [[FS20]] Modelle.
Bei einem anderen neuen Geräten sollte eine ähnliche Nachricht im Logfile erscheinen.
Bei einem anderen neuen Gerät sollte eine ähnliche Nachricht im Logfile erscheinen.


HomeMatic Geräte müssen nicht mit FHEM gepairt werden, andererseits wird FHM solche Geräte nur automatisch eintragen wenn es eine pairing-Anfrage erhält. Dazu müssen Sie FHEM mit dem Befehl set CUL hmPairForSec 600 in Empfangsbereitschaft versetzen. Gleiches Vorgehen gilt für das pairing von ZWave-Geräten
Um [[HomeMatic]]- oder zWave-Geräte anzulernen, muss FHEM zuerst mit dem Befehl <code>set CUL hmPairForSec 600</code> in Empfangsbereitschaft versetzt werden und anschließend der Anlernknopf auf dem Gerät gedrückt werden.


===Einbinden von Geräten, die Anlernbefehle benötigen===
===Einbinden von Geräten, die Anlernbefehle benötigen===


Manche Geräte benötigen Anlernsignale, um eine Koppelung mit anderen Geräten bzw. einer Zentrale wie FHEM herzustellen. Für solche Geräte muß zunächst manuell eine Konfiguration in FHEM vorgenommen werden, um solche Anlernsignale generieren zu können.
Manche Geräte benötigen Anlernsignale, um eine Koppelung mit anderen Geräten bzw. einer Zentrale wie FHEM herzustellen. Für solche Geräte muss zunächst manuell eine Konfiguration in FHEM vorgenommen werden, um solche Anlernsignale generieren zu können.


Definieren Sie z.B. ein FS20 Gerät mit z.B folgendem Eintrag in die fhem.cfg:
Definieren Sie z.B. ein [[FS20]] Gerät mit z.B. folgendem Befehl in der Befehlszeile:


     define lamp1 FS20 1234 56
     define lamp1 FS20 1234 56


Dann drücken Sie den Anmeldeknopf an dem Gerät solange, bis die LED blinkt. Anschließend klicken sie auf den on Link auf der FHEM Webseite um das Kommando zu senden. Die LED sollte aufhören zu blinken. Das Gerät ist nun auf den Hauscode 1234 Gerätecode 56 programmiert. Sie können alternativ die 4-base ELV-Notation benutzen. Anschließend können Sie wieder modellspezifische Attribute ür das Gerät setzen. Z.B.:
Dann drücken Sie den Anmeldeknopf an dem Gerät solange, bis die LED blinkt. Anschließend klicken sie auf den ''on'' Link auf der FHEM Webseite um das Einschalt-Kommando zu senden. Die LED sollte aufhören zu blinken. Das Gerät ist nun auf den Hauscode 1234 Gerätecode 56 programmiert. Sie können alternativ die 4-base ELV-Notation benutzen. Anschließend können Sie wieder modellspezifische [[Attribut|Attribute]] für das [[Gerät]] setzen. Z.B.:


     attr lamp1 model fs20st
     attr lamp1 model fs20st


Mit diesem Eintrag bekommen Sie nunmehr wieder nur die für dieses Gerät relevanten Kommandos angezeigt.
Mit diesem Eintrag bekommen Sie nunmehr wieder nur die für dieses [[Gerät]] relevanten Kommandos angezeigt.


{{Randnotiz|RNTyp=b|RNText=Das automatische oder manuelle Eintragen von FHT/HomeMatic/EnOcean-Geräten in FHEM bedeutet nicht automatisch, dass das betreffende Gerät mit FHEM gepairt ist bzw. das pairing erfolgreich abgeschlossen wurde!}}Andere Systeme (EnOcean/HomeMatic/ZWave) brauchen eine umfangreichere Prozedur und das entsprechende Gerät muss zuerst in den pairing mode versetzt werden. Bitte sehen Sie sich den entsprechenden Eintrag auf der commandref.html-Seite für Ihr Gerät zur Information an.
{{Randnotiz|RNTyp=b|RNText=Das automatische oder manuelle Eintragen von FHT/HomeMatic/EnOcean-Geräten in FHEM bedeutet nicht automatisch, dass das betreffende Gerät mit FHEM gepairt ist bzw. das pairing erfolgreich abgeschlossen wurde!}}Andere Systeme (EnOcean/HomeMatic/ZWave) brauchen eine umfangreichere Prozedur und das entsprechende Gerät muss zuerst in den pairing mode versetzt werden. Bitte sehen Sie sich den entsprechenden Eintrag auf der commandref.html-Seite für Ihr [[Gerät]] zur Information an.


==Grundlegendes zum Steuern Ihrer Geräte==
==Grundlegendes zum Steuern Ihrer Geräte==
Sobald Ihre Sensoren und Aktoren in FHEM eingebunden sind, können Sie die Aktoren über telnet oder die WEB-Schnittstelle bereits steuern.  
Sobald Sensoren und Aktoren in FHEM eingebunden sind, können diese bereits über telnet oder die WEB-Schnittstelle gesteuert werden.  
{{Randnotiz|RNTyp=b|RNText=Für Einsteiger empfiehlt sich die Lektüre der [[http://fhem.de/Heimautomatisierung-mit-fhem.pdf! Einführung in die Automatisierung mit FHEM]]. Diese ist in den wesentlichen Teilen weiterhin aktuell.}}Für den Aufbau einer zeit- und ereignisorientierten Steuerung benötigen Sie jedoch weitere Steuerungselemente, die in FHEM "Module" genannt werden. Die in Ihrer FHEM-Installation bereits enthaltenen Module sind in der commandref dargestellt. Nachfolgend sollen kurz einige der wichtigsten Module vorgestellt werden:
{{Randnotiz|RNTyp=b|RNText=Für Einsteiger empfiehlt sich die Lektüre der [[http://fhem.de/Heimautomatisierung-mit-fhem.pdf! Einführung in die Automatisierung mit FHEM]]. Zwar sind dort Neuerungen wie der Style [[FHEMWEB|f18]], [[set magic]], Module wie [[allowed]] oder [[DOIF]] nicht behandelt und die Auswahl an verfügbaren Hardwaresystemen hat sich seit dessen letzter Aktualisierung weiter erhöht. Dennoch bietet diese Einführung nach wie vor einen recht umfassenden Überblick in die allgemeinen Vorgehensweisen und Möglichkeiten mit FHEM.}}
Für den Aufbau einer zeit- und ereignisorientierten Steuerung werden jedoch weitere Steuerungselemente - sogenannte "'''[[Modul|Module]]'''" - benötigt. Nachfolgend sollen kurz einige der wichtigsten Module vorgestellt werden.
 
Unter '''[[Automatisierung]]''' stehen weitere Informationen zur Verfügung.


==Zeitabhängige Kommandos==
===Zeitabhängige Kommandos===
Die einfachste Methode, zeitgesteuert Befehle ausführen zu lassen, ist ein "at".
Zur Zeitsteuerung benötigt man einen [[Timehandler]].
Entsprechende Beispiele und Definitionen finden Sie in der [[https://fhem.de/commandref_DE.html#at commandref]].
==Reaktion auf Ereignisse==


Um Kommandos ausführen zu lassen wenn ein Gerät eine Nachricht (ein "Event") aussendet, benötigen Sie einen sogenannten event-handler.
===Reaktion auf Ereignisse===
Die einfachste Form eines solchen ist ein Gerät vom Typ notify.
[[Gerät|Geräte]] teilen bestimmte Aktualisierungen ihres Zustandes über [[Event|Events]] mit, z.B. die Änderung eines Messwertes oder eines Schaltzustandes. Die Events werden von [[Eventhandler|Eventhandlern]] empfangen und verarbeitet. Als Ergebnis der Verarbeitung werden Befehle ausgeführt.


Um die in FHEM auftretenden Ereignisse besser zu verstehen/erkennen sollten Sie ein weiteres Browser-Fenster mit dem "[[Event Monitor]]" öffnen oder eine Telnet-Verbindung zu Ihrem FHEM aufbauen. Geben Sie z.B. in der Eingabeaufforderung folgendes ein:
Die einfachste Form eines [[Eventhandler|Eventhandlers]] ist ein {{Link2CmdRef|Anker=notify|Lang=de|Label=notify}} oder {{Link2CmdRef|Anker=DOIF|Lang=de|Label=DOIF}}.


    telnet <fhemhost> 7072
Die in FHEM auftretenden Ereignisse können mit dem [[Event monitor|Eventmonitor]] angezeigt werden oder in einem mit FHEM verbundenen [[Telnet]]-Client durch den Befehl <code>inform timer</code>.


Nachdem die Verbindung aufgebaut wurde geben Sie ein:
Die angezeigten [[Event|Events]] sind die wichtigste Grundlage, um einen Ereignisfilter, Suchmuster oder Auslöser zu formulieren.


    inform timer


Nun sehen Sie in dieser telnet-Verbindung bzw. im [[Event Monitor]] alle Ereignisse wie z.B.:
Das [[Event]] wird auf die nachstehende Weise dargestellt:


     2011-12-16 21:51:55 FS20 myPiri on-for-timer 120  
     2011-12-16 21:51:55 FS20 myPiri on-for-timer 120  


Gemäß diesem Eintrag können Sie eine Aktion wie folgt definieren:
Gemäß dieser Eventzeile können Sie eine Aktion wie folgt definieren:


     define lampNotify notify myPiri set myLamp on  
     define lampNotify notify myPiri set myLamp on  
Zeile 157: Zeile 159:
     define lampNotify notify myPiri:on.* set myLamp on  
     define lampNotify notify myPiri:on.* set myLamp on  


Um dieses notify zu testen können Sie die Ereignisse unter Verwendung des trigger-Kommandos simulieren. Z.B.:
Um dieses [[notify]] zu testen können Sie die Ereignisse unter Verwendung des Befehls [[trigger]]<ref>{{Link2CmdRef|Anker=trigger|Lang=de}}</ref> simulieren. Z.B.:


     trigger myPiri on-for-timer 120  
     trigger myPiri on-for-timer 120  
      
      
at, notify und andere Eventhandler wie z.B. watchdog verwenden entweder vordefinierte FHEM-Kommandos, SHELL-Scripte oder Perl-oneliners als Argumente. Für Details und Tipps für Perl oneliners lesen Sie bitte die Perl-specials-Abschnitte in der commandref.
[[at]], [[notify]] und andere [[Eventhandler]], wie z.B. {{Link2CmdRef|Anker=DOIF|Lang=de|Label=DOIF}}<ref>[[DOIF]] vereint Ereignissteuerung, Zeitsteuerung, Zustandsautomaten und Frontend in einem Modul</ref>, {{Link2CmdRef|Anker=sequence|Lang=de|Label=sequence}}<ref>[[sequence]] verknüpft eine Folge von [[Ereignis|Ereignissen]]</ref>, {{Link2CmdRef|Anker=watchdog|Lang=de|Label=watchdog}}<ref>[[watchdog]] reagiert auf ausbleibende [[Ereignis|Ereignisse]]</ref> usw. verwenden entweder vordefinierte FHEM-Kommandos, SHELL-Scripte oder Perl-Ausdrücke als Argumente. Für Details und Tipps zu Perl-Ausdrücken lesen Sie bitte den Abschnitt zu {{Link2CmdRef|Anker=perl|Lang=de|Label=Perl Besonderheiten}} in der commandref.
Sowohl bei der Auswertung von Ereignissen wie bei den FHEM-Kommandos können Sie reguläre Ausdrücke verwenden, sogenannte regex. Eine kurze Einführung zu regex finden Sie z.B. hier: https://regex101.com/.
Sowohl bei der Auswertung von [[Ereignis|Ereignissen]], als auch bei den FHEM-Kommandos können Sie [[Regulärer_Ausdruck|reguläre Ausdrücke]] verwenden, sogenannte regex. Eine kurze Einführung zu regex finden Sie z.B. hier: https://regex101.com/.


==Daten aufzeichnen und darstellen==
=== Kombinierte Zeit- und Ereignissteuerung ===


===Loggen===
Auch eine kombinierte Zeit- und Ereignissteuerung ist mit [[Timehandler|Timehandlern]] und [[Eventhandler|Eventhandlern]] möglich.
Um Daten/Nachrichten/Ereignisse in einer Datei zu speichern müssen Sie ein Gerät vom Typ FileLog anlegen. Die Funktion autocreate erstellt für neu erkannte Geräte automatisch eine Logdatei. Sie können jedoch die Funktion createlog nutzen, um später eine weitere Logdatei hinzuzuügen.


Um Daten/Nachrichten/Ereignisse in einer Datenbank zu speichern informieren Sie sich im Verzeichnis contrib/dblog der FHEM Distribution.
==== [[DOIF]]: Kombination einer Zeitspanne mit der Abfrage eines Readings ====


FHEMWEB hat eine vordefinierte Funktionen Anzeige von Dateien des Typs FileLog. Weitere Informationen im folgenden Abschnitt plot.
Zwischen 6 Uhr und 19 Uhr soll eine Lampe eingeschaltet werden, wenn die Helligkeit unter 40 gemessen wird. Sonst, wenn die Bedingung nicht zutrifft, soll die Lampe ausgeschaltet werden.
Liegt die Helligkeit zum Beginn der Zeitspanne (6 Uhr) bereits unter 40, soll die Lampe zu diesem Zeitpunkt eingeschaltet werden.
Liegt die Helligkeit zum Ende der Zeitspanne (19 Uhr) noch unter 40, soll die Lampe zu diesem Zeitpunkt ausgeschaltet werden.


Die Geräte einer jeden Logdatei (FileLog)wird durch die eingegebenen Logkriterien (z.B. Jahr/Monat/Woche/Tag) bestimmt. Sie k?nen das Archivieren mit den Attributen nrarchive oder archivecmd erlauben.
Im [[Event monitor]] erscheint folgendes [[Event]], der hervorgehobene Teil des [[Event|Events]] löst die Bedingungsprüfung in [[DOIF]] aus.
2018-08-07 15:46:33.887 CUL_HM '''sensor brightness''': 39.41
Im DOIF wird der [[DOIF/Einsteigerleitfaden,_Grundfunktionen_und_Erl%C3%A4uterungen#Ausl.C3.B6ser|Auslöser]] immer in eckigen Klammern angegeben, wie hier die Zeitspanne und das [[Ereignis]]; in der Definition fett hervorgehoben. Der [[DOIF/Einsteigerleitfaden,_Grundfunktionen_und_Erl%C3%A4uterungen#Ausl.C3.B6ser|Auslöser]] für das [[Ereignis]] kann über die Kombination von [[Gerätename]] (sensor) und [[Gerätevariable]] (brightness) angegeben werden, dabei wird der Wert des [[Readings]] zurückgegeben, vergleichbar mit [[set magic]]. Die Verknüpfung von Zeitspanne und Readingsvergleich erfolgt über einen logischen Operator, dem Perl-Operator <code>and</code>. Der Wert des Readings wird mit einem Vergleichswert (40) über einen vergleichenden Operator verglichen, dem Perl-Operator <code><</code> mit der Bedeutung ''kleiner als''.
define di_lamp DOIF ('''[06:00-19:00]''' and '''[sensor:brightness]''' < 40) (set lamp on) DOELSE (set lamp off)


===Inhalte von Logdateien plotten (zeichnen)===
Das [[DOIF]] kann mit dem FHEM-Befehl setreading<ref>{{Link2CmdRef|Anker=setreading|Lang=de}}</ref> getestet werden.
  setreading sensor brightness 39
Lässt das [[DOIF]] innerhalb der Zeitspanne die Lampe einschalten.
  setreading sensor brightness 40
Lässt das [[DOIF]] innerhalb der Zeitspanne die Lampe ausschalten.


Die Funktion autocreate erstellt Weblinks (d.h. Plots) für neu erkannte Geräte. Der folgende Abschnitt beschreibt wie man z.B. Plots von unterschiedlichen Sensoren gemeinsam ausgibt.
==Daten aufzeichnen und darstellen==
[[Datei:SolarthermiePlot.png|350px|thumb|right|Beispiel für Solarthermie]]


Die Daten für einen Plot stammen jeweils aus seiner FileLog-Datei. ändern Sie ggf. die Filterkriterien (regexp) wenn noch andere Daten geplottet werden sollen. Als nächsten Schritt setzen Sie das logtype Attribut des FileLog. Damit bestimmen Sie, welche Plotvorlagedatei (.gplot) benutzt werden soll. Die übersicht über die vorhandenen gnuplot-Dateien finden Sie unter dem Menüunkt Edit files. Die gnuplot-Dateien enthalten die zugehörigen FileLog Beispiele.
===Daten aufzeichnen: Loggen===
Um Daten/Nachrichten/Ereignisse für eine spätere Analyse oder grafische Darstellung aufzuzeichnen, können Sie ein oder mehrere Device/s vom Typ {{Link2CmdRef|Anker=FileLog|Lang=de|Label=FileLog}} anlegen. Die Funktion <code>autocreate</code> erstellt für neu erkannte [[Gerät|Geräte]] automatisch jeweils eine Logdatei. Sie können jedoch die Funktion {{Link2CmdRef|Anker=createlog|Lang=de|Label=createlog}} nutzen, um später eine weitere Logdatei hinzuzufügen. Wenn Sie die Daten von mehreren Geräten in einem [[FileLog]] zusammenfassen wollen, passen Sie den regulären Ausdruck (regex) entsprechend an.


Beachten Sie bitte, dass die .gnuplot-Dateien ebenfalls bei der Darstellung von SVG anstelle des Gnuplot Backends benutzt werden.
[[FHEMWEB]] hat eine vordefinierte Funktionen zur Erstellung von Grafiken aus den aufgezeichneten Daten, näheres dazu im folgenden Abschnitt.


Die gnuplot-Dateien müssen #Filelog-Einträge haben, damit sie mit gnuplot scroll oder SVG benutzt werden können (Diese Zeilen werden von gnuplot, aber nichrt von FHEM, als Kommentare behandelt). Wenn die Auswahl mittels der FileLog get-Funktion erfolgen soll, dann lesen Sie sich für die Syntax die mitgelieferten gnuplot-Dateien oder den column_spec Abschnitt hier durch.
Bei [[FileLog]] können Sie die Aufzeichnungsdauer sowie Archivierungsfunktionen selbst bestimmen. Setzen Sie dazu entsprechende Logkriterien (z.B. Jahr/Monat/Woche/Tag) bzw. die Attribute ''nrarchive'' und/oder ''archivecmd''.


Beispiele:
Wenn Sie statt [[FileLog]] lieber eine Datenbank nutzen wollen, können Sie {{Link2CmdRef|Anker=dblog|Lang=de|Label=dblog}} verwenden.


    attr em1000log logtype power8:Power,text
===Grafische Aufarbeitung aufgezeichneter Daten: plotten===
    attr fs20_log logtype fs20:Plot,text
    attr hms100th_log logtype temp4hum6:Plot,text


Lassen Sie sich das Diagramm (/denPlot) anzeigen, indem Sie darauf klicken und erstellen Sie einen Weblink der seine eigenen Attribute hat. Wenn der Weblink zur aktuellen Logdatei gehört, dann wird er als aktueller Weblink gespeichert und angezeigt (Sie müssen ihn nicht erneut definieren, wenn sich in seinem Dateinamen die Bezeichnungen für Jahr/Monat/Datum ändern).
Um die aufgezeichneten Daten grafisch darzustellen, kann man in die Detailansicht eines FileLogs wechseln und dort auf "Create SVG instance" klicken. Damit gelangen Sie zum gplot-Editor.


Die Logs können entweder mit gnuplot (welches im aktuellen Pfad installiert sein muss), oder mittels des im Programm enthaltenen SVG-Moduls erstellt werden. In diesem Fall muss Ihr Browser SVG unterstützen. Alle Browser unterstützen SVG, ausser dem Internet Explorer vor der Version 9 und Android vor der Version 3.0. Wenn Sie ein Gerät mit diesen Android-Versionen benutzen, dann versuchen Sie bitte als Browser Opera oder Firefox.
[[Datei:Gplot-Editor1.png]]


In diesem können Sie nun alle Daten wählen, die grafisch dargestellt werden sollen und dabei auch Daten aus unterschiedlichen Quellen gemeinsam darstellen. Beachten Sie, dass Sie dazu ggf. Zwischenstände durch Drücken der Taste {{Taste|write .gplot file }} speichern müssen, um Daten aus anderen als der zuletzt genutzten Quelle auswählen zu können.


Der voreingestellte Modus ist SVG. Um das zu ändern, setzen Sie die plotmode Attribute auf gnuplot oder gnuplot scroll.
Im Beitrag [[Plots_erzeugen|Plots erzeugen]] sowie im Abschnitt {{Link2CmdRef|Anker=SVG|Lang=de|Label=SVG}} der commandref erhalten Sie hierzu weitere Informationen.


Um ältere Daten anzeigen zu lassen, erstellen Sie bitte einen anderen Weblink und setzen das fixedrange-Attribut auf z.B.:
Um fremde (nicht unter FHEM erfasste) Daten als Plot oder als normalen Text anzuzeigen, spezifizieren Sie bitte den ''readonly'' Parameter bei der Definition des FileLog zusätzlich zu dem korrekten Dateinamen; der <regexp> Parameter sollte identisch dem Devicenamen sein (im folgenden Beispiel also '''''messages'''''):
    attr weblink_1 fixedrange 2006-01-01 2007-01-01
:<code>define messages FileLog /var/log/messages <regexp> readonly </code>


Um fremde (nicht unter FHEM erfasste) Daten als Plot oder als normalen Text anzuzeigen, erstellen Sie bitte ein fake-Logfile mit dem korrekten Dateinamen und einer unbenutzten regexp, z.B.:
== Das Web-Interface anpassen==
In der Darstellung bis hier war [[FHEMWEB]] für das Erscheinungsbild von FHEM im Browser verantwortlich, wobei der voreingestellte Style "f18" für eine dynamische Darstellung für verschiedene Bildschirmgeräte und -größen sorgt.
=== Styles ===
Sie können das Erscheinungsbild von FHEMWEB ändern, indem Sie andere Farbschemata oder andere Styles festlegen. Dabei können Sie für verschiedene Instanzen<ref>Dabei ist jeweils nur die Verwendung eines anderen Ports erforderlich</ref> auch unterschiedliche Styes verwenden und so z.B. das Aussehen/und oder die Funktionalität von FHEM verändern, je nachdem, ob FHEM zu Administrationszwecken<ref>In FHEMWEB-Instanzen, in denen code eingegeben werden soll, kann zur Unterstützung [[codemirror]] aktiviert werden.</ref> oder in der regulären Anwendung aufgerufen wird<ref>Weitere Hinweise hierzu finden Sie in der commandref zu {{Link2CmdRef|Anker=FHEMWEB|Lang=de|Label=FHEMWEB}} bzw. {{Link2CmdRef|Anker=allowed|Lang=de|Label=allowed}}</ref>.


    define messages FileLog /var/log/messages fakelog
===Räume und Gruppen===
Um die Geräte zu ordnen, bietet FHEMWEB eine Reihe von Möglichkeiten an. Es ist in der Regel zu empfehlen, alle Geräte in Räumen<ref>Um gegliederte Räume zu erzeugen, nutzen Sie den Trenner "->". Beispiel: <code>attr <device> room Steuerung->Logik</code>.</ref> zu gruppieren und auch innerhalb der Räume sinnvoll anzuordnen, indem Sie das ''group''-Attribut setzen<ref>Für die Sortierung innerhalb einer Gruppe kann das Attribut ''sortby'' genutzt werden.</ref>, mit ''defaultRoom'' läßt sich eine Startseite festlegen. FHEMWEB zeigt Geräte ohne Raum-Attribut im Raum (Menüpunkt) ''Unsorted''. Fügen Sie Geräten das ''hidden''-Raumattribut hinzu, so werden diese Geräte nicht auf der Webseite angezeigt.


Sie können ein kürzeres Menü auf der Webseite erzeugen, indem Sie Menüpunkte (bzw. Räume), die nicht angezeigt werden sollen mit dem Attribut ''hiddenroom'' versehen<ref>Darüber lassen sich auch die Anzeige von links zum  Zugriff auf die Detailansichten ausschalten</ref>


==FHEMWEB (pgm2) anpassen==
Farben und Schriften können Sie durch Anpassung der Datei style.css ändern (Edit files -> style.css) oder Sie erstellen Ihren eigenen Stil (siehe auch stylesheetPrefix) dann wird Ihr neuer Stil auch nicht beim nächsten Ausführen des update-Kommandos überschrieben.
===Andere Frontends===
Neben [[FHEMWEB]] können auch andere Frontends an FHEM angebunden werden, um darüber Ihre Geräte zu steuern und darzustellen. Weiterführende Hinweise finden Sie hier im Wiki und im Forum unter ''FHEM » Frontends''.


===Räume und Gruppen===
==Komplexe Strukturen==
Es ist in der Regel zu empfehlen, alle Geräte in Räumen zu gruppieren und auch innerhalb der Räume sinnvoll anzuordnen, indem Sie das group-Attribut setzen. FHEMWEB zeigt Geräte ohne Raum-Attribut im Raum (Menüpunkt) Unsorted. Fügen Sie Geräten das hidden Raumattribut hinzu, so werden diese Geräte nicht auf der Webseite angezeigt.
Um gleichzeitig verschiedene Geräte auf einmal anzusprechen, kann mit Filtern und Abfragen gearbeitet werden. Details entnehmen sie bitten dem {{Link2CmdRef|Anker=devspec|Lang=de|Label=devspec}}-Abschnitt der commandref.
Z.B. können Sie die ''room=<roomname>'' Spezifikation verwenden, um gleichzeitig alle diesem Raum zugeordneten Geräte auf einmal anzusprechen.
 
Für noch komplexere Szenarien informieren sie sich bitte über das {{Link2CmdRef|Anker=structure|Lang=de|Label=structure}}-Modul. Sie können verschiedene Ebenen wie Flure, Gebäude usw. definieren und alle Geräte einer definierten Struktur auf einmal ansprechen.


Sie können ein kürzeres Menü auf der Webseite erzeugen, indem Sie Menüpunkte die nicht angezeigt werden sollen mit dem Attribut hiddenroom versehen.
==Wichtige Befehle und Module für die erste Zeit==
*{{Link2CmdRef|Anker=list|Lang=de|Label=list}} - ([[list|Wiki]])
*{{Link2CmdRef|Anker=define|Lang=de|Label=define}}
*{{Link2CmdRef|Anker=defmod|Lang=de|Label=defmod}}
*{{Link2CmdRef|Anker=version|Lang=de|Label=version}} - ([[version|Wiki]])
*{{Link2CmdRef|Anker=update|Lang=de|Label=update}} - ([[update|Wiki]])
*{{Link2CmdRef|Anker=shutdown|Lang=de|Label=shutdown}}
*{{Link2CmdRef|Anker=DOIF|Lang=de|Label=DOIF}} - ([[DOIF|Wiki]])
*{{Link2CmdRef|Anker=notify|Lang=de|Label=notify}} - ([[notify|Wiki]])
*{{Link2CmdRef|Anker=at|Lang=de|Label=at}} - ([[at|Wiki]])
*{{Link2CmdRef|Anker=sleep|Lang=de|Label=sleep}}
*{{Link2CmdRef|Anker=cancel|Lang=de|Label=cancel}}
*{{Link2CmdRef|Anker=watchdog|Lang=de|Label=watchdog}} - ([[watchdog|Wiki]])


Farben und Schriften können Sie durch Anpassung der Datei style.css ändern (Edit files -> style.css) oder Sie erstellen Ihren eigenen Stil (siehe auch stylesheetPrefix) dann wird Ihr neuer Stil auch nicht beim nächsten Ausführen des update-Kommandos überschrieben.
==FHEM ist ein Perl Server...==
===Andere Frontends===
FHEMWEB kann mit dem neuen Style "f18" auch auf eine dynamischere Darstellung für verschiedene Bildschirmgeräte und -größen eingestellt werden.
Darüber hinaus besteht die Möglichkeit, andere Frontends an FHEM anzubinden und darüber Ihre Geräte zu steuern und darzustellen. Entsprechende Hinweise finden Sie hier im Wiki und in dem Forumsbereich dazu.


Die meisten FHEM-Nutzer werden früher oder später daran erinnert, dass FHEM in Perl programmiert ist. Auch wenn es in vielen Fällen nicht zwingend erforderlich ist, diese Programmiersprache zu erlernen, ist es für ein vertieftes Verständnis der Funktionsweise Ihrer Hausautomatisierung hilfreich, wenn Sie sich auch mit den Grundlagen zu Perl sowie der häufig vorkommenden [[Regulärer Ausdruck|regex-Ausdrücken]] vertraut machen. Manche Problemstellungen lassen sich nach wie vor am effektivsten unmittelbar mit diesen Werkzeugen lösen.
Einen ersten Einblick in diese Themen finden Sie in den {{Link2CmdRef|Anker=command|Lang=de|Label=FHEM Befehls-Typen}}, {{Link2CmdRef|Anker=perl|Lang=de|Label=PERL Besonderheiten}} und dem Artikel zu [[99 myUtils anlegen]]. [[DevelopmentModuleIntro|In dieser Artikelserie]] sind weitere Informationen für  Fortgeschrittene und Experten zu finden.


==Komplexe Strukturen==
==Hinweise==
Um gleichzeitig verschiedene Geräte auf einmal anzusprechen, kann mit Filtern und Abfragen gearbeitet werden. Details entnehmen sie bitten dem devspec Abschnitt der commandref.
<references />
Z.B. können Sie die room=<roomname> Spezifikation verwenden, um gleichzeitig alle diesem Raum zugeordneten Geräte auf einmal anzusprechen.


Für noch komplexere Szenarien informieren sie sich bitte über das structure-Modul. Sie können verschiedene Ebenen wie Flure, Gebäude usw. definieren und alle Geräte einer definierten Struktur auf einmal ansprechen.
[[Kategorie:FHEM]]
[[Kategorie:FHEM-Verwendung]]

Aktuelle Version vom 9. November 2023, 11:50 Uhr

Info blue.png
An english version of this document is available here


Installation

Zunächst installieren Sie FHEM auf der von Ihnen bevorzugten Hardware (oder virtuellen Maschine). Sie finden dazu Erklärungen für die unterschiedlichsten Betriebssysteme hier.

Info green.pngBei einer Standard-Installation unter Linux befinden sich - mit Ausnahme des für den automatischen Start erforderlichen Scripts - alle Dateien, die FHEM für den Betrieb benötigt oder anlegt im Verzeichnis /opt/fhem sowie den darin befindlichen Unterverzeichnissen. Denken Sie daher rechtzeitig daran, Sicherheitskopien des Verzeichnisses anzufertigen.

Nach dem ersten Start von FHEM sehen die Einträge im FHEM-Logfile des Log-Verzeichnisses[1][2] zum Beispiel wie folgt aus:

2018.03.09 09:17:51 1: Including fhem.cfg
2018.03.09 09:17:51 3: telnetPort: port 7072 opened
2018.03.09 09:17:51 3: WEB: port 8083 opened
2018.03.09 09:17:51 3: WEBphone: port 8084 opened
2018.03.09 09:17:51 3: WEBtablet: port 8085 opened
2018.03.09 09:17:51 2: eventTypes: loaded 0 events from ./log/eventTypes.txt
2018.03.09 09:17:51 1: usb create starting
2018.03.09 09:17:51 3: [...]
2018.03.09 09:17:51 1: usb create end
2018.03.09 09:17:51 0: Featurelevel: 5.8
2018.03.09 09:17:51 0: Server started with 9 defined entities (fhem.pl:16349/2018-03-07 perl:5.024001 os:linux user:fhem pid:9341)

Erster Aufruf von FHEM

Beim ersten Start ist FHEM über ein Webinterface (FHEMWEB) erreichbar. Die URL hierfür lautet http://<fhem-server>:8083/fhem.

Info blue.png
Für spezielle Zwecke oder Nutzergruppen können weitere FHEMWEB-Geräte definiert werden. Dies bietet sich an, wenn man einen anderen Style als den Standard-Style f18 zusammen mit kleineren Bildschirmgrößen verwendet oder Zugänge für bestimmte Nutzergruppen mit reduziertem Funktionsumfang bereitstellen will. Daneben kann man eine telnet-Schnittstelle[3] definieren.



Das Web-Interface kurz erklärt
  • Am oberen Bildschirmrand befindet sich ein Kommandofeld. In diesem können Befehle eingegeben werden, die FHEM nach Eingabe der Enter-Taste ausführt
  • Links daneben befindet sich ein Symbol (+), über das Sie ein Eingabefeld für den Import von RAW-Code erreichen können
  • Mit dem ersten Menüpunkt links - Save config - können Änderungen gespeichert werden. Erst dann werden werden diese in die Konfigurationsdatei geschrieben und sind somit auch noch nach einem Neustart von FHEM vorhanden. Ungespeicherte Änderungen signalisiert FHEM durch ein ? neben dem Menüpunkt
  • Im nächsten Abschnitt links werden alle vorhandenen Räume aufgelistet. Zu Beginn sind das nur die Räume Unsorted und Everything. Weitere Räume können natürlich später angelegt werden
  • Im - vorläufig - letzten Abschnitt auf der linken Seite sind einige nützliche Links untergebracht

Absicherung der FHEM-Serverkomponente

In der Grundkonfiguration kann jeder, der sich in dem selben Netzwerk wie der FHEM-Server befindet, unverschlüsselt und ohne der Eingabe von Benutzerdaten auf FHEM zugreifen. FHEM weist mit einer Sicherheitswarnung auf diesen Umstand hin. Um die Installation abzusichern, bieten sich mehrere empfohlene Optionen an.

allowed und SSL

Mit diesen Einstellungen können beide Konfigurations-Möglichkeiten in FHEM (telnet und Webinterface) mit einem Passwort und einer Transport-Verschlüsselung (HTTPS/SSL) abgesichert werden.

Info green.pngSie erhalten für alle FHEM-Befehle die jeweilige Syntax und weitere Informationen, wenn Sie help <Befehl> in der Kommandozeile eingeben.

Dazu müssen zunächst ein oder mehrere allowed-Geräte[4] definiert werden. Die Anleitung dazu findet sich in der CommandRef oder indem in der FHEM-Kommandozeile der Web-Schnittstelle help allowed eingeben wird.

Ist keine allowed-Instanz definiert, sind Zugriffe auf FHEM nur innerhalb desselben Netzwerks möglich.

Info green.pngHier wie im Folgenden und in vielen Beispielen, die in der Dokumentation zu finden sind, findet sich die Schreibweise <Befehl> <Parameter>. Dies ist so zu verstehen, dass die Angaben in der Klammer jeweils einschließlich der <>-Zeichen durch eine sinnvolle eigene Angabe zu ersetzen sind.


Zusätzlich kann für FHEMWEB mithilfe des Attributes HTTPS eine HTTPS-Verbindung aktiviert werden. Für telnet (welches mehr oder weniger ein TCP/IP Port ist) wird das Attribut[5] SSL verwendet.

Standardmäßig ist keine dieser Einstellungen gesetzt. Um die deshalb erscheinenden Sicherheitswarnungen zu deaktivieren, kann das globale Attribut motd verwendet werden.

FHEM und das Internet

Sofern FHEM nicht nur aus dem lokalen Netz erreichbar sein soll, sollten zusätzliche Sicherheitsmaßnahmen ergriffen werden. Mögliche Optionen dafür sind die Verwendung eines VPNs (Virtual Private Network) und/oder eines Reverse-Proxy-Servers mit z.B. Apache oder nginx.

Weitere Sicherheitshinweise

Beachten Sie, dass nicht nur die Software auf Ihrem Server stets aktuell gehalten werden muss, sondern auch die von Ihnen verwendeten Komponenten maßgeblich dazu beitragen, wie sicher Ihre Hausautomatisierung insgesamt ist.


Schnittstellen zur realen Welt

Info green.pngSofern Sie an dieser Stelle keine konkreten Geräte haben, die Sie in Ihr FHEM einbinden wollen, können Sie mit Hilfe der ersten Schritte in FHEM einen Eindruck gewinnen, wie Geräte in FHEM eingerichtet werden.

Um Informationen über Ereignisse oder Zustände in der realen Welt zu erhalten, muss FHEM mit der Außenwelt verbunden werden.

Dies geschieht in vielen FHEM-Installationen durch die Verwendung eines oder mehrerer USB-Geräte (z.B. CUL, FHZ1x00, TCM, ZWave, etc.) welche mit dem FHEM-Server verbunden sind. Dazu werden die Perl serial-Module[6] benötigt. Im commandref-Abschnitt zum jeweiligen USB-Gerät ist ersichtlich, welche Module genau benötigt werden. [7] Sie benötigen dieses Modul nicht, wenn das Gerät über Ethernet angeschlossen wird (z.B. HM-LAN oder CUNO).

Automatische Konfiguration

In der Standard-Konfiguration sucht FHEM beim Start automatisch nach USB-Geräten wie z.B. FHZ, CUL[8] , COC, ZWave oder TCM und erstellt die entsprechenden Einträge in seiner Konfigurationsdatei. Wird ein Gerät im laufenden FHEM-Betrieb angeschlossen, muss FHEM durch die Eingabe von shutdown restart in der Befehlszeile neu gestartet werden, bevor das Gerät verwendet werden kann.

Für automatisch eingebundene Geräte müssen in der Regel noch weitere Einstellungen vorgenommen werden. Dies erfolgt durch das Setzen entsprechender Attribute. Die verfügbaren Attribute sowie teilweise auch konkret einstellbare Werte für die Attribute können aufgerufen werden, indem auf auf das entsprechende Gerät im jeweiligen Raum geklickt wird. Neu angelegte Geräte werden im Raum Unsorted angezeigt.

Sobald die automatische Konfiguration aller zu verwendenden USB-Geräte abgeschlossen ist, sollte die automatische Erkennung durch Eingabe von attr initialUsbCheck disable 1 in der Befehlszeile deaktiviert werden.

Manuelle Konfiguration

Info green.pngIn der Commandref findet sich in der Regel eine Darstellung in der folgenden Form: define <name> CUL <device> <FHTID>. Dabei sind alle Angaben mit Klammern dazu gedacht, durch eigene Werte (ohne Klammern) ersetzt zu werden.

Um Geräte mit USB-Anschluss manuell zu definieren (oder falls FHEM diese nicht automatisch erkennt), kann - nach Anschluss des Gerätes - im Verzeichnis /dev nach der dort entsprechend eingetragenen Gerätebezeichnung gesucht werden. Für einen CUL zum Beispiel wird unter einem Linux-Betriebssystem eine Datei mit der Bezeichnung /dev/ttyACM* angelegt. Auf OS X /dev/cu.usbmodem*. Mit dieser Gerätebezeichnung (also des Dateinamens) kann das Gerät manuell in der Befehlszeile angelegt werden.

  • Am Beispiel eines CUL-Sticks: define CUL1 CUL /dev/ttyACM0@9600 1234[9]
  • Oder eines Z-Wave-Controllers: define ZWDongle ZWDongle /dev/serial/by-id/usb-0658_0200-if00@115200[10]

Informationen, wie genau das jeweilige Gerät angelernt wird, finden sich im zugehörigen Abschnitt der commandref

Einbinden und Konfiguration von Sensoren und Aktoren

autocreate

Viele funkgesteuerte Geräte werden in der default-Konfiguration wegen der voreingestellten autocreate-Funktion automatisch erstellt, sobald diese Werte senden.

Diese Funktion erzeugt automatisch beim Empfang einer Nachricht von einem Geräten (z.B. eines Sensors wie dem S300 oder FHT) ein neues Device in FHEM. Bitte warten Sie eine gewisse Zeit, beobachten Sie die Logeinträge oder den Eventmonitor und aktualisieren Sie Ihren Browser um neu erstellte Geräte angezeigt zu bekommen. Die automatisch vergebenen Namen orientieren sich dabei an technischen Parametern.

Umbenennen

Info green.pngWenn Sie das Gerät selbst umbenennen, werden auch die zugehörigen Logfiles und Weblinks automatisch mit umbenannt. Wenn Sie dagegen die Weblinks oder Logfiles umbenennen, werden die zugehörigen Geräte nicht mit umbenannt.

Um automatisch erstellte Geräteeinträge umzubenennen, kann der Befehl rename verwendet werden. Geben Sie den Befehl mit den entsprechenden Parametern in der Befehlszeile der Webseite ein. Z.B.:

   rename FHT_1234 fht.kitchen 

Manuelles Anlegen

Wenn Sie das Gerät manuell anlegen wollen oder müssen, weil autocreate diese nicht anlegen kann, dann gehen Sie folgendermaßen vor:

Warten Sie eine Weile bis Daten übertragen werden. Im Logfile (zu erreichen unter Webseite Menüpunkt Unsorted-> FileLog -> Logfile -> text) erscheint z.B. folgende Textzeile:

   FS20 Unknown device <HOUSECODE>, Button <BTN> Code <CDE>, please define it  

Definieren Sie dieses neue Gerät mittels folgendem Eintrag:

   define piri1 FS20 <HOUSECODE> <BTN>  

Setzen sie das model-Attribut des Gerätes:

   attr piri1 model fs20piri  

Anschließend erhalten Sie nur noch die für dieses Gerät verfügbaren Attribute angezeigt. Hier sehen Sie eine komplette Liste der FS20 Modelle. Bei einem anderen neuen Gerät sollte eine ähnliche Nachricht im Logfile erscheinen.

Um HomeMatic- oder zWave-Geräte anzulernen, muss FHEM zuerst mit dem Befehl set CUL hmPairForSec 600 in Empfangsbereitschaft versetzt werden und anschließend der Anlernknopf auf dem Gerät gedrückt werden.

Einbinden von Geräten, die Anlernbefehle benötigen

Manche Geräte benötigen Anlernsignale, um eine Koppelung mit anderen Geräten bzw. einer Zentrale wie FHEM herzustellen. Für solche Geräte muss zunächst manuell eine Konfiguration in FHEM vorgenommen werden, um solche Anlernsignale generieren zu können.

Definieren Sie z.B. ein FS20 Gerät mit z.B. folgendem Befehl in der Befehlszeile:

   define lamp1 FS20 1234 56

Dann drücken Sie den Anmeldeknopf an dem Gerät solange, bis die LED blinkt. Anschließend klicken sie auf den on Link auf der FHEM Webseite um das Einschalt-Kommando zu senden. Die LED sollte aufhören zu blinken. Das Gerät ist nun auf den Hauscode 1234 Gerätecode 56 programmiert. Sie können alternativ die 4-base ELV-Notation benutzen. Anschließend können Sie wieder modellspezifische Attribute für das Gerät setzen. Z.B.:

   attr lamp1 model fs20st

Mit diesem Eintrag bekommen Sie nunmehr wieder nur die für dieses Gerät relevanten Kommandos angezeigt.

Info green.pngDas automatische oder manuelle Eintragen von FHT/HomeMatic/EnOcean-Geräten in FHEM bedeutet nicht automatisch, dass das betreffende Gerät mit FHEM gepairt ist bzw. das pairing erfolgreich abgeschlossen wurde!

Andere Systeme (EnOcean/HomeMatic/ZWave) brauchen eine umfangreichere Prozedur und das entsprechende Gerät muss zuerst in den pairing mode versetzt werden. Bitte sehen Sie sich den entsprechenden Eintrag auf der commandref.html-Seite für Ihr Gerät zur Information an.

Grundlegendes zum Steuern Ihrer Geräte

Sobald Sensoren und Aktoren in FHEM eingebunden sind, können diese bereits über telnet oder die WEB-Schnittstelle gesteuert werden.

Info green.pngFür Einsteiger empfiehlt sich die Lektüre der [Einführung in die Automatisierung mit FHEM]. Zwar sind dort Neuerungen wie der Style f18, set magic, Module wie allowed oder DOIF nicht behandelt und die Auswahl an verfügbaren Hardwaresystemen hat sich seit dessen letzter Aktualisierung weiter erhöht. Dennoch bietet diese Einführung nach wie vor einen recht umfassenden Überblick in die allgemeinen Vorgehensweisen und Möglichkeiten mit FHEM.

Für den Aufbau einer zeit- und ereignisorientierten Steuerung werden jedoch weitere Steuerungselemente - sogenannte "Module" - benötigt. Nachfolgend sollen kurz einige der wichtigsten Module vorgestellt werden.

Unter Automatisierung stehen weitere Informationen zur Verfügung.

Zeitabhängige Kommandos

Zur Zeitsteuerung benötigt man einen Timehandler.

Reaktion auf Ereignisse

Geräte teilen bestimmte Aktualisierungen ihres Zustandes über Events mit, z.B. die Änderung eines Messwertes oder eines Schaltzustandes. Die Events werden von Eventhandlern empfangen und verarbeitet. Als Ergebnis der Verarbeitung werden Befehle ausgeführt.

Die einfachste Form eines Eventhandlers ist ein notify oder DOIF.

Die in FHEM auftretenden Ereignisse können mit dem Eventmonitor angezeigt werden oder in einem mit FHEM verbundenen Telnet-Client durch den Befehl inform timer.

Die angezeigten Events sind die wichtigste Grundlage, um einen Ereignisfilter, Suchmuster oder Auslöser zu formulieren.


Das Event wird auf die nachstehende Weise dargestellt:

   2011-12-16 21:51:55 FS20 myPiri on-for-timer 120 

Gemäß dieser Eventzeile können Sie eine Aktion wie folgt definieren:

   define lampNotify notify myPiri set myLamp on 

oder

   define lampNotify notify myPiri:on.* set myLamp on 

Um dieses notify zu testen können Sie die Ereignisse unter Verwendung des Befehls trigger[11] simulieren. Z.B.:

   trigger myPiri on-for-timer 120 
    

at, notify und andere Eventhandler, wie z.B. DOIF[12], sequence[13], watchdog[14] usw. verwenden entweder vordefinierte FHEM-Kommandos, SHELL-Scripte oder Perl-Ausdrücke als Argumente. Für Details und Tipps zu Perl-Ausdrücken lesen Sie bitte den Abschnitt zu Perl Besonderheiten in der commandref. Sowohl bei der Auswertung von Ereignissen, als auch bei den FHEM-Kommandos können Sie reguläre Ausdrücke verwenden, sogenannte regex. Eine kurze Einführung zu regex finden Sie z.B. hier: https://regex101.com/.

Kombinierte Zeit- und Ereignissteuerung

Auch eine kombinierte Zeit- und Ereignissteuerung ist mit Timehandlern und Eventhandlern möglich.

DOIF: Kombination einer Zeitspanne mit der Abfrage eines Readings

Zwischen 6 Uhr und 19 Uhr soll eine Lampe eingeschaltet werden, wenn die Helligkeit unter 40 gemessen wird. Sonst, wenn die Bedingung nicht zutrifft, soll die Lampe ausgeschaltet werden. Liegt die Helligkeit zum Beginn der Zeitspanne (6 Uhr) bereits unter 40, soll die Lampe zu diesem Zeitpunkt eingeschaltet werden. Liegt die Helligkeit zum Ende der Zeitspanne (19 Uhr) noch unter 40, soll die Lampe zu diesem Zeitpunkt ausgeschaltet werden.

Im Event monitor erscheint folgendes Event, der hervorgehobene Teil des Events löst die Bedingungsprüfung in DOIF aus.

2018-08-07 15:46:33.887 CUL_HM sensor brightness: 39.41

Im DOIF wird der Auslöser immer in eckigen Klammern angegeben, wie hier die Zeitspanne und das Ereignis; in der Definition fett hervorgehoben. Der Auslöser für das Ereignis kann über die Kombination von Gerätename (sensor) und Gerätevariable (brightness) angegeben werden, dabei wird der Wert des Readings zurückgegeben, vergleichbar mit set magic. Die Verknüpfung von Zeitspanne und Readingsvergleich erfolgt über einen logischen Operator, dem Perl-Operator and. Der Wert des Readings wird mit einem Vergleichswert (40) über einen vergleichenden Operator verglichen, dem Perl-Operator < mit der Bedeutung kleiner als.

define di_lamp DOIF ([06:00-19:00] and [sensor:brightness] < 40) (set lamp on) DOELSE (set lamp off)

Das DOIF kann mit dem FHEM-Befehl setreading[15] getestet werden.

 setreading sensor brightness 39

Lässt das DOIF innerhalb der Zeitspanne die Lampe einschalten.

 setreading sensor brightness 40

Lässt das DOIF innerhalb der Zeitspanne die Lampe ausschalten.

Daten aufzeichnen und darstellen

Beispiel für Solarthermie

Daten aufzeichnen: Loggen

Um Daten/Nachrichten/Ereignisse für eine spätere Analyse oder grafische Darstellung aufzuzeichnen, können Sie ein oder mehrere Device/s vom Typ FileLog anlegen. Die Funktion autocreate erstellt für neu erkannte Geräte automatisch jeweils eine Logdatei. Sie können jedoch die Funktion createlog nutzen, um später eine weitere Logdatei hinzuzufügen. Wenn Sie die Daten von mehreren Geräten in einem FileLog zusammenfassen wollen, passen Sie den regulären Ausdruck (regex) entsprechend an.

FHEMWEB hat eine vordefinierte Funktionen zur Erstellung von Grafiken aus den aufgezeichneten Daten, näheres dazu im folgenden Abschnitt.

Bei FileLog können Sie die Aufzeichnungsdauer sowie Archivierungsfunktionen selbst bestimmen. Setzen Sie dazu entsprechende Logkriterien (z.B. Jahr/Monat/Woche/Tag) bzw. die Attribute nrarchive und/oder archivecmd.

Wenn Sie statt FileLog lieber eine Datenbank nutzen wollen, können Sie dblog verwenden.

Grafische Aufarbeitung aufgezeichneter Daten: plotten

Um die aufgezeichneten Daten grafisch darzustellen, kann man in die Detailansicht eines FileLogs wechseln und dort auf "Create SVG instance" klicken. Damit gelangen Sie zum gplot-Editor.

Gplot-Editor1.png

In diesem können Sie nun alle Daten wählen, die grafisch dargestellt werden sollen und dabei auch Daten aus unterschiedlichen Quellen gemeinsam darstellen. Beachten Sie, dass Sie dazu ggf. Zwischenstände durch Drücken der Taste write .gplot file speichern müssen, um Daten aus anderen als der zuletzt genutzten Quelle auswählen zu können.

Im Beitrag Plots erzeugen sowie im Abschnitt SVG der commandref erhalten Sie hierzu weitere Informationen.

Um fremde (nicht unter FHEM erfasste) Daten als Plot oder als normalen Text anzuzeigen, spezifizieren Sie bitte den readonly Parameter bei der Definition des FileLog zusätzlich zu dem korrekten Dateinamen; der <regexp> Parameter sollte identisch dem Devicenamen sein (im folgenden Beispiel also messages):

define messages FileLog /var/log/messages <regexp> readonly

Das Web-Interface anpassen

In der Darstellung bis hier war FHEMWEB für das Erscheinungsbild von FHEM im Browser verantwortlich, wobei der voreingestellte Style "f18" für eine dynamische Darstellung für verschiedene Bildschirmgeräte und -größen sorgt.

Styles

Sie können das Erscheinungsbild von FHEMWEB ändern, indem Sie andere Farbschemata oder andere Styles festlegen. Dabei können Sie für verschiedene Instanzen[16] auch unterschiedliche Styes verwenden und so z.B. das Aussehen/und oder die Funktionalität von FHEM verändern, je nachdem, ob FHEM zu Administrationszwecken[17] oder in der regulären Anwendung aufgerufen wird[18].

Räume und Gruppen

Um die Geräte zu ordnen, bietet FHEMWEB eine Reihe von Möglichkeiten an. Es ist in der Regel zu empfehlen, alle Geräte in Räumen[19] zu gruppieren und auch innerhalb der Räume sinnvoll anzuordnen, indem Sie das group-Attribut setzen[20], mit defaultRoom läßt sich eine Startseite festlegen. FHEMWEB zeigt Geräte ohne Raum-Attribut im Raum (Menüpunkt) Unsorted. Fügen Sie Geräten das hidden-Raumattribut hinzu, so werden diese Geräte nicht auf der Webseite angezeigt.

Sie können ein kürzeres Menü auf der Webseite erzeugen, indem Sie Menüpunkte (bzw. Räume), die nicht angezeigt werden sollen mit dem Attribut hiddenroom versehen[21]

Farben und Schriften können Sie durch Anpassung der Datei style.css ändern (Edit files -> style.css) oder Sie erstellen Ihren eigenen Stil (siehe auch stylesheetPrefix) dann wird Ihr neuer Stil auch nicht beim nächsten Ausführen des update-Kommandos überschrieben.

Andere Frontends

Neben FHEMWEB können auch andere Frontends an FHEM angebunden werden, um darüber Ihre Geräte zu steuern und darzustellen. Weiterführende Hinweise finden Sie hier im Wiki und im Forum unter FHEM » Frontends.

Komplexe Strukturen

Um gleichzeitig verschiedene Geräte auf einmal anzusprechen, kann mit Filtern und Abfragen gearbeitet werden. Details entnehmen sie bitten dem devspec-Abschnitt der commandref. Z.B. können Sie die room=<roomname> Spezifikation verwenden, um gleichzeitig alle diesem Raum zugeordneten Geräte auf einmal anzusprechen.

Für noch komplexere Szenarien informieren sie sich bitte über das structure-Modul. Sie können verschiedene Ebenen wie Flure, Gebäude usw. definieren und alle Geräte einer definierten Struktur auf einmal ansprechen.

Wichtige Befehle und Module für die erste Zeit

FHEM ist ein Perl Server...

Die meisten FHEM-Nutzer werden früher oder später daran erinnert, dass FHEM in Perl programmiert ist. Auch wenn es in vielen Fällen nicht zwingend erforderlich ist, diese Programmiersprache zu erlernen, ist es für ein vertieftes Verständnis der Funktionsweise Ihrer Hausautomatisierung hilfreich, wenn Sie sich auch mit den Grundlagen zu Perl sowie der häufig vorkommenden regex-Ausdrücken vertraut machen. Manche Problemstellungen lassen sich nach wie vor am effektivsten unmittelbar mit diesen Werkzeugen lösen. Einen ersten Einblick in diese Themen finden Sie in den FHEM Befehls-Typen, PERL Besonderheiten und dem Artikel zu 99 myUtils anlegen. In dieser Artikelserie sind weitere Informationen für Fortgeschrittene und Experten zu finden.

Hinweise

  1. Dieses befindet sich häufig unter /opt/fhem/log
  2. Hier wie im Folgenden wird davon ausgegangen, dass Sie FHEM auf einem Server mit einem Linux-Betriebssystem betreiben, sofern nicht ausdrücklich etwas anderes angegeben ist
  3. Da diese das System nur gering belastet, kann darüber FHEM auch noch in Situationen erreicht und gesteuert werden, in denen FHEMWEB nicht mehr funktioniert.
  4. Geräte werden in FHEM oft als "Device" bezeichnet. Allerdings wird der Begriff "Device" oder "Gerät" im FHEM-Kontext etwas weiter verstanden. Dies kann, muß aber nicht zwingend ein physisches Gerät sein. Als "Device" wird schlicht alles bezeichnet, für das eine "define ..."-Anweisung existiert bzw. eingegeben wurde/wird/werden kann.
  5. Weitere Informationen zu den hier verwendeten FHEM-spezifischen Begriffen finden Sie im Glossar
  6. Wenn das serial-Modul benötigt wird, kann es mit dem Kommando sudo cpan Device::SerialPort nachträglich installiert werden. Es gibt aber auch schon bereits vorkompilierte Debian-Pakete (libdevice-serialport-perl). In OSX 10.5 ist das Paket ebenfalls bereits enthalten. Kann das Paket nicht installiert werden, bietet sich die @directio-Option in der commandref als mögliche Informationsquelle an.
  7. Das gilt entsprechend, wenn Geräte über die serielle Schnittstellen eingebunden werden sollen, die an den GPIO-Schnittstellen eines Raspberry Pi verfügbar sind.
  8. Unter einem Linux-Betriebssystem wird FHEM gegebenenfalls versuchen, einen bereits angesteckten aber noch unprogrammierten CUL zu programmieren. Details dazu entnehmen Sie bitte den Beschreibungen der Befehle usb und CUL flash in der commandref.
  9. Auch hier ist die Angabe "1234" lediglich beispielhaft und durch einen eigenen Parameter zu ersetzen
  10. Die für diese Art der Einbindung erforderlichen Informationen erhalten Sie, indem Sie auf Betriebssystemebene ls -l /dev/serial/by-id eingeben
  11. commandref/trigger
  12. DOIF vereint Ereignissteuerung, Zeitsteuerung, Zustandsautomaten und Frontend in einem Modul
  13. sequence verknüpft eine Folge von Ereignissen
  14. watchdog reagiert auf ausbleibende Ereignisse
  15. commandref/setreading
  16. Dabei ist jeweils nur die Verwendung eines anderen Ports erforderlich
  17. In FHEMWEB-Instanzen, in denen code eingegeben werden soll, kann zur Unterstützung codemirror aktiviert werden.
  18. Weitere Hinweise hierzu finden Sie in der commandref zu FHEMWEB bzw. allowed
  19. Um gegliederte Räume zu erzeugen, nutzen Sie den Trenner "->". Beispiel: attr <device> room Steuerung->Logik.
  20. Für die Sortierung innerhalb einer Gruppe kann das Attribut sortby genutzt werden.
  21. Darüber lassen sich auch die Anzeige von links zum Zugriff auf die Detailansichten ausschalten