In diesem ersten Teil möchte ich euch zeigen, wie ihr FHEM richtig konfiguriert, damit ihr stets einen guten Überblick behaltet. Eine gute Dokumentation für den Einstieg könnt ihr auf der FHEM Seite finden. In diesem Beitrag stelle ich euch mein Grundgerüst sowie meine verwendeten Konventionen für Datei- und Gerätenamen vor.

Die Installation von FHEM findet ihr im Verzeichnis /opt/fhem, dort liegt auch die Hauptdatei fhem.cfg. In dieser Datei definiert ihr alle Geräte, Benachrichtigungen und Aktionen.

Wenn man nur ein paar Aktoren oder Sensoren hat, reicht es vollkommen aus. Besitzt man jedoch verschiedene Aktionen und Sensoren und möchte auch noch verschiedene Aktionen definieren – hierfür ist ein Hausautomation ja eigentlich auch gedacht – so verliert man schnell den Überblick. Einige mögen jetzt denken, dass eine Konfiguration über die Web-Oberfläche vollkommen ausreicht, aber ich möchte gerne den Überblick behalten.

Die Hauptdatei fhem.cfg

FHEM speichert in dieser Datei einige Einstellungen automatisch, sobald man in der Web-Oberfläche auf „Save config“ drückt. Teilweise werden dadurch Formatierungen zerschossen oder die Reihenfolge der Einträge geändert.

Um dies zu vermeiden empfiehlt es sich somit, die eigene Konfiguration auszulagern. Dies hat auch den Vorteil, dass man neue Geräte schneller finden kann, wenn man die Autocreate-Funktion verwendet.

Als erstes legt ihr in dem Verzeichnis /opt/fhem in Unterverzeichnis an. Ich habe es „mycfg“ genannt. In diesem Verzeichnis können alle Konfigurationsdateien gespeichert werden, die dann später importiert werden. Dies hat den Vorteil, dass bestimmte Teile der Konfiguration schnell deaktiviert werden können.

Meine fhem.cfg sieht wie folgt aus:

[...]
include /opt/fhem/mycfg/00_mycfg.cfg
#EOF

Die „neue“ Hauptdatei 00_mycfg.cfg

In dieser Datei empfiehlt es sich ausschließlich die zu importierenden Konfigurationsdateien aufzulisten.

Die 00_mycfg.cfg kann beispielsweise wie folgt aussehen:

include /opt/fhem/mycfg/01_web.cfg
include /opt/fhem/mycfg/02_SCC.cfg
include /opt/fhem/mycfg/20_EG_kueche.cfg
include /opt/fhem/mycfg/20_EG_wohnzimmer.cfg
[...]
include /opt/fhem/mycfg/99_floorplan.cfg

Meine Konventionen

Ich habe mir eine Schreibkonvention für die Dateinamen überlegt (bzw. die von FHEM übernommen), um auch auf Dateiebene die Import-Reihenfolge zu sehen. Plugins starten somit immer mit dem Präfix 10, meine Räume mit 20, Timer und Actions mit 30 … und der Floorplan sowie die Alarmanlage bekommen die 99, da zuerst alle Geräten und Aktionen definiert sein müssen.

Wer will kann diese auch alphabetisch belassen. Wichtig ist die Reihenfolge in der mycfg.cfg. Bitte achtet auch darauf, dass einige Aktionen erst ausgeführt werden können, wenn zuvor das entsprechende Gerät definiert wurde.

Um einen besseren Überblick zu behalten, beginnt jede Datei mit einer beschreibenden Kopfzeile.

########################################################
##  ELTERN
##  Zweck.........: Alle Komponenten im Schlafzimmer
##  Standort......: Eltern, OG
##  Typ...........: verschiedene
##  Installation..: 30.03.2014
##  Besonderheiten:
##
########################################################

Damit die Gerätenamen eindeutig sind, habe ich mir folgende Schreibweise überlegt, die sich ein wenig an dem Clean-Code-Prinzip „meaningful names“ orientiert:

[Stockwerk]_[Raum]_[Typ]_[Bezeichnung]
Beispiel: EG_Kueche_Lampe_Leselampe

So lassen sich beispielsweise auch mehrere Leselampen in unterschiedlichen Räumen und Stockwerken definieren. Die Typenbezeichnung lasse ich bei einigen Geräten weg, auch wenn das nicht ganz so konsequent ist..

Achtung: Am besten keine Punktnotation verwenden, weil viele Plugins damit Probleme haben!

Handelt es sich um Plugins, vergebe ich nur einen eindeutigen Namen.

Damit die einzelnen Definitionen auch konsistent sind habe ich folgende Reihenfolge der ersten drei Attribute festgelegt (alias, room, group), die auch immer angegeben werden:

define OG_Eltern_Lampe_Nachttischlampe1 IT F0F0000F0F FF F0
attr OG_Eltern_Lampe_Nachttischlampe1 alias Nachttischlampe (Dennis)
attr OG_Eltern_Lampe_Nachttischlampe1 room Schlafzimmer
attr OG_Eltern_Lampe_Nachttischlampe1 group Geräte
[...]

Erfahrungen aus dem Alltag

Durch die Auslagerung lässt sich das System prima erweitern oder Teile kurzzeitig deaktivieren. Die Geräte können eindeutig identifiziert werden, weil Stockwerk, Raum und Typ stets bekannt sind. Wer aber Frühjahrsputz bei der Programmierung machen will und viele Variabeln und Gerätenamen umschreiben muss, könnte dabei leicht den Überblick verlieren.

Schreibt in den Kommentaren, wie ihr FHEM konfiguriert habt.