Debian FHEM: Unterschied zwischen den Versionen
Zeile 12: | Zeile 12: | ||
cd /usr/local/src | cd /usr/local/src | ||
wget http://fhem.de/fhem-5.4.deb | wget http://fhem.de/fhem-5.4.deb | ||
dpkg -i fhem-5. | dpkg -i fhem-5.4.deb | ||
Directory für Konfigfiles: | Directory für Konfigfiles: |
Version vom 12. Mai 2013, 18:27 Uhr
Allgemein
FHEM ist ein Hausautomatisierungssystem, das eine sehr große Vielzahl von Automatisierungssystemen unterstützt. Beispielsweise wird FS20, Homematic, USB Steckdosenleiste SIS-PM, 433MHz Funksteckdosen, AVR-Mikrocontrollerschaltungen basierend auf Ethersex und viele andere unterstützt.
Voraussetzungen:
- Perl
- Serialport Perl Modul
- Zur Ansteuerung der Funksensoren und Aktoren ist ein entsprechendes Inerface wie z.B. CUL oder CUN von www.busware.de erforderlich.
Installation
apt-get install perl-base perl-modules libdevice-serialport-perl cd /usr/local/src wget http://fhem.de/fhem-5.4.deb dpkg -i fhem-5.4.deb
Directory für Konfigfiles:
mkdir /etc/fhem ln -s /opt/fhem/fhem.cfg /etc/fhem/fhem.cfg
Initialer Funktionstest
Webinterface
Webbrowser öffnen und Adresse:
http://IP_des_Server:8083/fhem
eingeben. Die Default Webpage sollte erscheinen.
Telnet Interface
FHEM bietet ein Telnet Interface mit dessen Hilfe Befehle direkt auf der Console eingegeben werden können, bzw. per Script gesteuert Aktionen ausgelöst werden können.
Linux Betriebssystem enthalten normalerweise bereits einen Telnet Client (bzw. evtl. mit apt-get install telnet unter Debian/Ubuntu Linux erst installieren):
telnet IP_Des_Server 7072
Unter Windows kann z.B. Putty verwendet werden, um eine Telnet-Verbingund zum Telnet-Port 7072 von FHEM herzustellen.
Nach dem Herstellen der Telnet-Verbindung sollte folgende Ausgabe erscheinen:
Trying 192.168.0.207... Connected to ldaptest.schiele.homelinux.org. Escape character is '^]'.
Evtl. muss hier nun die ENTER-Taste betätigt werden, damit der FHEM-Prompt (fhem> ) erscheint .
help
eingeben, um eine Auflistung aller FHEM-Befehle anzuzeigen. Mit dem Befhel
quit
kann die Telnet Verbindung wieder beendet werden.
Update
In regelmäßigen Intervallen werden neue Pakete (derzeit Version 5.3) herausgegeben. Um aktuellen Stand der Entwicklung teilnehmen zu können, kann FHEM sich selbst aktualisieren. Dies kann allerdings in Einzelfällen dazu führen, dass der aktuelle Code Fehler oder Bugs enthält. Andererseits bietet sich aber auch die Chance von neuen Möglichkeiten zu profitieren.
Telnet Session zu FHEM öffnen
telnet IP_des_Server 7071
Folgenden Behfehl eingeben:
update
Konfiguration
Nachdem FHEM eine Vielzahl von Sensoren und Aktuatoren unterstützt, können hier nur exemplarisch ein paar Beispiele aufgeführt werden. Generll sei auf die Dokumentationsseiten (http://fhem.de/fhem.html#Documentation) und das WIKI (http://fhemwiki.de/index.php/FHEM) von FHEM verwiesen, wo zahlreiche Konfigurationsbeispiele und HOWTO's aufgeführt sind.
Das zentrale Konfigfile ist unter /etc/fhem/fhem.cfg bzw. /opt/fhem/fhem.cfg erreichbar. Beide Versionen wurden oben mittels Symbolic Link verknüpft, sodass beiede immer auf das identische File verweisen. Um Änderungen durchzuführen, folgenden Befehl eingeben:
vi /etc/fhem/fhem.cfg
SIS-PM Steckdosenleiste
FHEM kann SIS-PM Steckdosenleisten ansteuern. Dazu ist das sispmctl-Tool wie hier beschrieben erforderlich.
Damit FHEM auf die Steckdosenleiste zugreifen kann, muss dem User fhem, mit dessen Userrechten FHEM läuft, das Recht eingeräumt werden (siehe auch SIS-PM mit Userrechten):
addiser fhem sispm
Anschließend muss die Serialnummer der USB-Steckdosenleiste ermittelt werden:
sispmctl -s
Die Ausgabe könnte beispielhaft folgendermaßen aussehen:
Gembird #0 USB information: bus 004, device 004 device type: 4-socket SiS-PM serial number: 01:25:78:e3:45
FHEM-Konfig:
define sispm SISPM /usr/local/bin/sispmctl define Steckdose1 SIS_PMS 01:25:78:e3:45 1 define Steckdose2 SIS_PMS 01:25:78:e3:45 2 define Steckdose3 SIS_PMS 01:25:78:e3:45 3 define Steckdose4 SIS_PMS 01:25:78:e3:45 4
- Mit der ersten Zeile wird der Pfad zum sispmctl-Tool festgelegt, damit FHEM dieses verwenden kann.
- In den folgenden 4 Blocks werden die vier einzeln ansteuerbaren Steckdosen definiert.
- define Steckdose1 SIS_PMS 01:25:78:e3:45 1
- Steckdose1: Beliebige Bezeichnung unter der die definierte Steckdose ansprechbar sein soll (dies könnte z.B. auch Drucker, Scanner, oder ähnliches sein), und auch entsprechend im Webinterface aufgeführt wird
- SIS_PMS: Schlüsselwort für FHEM, damit dieses erfkennen kann, dass es sich bei Steckdose1 um eine einzelne Steckdose der USB-Steckdosenleiste SIS-PM handelt.
- 01:25:78:e3:45: Serialnummer der Steckdosenleiste (siehe oben)
- 1: Port 1 (Steckdose 1) der der USB Steckdosenleiste
- attr Steckdose1 room Steckdosen: FHEM kann ganz allgemein jedes einzelene Device in Räumen organisieren, um die Übersichtlichkeit im Webinterface zu erhöhen. Mit dem Attribut room (attr device room roomname) wird das Device einem Raum zugeordnet. D.h. im Beispiel befindet sich Steckdose 1 im Raum Steckoden.
- define Steckdose1 SIS_PMS 01:25:78:e3:45 1
Nach dem Laden der Konfiguration (siehe auch hier), steht die USB-Leiste in der Weboberfläche und via TELNET zur Verfügung.
Z.B. Steckdose3 via Telnet einschalten:
set Steckdose3 on
AVR NETIO
FHEM bietet die Möglichkeit, AVR NET-IO's direkt einzubinden. Dazu sind. sog. Classdef-Dateien erforderlich, die die nötigen NET-IO Befehle enthalten, umd diese FHEM bekannt zu geben. Prinzipiell erfolgt die Einbundung folgendermaßen:
define AVRNETIO ECMD telnet IP_NET-IO:2701 attr AVRNETIO classdefs RELAIS=/etc/fhem/relais.class
Es können auch mehrere verschiedene classdefs verwendet werden, z.B. um Relais und Funksteckdosen mit einem NET-IO anzusteuern:
attr AVRNETIO classdefs RELAIS=/etc/fhem/relais.class:RFM12=/etc/fhem/tevion.class
Schalten von Net-IO Ausgängen
define AVRNETIO ECMD telnet IP_NET-IO:2701 attr AVRNETIO classdefs RELAIS=/etc/fhem/relais.class
Ein Relais wird dabei folgendermaßen definiert:
define fhembez ECMDDEVICE RELAIS netiobez
- fhembez: Bezeichnung des Ausgangs in FHEM
- netiobez: Bezeichnung des Ausgangs im NET-IO
Z.B.
define Relais1 ECMDDevice RELAIS Relais1 define Relais2 ECMDDevice RELAIS Relais2 define Relais3 ECMDDevice RELAIS Relais3 define Relais4 ECMDDevice RELAIS Relais4
Classdeffile:
vi /etc/fhem/relais.class
Folgende Zeilen einfügen:
params NAM_PIN set on cmd {"pin set %NAM_PIN on"} set on postproc {s/on/success/; "$_" eq "success" ? "ok" : "error";} set off cmd {"pin set %NAM_PIN off"} set off postproc {s/off/success/; "$_" eq "success" ? "ok" : "error";}
Schalten von Funksteckdosen via Net-IO
Das AVR-NETIO bietet die Möglichkeit, billige Funksteckdosen mit Hilfe eines sog. 433MHz- RFM12-Funkmoduls zu schalten. Die Ethersex Firmware bietet Support für eine ganze Zahl unterschiedlicher Funksteckdosen Typen. Exemplarisch wird im Folgenden das Schalten von Tevion (Aldi) Funksteckdosen beschrieben.
define AVRNETIO ECMD telnet IP_NET-IO:2701 attr AVRNETIO classdefs RFM12=/etc/fhem/tevion.class
define Funksteckdose1 ECMDDevice RFM12 77 42 170 86 86 85 85 define Funksteckdose2 ECMDDevice RFM12 77 42 170 150 90 149 89 define Funksteckdose3 ECMDDevice RFM12 77 42 170 166 89 165 90 define Funksteckdose4 ECMDDevice RFM12 77 42 170 102 85 101 86
Classdeffile:
vi /etc/fhem/tevion.class
Folgende Zeilen einfügen:
#Uebergabeparams params code1 code2 code3 on1 on2 off1 off2 set on cmd {"rfm12 tevion %code1,%code2,%code3 %on1,%on2 70,6"} set on postproc {s/OK/success/; "$_" eq "success" ? "ok" : "error";} set off cmd {"rfm12 tevion %code1,%code2,%code3 %off1,%off2 70,6"} set off postproc {s/OK/success/; "$_" eq "success" ? "ok" : "error";}
FS20
TBD
Organisation mit Rooms und Groups
Um Ordnung in die definierten Sensoren und Aktoren, können diese in unterschiedliche Räume (rooms) und Grouppen (groups) organisiert werden.
- Rooms:
define Relais1 ECMDDevice RELAIS Relais1 attr Relais1 room Steckdose
- Groups
define Reed_1 ECMDDevice RELAIS Relais1 attr Reed_1 room Steckdose attr Reed_1 group ReedRelais define Funksteckdose_1 ECMDDevice RFM12 77 42 170 86 86 85 85 attr Funksteckdose_1 room Steckdose attr Funksteckdose_1 group Funksteckdosen
Uebernehmen von Konfigänderungen
Die Änderungen am Konfigfile können FHEM über folgende beiden Wege mitgeteilt werden:
- Stop/Neustart von FHEM
/etc/init.d/fhem stop /etc/init.d/fhem start
- Telnet Befehl
telnet IP_Des_Server 7072
Am FHEM Prompt mit folgendem Befehl das Konfigfile neu einlesen lassen:
rereadcfg
Optional: FHEM via Apache Reverse Proxy
FHEM kann via Apache Reverse Proxy (siehe auch hier) angesprochen werden. Im folgenden Beispiel wird ein Username/Passwort verwendet und die Übertragung der Userdaten via SSL geschützt.
Voraussetzung:
vi /etc/apache2/sites-enabled/fhem_https.conf
Folgende Zeilen enfügen und die Einträge entsprechend den eigenen Bedürfnissen anpassen:
<VirtualHost *:443> ServerName fhem.domain.org ProxyRequests Off <Proxy *> Order allow,deny Allow from all </Proxy> SSLCertificateFile /etc/ssl/CA/certs/wildcard.pem SSLEngine on SSLProxyEngine On ProxyPass / http://IP_des_Server:8083/ <Location /> ProxyPassReverse / ProxyHTMLURLMap / /hem/ ProxyHTMLURLMap /fhem/ /hem/ AuthType Basic AuthName "FHEM requires Authorization" AuthUserFile /var/apache_pwd/fhem.passwd Require valid-user </Location> </VirtualHost>
Apache neu starten:
/etc/init.d/apache2 restart
Passwort-File anlegen und User fhem definieren
htpasswd -c /var/apache_pwd/fhem.passwd fhem
Android Handy App
Neben der Weboberfläche, die auch über moderne Smartphone mit dem Webbrowser erreicht werden kann, existiert eine native Android APP namens andFHEM. Diese ist ganz normal via Google Appstore installierbar (kostenlos).
Konfiguration:
- Datenquelle: FHEMWEB
- URL:
fttp://IP_des_Server:8083/fhem https://fhem.domain.org/fhem
Obwohl es im Webbrowser ausreichend ist, als Adresse https://fhem.domain.org zu verwenden, muss hier http://fhem.domain.org/fhem verwendet werden, damit die APP das Webinterface korrekt parsen kann.
- Benutzername: fhem, falls Apache Virtualhost mit Authorisierung eingerichtet wurde, ansonsten leer
- Passowort: Passwort, falls Apache Virtualhost mit Authorisierung eingerichtet wurde, ansonsten leer
- Aktualisierung beim Applikationsstart: Haken setzen