- 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:
Wie Du ein NAS mit einem Raspberry PI aufbaust