FHEM Hausautomatisierung

    FHEM (eingetragene Marke) ist ein in perl geschriebener, GPL lizensierter Server für die Heimautomatisierung. Man kann mit FHEM häufig auftretende Aufgaben automatisieren, wie z.Bsp. Lampen / Rollladen / Heizung / usw. schalten, oder Ereignisse wie Temperatur / Feuchtigkeit / Stromverbrauch protokollieren und visualisieren.
    Das Programm läuft als Server, man kann es über WEB, dedizierte Smartphone Apps oder telnet bedienen, TCP Schnittstellen für JSON und XML existieren ebenfalls.
    Um es zu verwenden benötigt man einen 24/7 Rechner (NAS, RPi, PC, MacMini, etc) mit einem perl Interpreter und angeschlossene Hardware-Komponenten wie CUL, FHZ1300PC, etc. für einen Zugang zu den Aktoren und Sensoren.

Unterstützte Protokolle:

    • eQ3 spezifisch: FS20, HomeMatic, MAX!, EM1000, FHT80b, HMS, S300, ESA2000
    • KNX, ZWave, EnOcean, X10, FRITZ!Dect, Intertechno, HomeEasy, Philipps HUE
    • 1Wire, Firmata, webio, panStamp, LIRC, JeeLink, RFXCOM/RFXTRX, TellStick
    • Davis VantagePro2, Oregon Scientific, Allnet
    • Fernseher von Samsung/Panasonic/LG/Philips, Geräte von Sonos/Squeezebox, Verstärker von YAMAHA/Denon/Onkyo, iTunes/AppleTV, Enigma2, XBMC

Aufbau der Konfiguration in FHEM

/opt/fhem

Die Konfiguration

###############################################
#
#FS 20 Steckdosen 
#wz_Lampe_TV
#wz_Lampe_Sofa
#
###############################################
#define <name> FS20 <housecode> <button>

define wz_Lampe_Sofa FS20 7218 38
attr wz_Lampe_Sofa IODev CUL_0
attr wz_Lampe_Sofa fm_name Steckdose1
attr wz_Lampe_Sofa group Steckdosen
attr wz_Lampe_Sofa icon ge_wht_steckdose
attr wz_Lampe_Sofa model fs20st2
attr wz_Lampe_Sofa room FS20,Wettervorhersage,Wohnzimmer

define FileLog_wz_Lampe_Sofa FileLog ./log/FS20_721801-%Y.log wz_Lampe_Sofa
attr FileLog_wz_Lampe_Sofa logtype text
attr FileLog_wz_Lampe_Sofa room FS20

define wz_Lampe_TV FS20 7218 01
attr wz_Lampe_TV IODev CUL_0
attr wz_Lampe_TV fm_name Steckdose1
attr wz_Lampe_TV group Steckdosen
attr wz_Lampe_TV icon ge_wht_steckdose
attr wz_Lampe_TV model fs20st2
attr wz_Lampe_TV room FS20,Wettervorhersage,Wohnzimmer

define FileLog_wz_Lampe_TV FileLog ./log/FS20_721801-%Y.log wz_Lampe_TV
attr FileLog_wz_Lampe_TV logtype text
attr FileLog_wz_Lampe_TV room FS20
 
#define HM_Test notify wz_Lampe_Sofa:off.* set Flur_Sideboard_Lampe off;; set Stehlampe_Sofa off;; set Sideboard off;; set EingangInnen off;; set Port2 off;;set Port3 off;; set Port4 off

define HM_Test notify wz_Lampe_Sofa:off.* {\
 fhem ("set Flur_Sideboard_Lampe off");;\
 fhem ("set Stehlampe_Sofa off");;\
 fhem ("set Sideboard off");;\
 fhem ("set EingangInnen off");;\
 fhem ("set Aussenlampe off");;\
 fhem ("set Port2 off");;\
 fhem ("set Port3 off");;\
 fhem ("set Port4 off")\
}

define ZW_1 at *{sunset(0,"15:40","21:00")} set Zwergtannen on;;set Port3 on;; set Port2 on;; set Flur_Sideboard_Lampe on;; set Aussenlampe on

define ZW_1 at *{sunset(0,"15:40","21:00")} {\
 fhem ("set Zwergtannen on");;\
 fhem ("set Port3 on");;\
 fhem ("set Port2 on");;\
 fhem ("set Flur_Sideboard_Lampe on");;\
 fhem ("set Aussenlampe on")\
}

#define ZW_0 at *{sunrise(0,"7:00","9:00")} set Zwergtannen off;; set Port3 off;; set Port2 off;; set Flur_Sideboard_Lampe off;; set Aussenlampe off
define ZW_1 at *{sunset(0,"7:00","9:00")} {\
 fhem ("set Zwergtannen off");;\
 fhem ("set Port3 off");;\
 fhem ("set Port2 off");;\
 fhem ("set Flur_Sideboard_Lampe off");;\
 fhem ("set Aussenlampe off")\
}

define FlurLicht notify Motion_Abstell:motion:.* {\
 if (Value("Flur_Sideboard_Lampe") eq "off") ;;\
 { fhem ("set Flur_Sideboard_Lampe on ");; \
 define Flur_Sideboard_Lampe at +00:04:16 set Licht$ ;;\ 
 }
}

#define FlurLicht notify Motion_Abstell:motion:.* { if (Value("Flur_Sideboard_Lampe") eq "off") { fhem ("set Flur_Sideboard_Lampe on ;; define FlurLicht_aus at +00:04:16 set Flur_Sideboard_Lampe$



#define FlurLicht notify Motion_Abstell:motion:.* { if (Value("Flur_Sideboard_Lampe") eq "off") { fhem ("set Flur_Sideboard_Lampe on ;; define FlurLicht_aus at +00:04:16 set Flur_Sideboard_Lampe off") } else { fhem ("delete FlurLicht_aus ;; define FlurLicht_aus at +00:04:16 set Flur_Sideboard_Lampe off") }}

define FlurLicht notify Motion_Abstell:motion:.* {\
 {fhem( if (Value("Flur_Sideboard_Lampe") eq "off"));;\
 { fhem ("set Flur_Sideboard_Lampe on") ;;\
 define FlurLicht_aus at +00:01:16 $ ;;\
 {fhem("set Flur_Sideboard_Lampe off") ;;\
}}}}

######## Bewegungsmelder schaltet Licht
define FlurLicht notify Motion_Abstell:motion {fhem ("set Flur_Sideboard_Lampe on-for-timer 40") if (ReadingsVal("FlurLicht","brightness",0) < 34)}

Weitere Themen:

FHEM Logfileanalyse

FHEM Konfiguration dezentral

FHEM und Arduino

FHEM Tipps und Tricks

Wie Du ein NAS mit einem Raspberry PI aufbaust

 

Schulferien 2016