Debian FHEM

Aus Wiki
Zur Navigation springen Zur Suche springen

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 libwww-perl
cd /usr/local/src
wget http://fhem.de/fhem-5.5.deb
dpkg -i fhem-5.5.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.

Fhem.png


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 7072

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.


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

Fhem group.png


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
  • Apache2.2:

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
  • Apache2.4:

Folgende Zeilen enfügen und die Einträge entsprechend den eigenen Bedürfnissen anpassen:

<VirtualHost *:443>
  ServerName fhem.domain.org
  
  ProxyRequests Off
  <Proxy *>
    Require all granted
  </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


Cul Firmware installieren

Der CUL wird von Haus aus ohne Firmware ausgeliefert. Diese muss vor Benutzung erst installaiert werden. Es gibt zwei möglichkeitne die Firmware zu flashen. Über Linux oder über Windows

Cul.JPG

Specs

   ATMega32U4 processor 8MHz @ 3.3V
   CC1101 ISM transceiver tuned for 868MHz or 433MHz
   pinheader for SMA / SMA-RP socket
   green multi purpose led
   multi purpose micro switch
   USB type A male connector
   optional ISP connector (FPC6)
   optional HF-shield 

Linux

tbd

Windows

Um die Firmware mittels Windows zu flashen wird das ATMEL Tool Flip benötigt. Die kann auf der Atmel Homepage downgeloaded werden.(http://www.atmel.com/Images/Flip%20Installer%20-%203.4.7.112.exe).

* Nach der Installation "FLIP" starten.
* CUL in an den PC anschließen, dabei den Resetknopf auf der Rückseite gedrückt halten.
  Sollte der Stick nicht erkannt werden, kann man der Treiber in der Systemsteuerung
  nachinstallieren. Er befindet sich im FLIP verzeichnis auf den C-Laufwerk
* Unter "Device" -> "Select" -> "ATmega32U4" auswählen.
* Unter "Settings" -> "Communication" -> "USB" auswählen
* Im "USB Port Connection" Fenster "Open" klicken
* Anschließend kann das HEX File geladen werden: "File" -> "Load HEX File..."
  Dir Firmware findet man auf der Homepage von "busware.de". 
     http://culfw.svn.sourceforge.net/viewvc/culfw/trunk/culfw/Devices/CUL/
* CUL-V3 für den V3 CUL Stick
* Im Bereich "Operations Flow" "Blank Check" abwählen. "Erase", "Programm" und "Verify" bleiben aktiviert. Anschließend auf RUN klicken um das Flashen zu starten.
* Nach erfolgreichem Flashen sollten neben jedem angehakten Feld ein grüner Punkt sein

Nun auf "Start Application" klicken um die Firmware auf dem Stick zu starten.

CUL benutzen

Nun CUL Stick am Debian Rechner anstecken (LED leuchtet). Der Stick sollte nun unter " /dev/ttyACM0" auftauchen. (Siehe Logfile "/var/log/messages"

Version prüfen

Ein weiteren Putty Fenster öffnen

screen /dev/ttyACM0
" V " tippen 

Als Ausgabe sollte die Version auftauchen z.B. V 1.52 CUL868

CUL für FHEM definieren

Um den CUL mit FHEM zu benutzen, muss er CUL definiert werden

define MyCUL CUL /dev/ttyACM0 1234