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. Sie benötigen dieses Modul nicht, wenn das Gerät über Ethernet angeschlossen wird (z.B. HM-LAN oder CUNO).
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.
Die Standard-Installation installiert FHEM in das Verzeichnis /opt/fhem. Wenn Sie jedoch lieber in ein anderes Verzeichnis installieren wollen, so ändern Sie das Installationsverzeichnis im Makefile von FHEM.
Sie können FHEM auch direkt von dem Verzeichnis wo Sie es entpackt haben starten. Um FHEM zu entpacken und gleichzeitig zu starten geben Sie folgendes ein:
make cd /opt/fhem perl fhem.pl fhem.cfg
Danach sollten die Einträge im FHEM-Logfile des Log-Verzeichnisses wie folgend aussehen:
2012.10.27 17:14:28 1: Including fhem.cfg 2012.10.27 17:14:28 3: WEB: port 8083 opened 2012.10.27 17:14:28 3: WEBphone: port 8084 opened 2012.10.27 17:14:28 3: WEBtablet: port 8085 opened 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 ...
Die Sicherheits-Warnung sagt Ihnen, dass einige der FHEM-Webseiten ohne die Eingabe eines Passwortes geöffnet worden sind. Sie sollten entweder ür jede Webseite, wie weiter unten angegeben, ein Passwort festlegen oder das globale Attribut setzen um diese Meldung zu unterdrücken wenn Sie sicher sind das kein Passwort benötigt werden soll.
Verbinden Sie sich mit FHEM indem Sie im Internet-Browser bei Verwendung eines normalen Desktop-Rechners http://fhem-host:8083/fhem oder bei Verwendung eines Smartphones http://fhem-host:8084/fhem oder bei Verwendung eines Tablets wie dem iPad http://fhem-host:8085/fhem eingeben.
Achtung: In der Standardkonfiguration ür die FRITZ!Box ist die Passwortabfrage für alle FHEM-Webseiten voreingestellt. Der Benutzername
kann frei bleiben, aber das einzugebende Passwort muss dem FRITZ!Box-Passwort entsprechen
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.
Unter dem Betriebssystem LINUX (speziell bei der FRITZ!Box 7390) wird FHEM
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.html. Die neu angelegten
Geräte werden im Raum/Men?unkt Unsorted angezeigt. Achtung: Die
Umschaltung eines CUL in den HomeMatic Modus erfolgt nicht automatisch,
sondern muss manuell erfolgen.
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 dem Betriebssystem LINUX 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:
define CUL1 CUL /dev/ttyACM0@9600 1234
Details über die Parameter zur Definition eines CUL finden Sie hier
Ein FHZ-Gerät wird ebenso, aber mit anderen Parametern, angelegt
define FHZ1 FHZ /dev/ttyUSB0
Achtung/Bemerkungen:
Viele funkgesteuerte Geräte werden in der default-Konfiguration wegen der voreingestellten autocreate-Funktion automatisch erstellt.
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. 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.:
rename FHT_1234 fht.kitchen
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
um nur die für dieses Gerät verfügbaren Attribute angezeigt zu bekommen.
Hier sehen Sie eine
komplette Liste der FS20 Modelle.
Bei einem anderen neuen Geräten 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
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 modellspezifische Attribute ür das Gerät setzen. Z.B.:
attr lamp1 model fs20st
Mit diesem Eintrag bekommen Sie nunmehr nur die für dieses Gerät relevanten Kommandos angezeigt
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.
Das automatische oder manuelle eintragen von FHT/HomeMatic/EnOcean-Geräten in FHEM bedeutet nicht automatisch, dass der CUL oder die FHZ mit FHEM gepairt ist.
set CUL hmPairForSec 600
Dann drücken Sie den Anmeldeknopf am HomeMatic-Gerät. Wenn das pairing erfolgreich war sehen Sie CommandAccepted: yes im Detailfenster des Gerätes auf der FHEM Webseite.
telnet <fhemhost> 7072
inform timer
2011-12-16 21:51:55 FS20 myPiri on-for-timer 120
define lampNotify notify myPiri set myLamp on
define lampNotify notify myPiri:on.* set myLamp on
trigger myPiri on-for-timer 120
at, notify und watchdog verwenden entweder vordefinierte FHEM-Kommandos, SHELL-Scripte oder PERL-oneliners als Argumente. Für Details und Tipps für perl onliners lesen Sie bitte die PERL-specials Abschnitte in der commandref.html.
Um Daten/Nachrichten/Ereignisse in einer Datenbank zu speichern informieren Sie sich im Verzeichnis contrib/dblog der FHEM Distribution.
FHEMWEB hat eine vordefinierte Funktionen Anzeige von Dateien des Typs FileLog.
Weitere Informationen im folgenden Abschnitt plot.
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.
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.
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.
Beachten Sie bitte, dass die .gnuplot-Dateien ebenfalls bei der Darstellung von SVG anstelle des Gnuplot Backends benutzt werden.
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.
Beispiele:
attr em1000log logtype power8:Power,text 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).
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.
Der voreingestellte Modus ist SVG. Um das zu ändern, setzen Sie die plotmode
Attribute auf gnuplot oder gnuplot scroll.
Um ältere Daten anzeigen zu lassen, erstellen Sie bitte einen anderen
Weblink und setzen das fixedrange-Attribut auf z.B.:
attr weblink_1 fixedrange 2006-01-01 2007-01-01
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.:
define messages FileLog /var/log/messages fakelog
Beide Standard TCP/IP Weboberflächen in FHEM (telnet und FHEMWEB) k?nen mit einem Passwort und zusätzlich mit Verschlösselung (HTTPS/SSL) gesichert werden.
Das ist jedoch nicht der Standard für die meisten Konfigurationen und es ist der Grund weshalb Sie eine Sicherheitswarnung nach der Installation erhalten.
Ein anderer Weg, einen sicheren 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 obwohl letzteres im Setup komplizierter ist.
Sie können FHEM ebenfalls durch Nutzung eines Apache-Servers absichern, indem Sie basicAuth/HTTPS als Prefix für Ihre FHEMWEB Instanz aktivieren. Fügen Sie die folgenden Zeilen ihrer Datei http.conf des Apache-Servers hinzu.
<Proxy *> AuthType Basic AuthName "Password Required" AuthUserFile /home/httpd/etc/passwd Require valid-user Allow from 127.0.0.1 </Proxy> ProxyPass /fhem http://localhost:8083/fhem ProxyPassReverse /fhem http://localhost:8083/fhemDann starten Sie den Apache-Server erneut mit dem Kommando apachectl graceful. Um die Passwortdatei zu erzeugen geben Sie bitte folgende Befehlszeile ein:
htpasswd -c /home/httpd/etc/passwd <username>
LoadModule ssl_module lib/apache/mod_ssl.so Include /etc/httpd/conf/ssl.conf
Starten Sie den httpd-Deamon mit der startssl-Option (SSL muss in einer Ihrer Systemdateien, z.B. /etc/init.d/http), gesetzt sein.
Es macht Sinn, Ihre Geräte in Räumen zu gruppieren, 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.
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.
Definieren Sie Ihre Geräte in verschiedenen Räumen. Dann können Sie die room=<roomname> Spezifikation verwenden um gleichzeitig verschiedene Geräte auf einmal anzusprechen. Details entnehmen sie bitten dem devspec Abschnitt.
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.