- Wie konfiguriere ich FHEM richtig – Teil 4
- Wie konfiguriere ich FHEM richtig – Teil 3
- Wie konfiguriere ich FHEM richtig – Teil 2
- Wie konfiguriere ich FHEM richtig – Teil 1
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.
Hallo Kronni,
das Anlegen der mycfg Datei hat geklappt.
Kannst Du einem Anfänger noch erklären, wie man FHEM mitteilt, das er über „mycfg“ und nicht über die Standart-cfg startet?
Vielen Dank – Martin
Hallo Martin,
ich habe am Ende der fhem.cfg die folgende Zeile stehen:
include /opt/fhem/mycfg/00_config.cfg
So kann die fhem.cfg einige Standarddaten wie Geoposition und global Attributes schreiben, ohne dass meine Konfiguration großartig geändert wird.
In diesem Beitrag habe ich den Aufbau genau beschrieben.
http://blog.krannich.de/2014/08/wie-konfiguriere-ich-fhem-richtig-teil-2/
Hallo, da ich mich als Anfänger mit FHEM beschäftige bin ich auf ihre Seite gestoßen. Als Newcomer ist es manchmal sehr undurchsichtig. Können sie mir vielleicht ihr cfg.Dateien zu mailen. Das würde mir bei dem verstehen bestimmt weiterhelfen und ich bräuchte bei vielen Dingen das Rad nicht neu erfinden. Ich würde mich freuen. MfG Andreas Kroggel…………
Hallo Andreas,
ich schreibe gerade an einem dritten Teil, der auch weitere Code-Beispiele beinhaltet.
Die Steuerung meiner Hausautomation ist zum größten Teil in die Datei myUtils.pm ausgelagert, die im FHEM-Verzeichnis liegt. Über die Notifiers rufe ich dann nur eine Funktion auf, die sich um den Rest kümmert. Wie das funktioniert erkläre ich zeitnah.
Welche Code-Beispiele interessieren Dich denn besonders?
Viele Grüße,
Dennis
Hallo,
ich finde es toll wie du den konfigurationsaufbau gemacht hast. So etwas sollte standardmäßig in FHEM includiert sein. Nur mit einer solchen Struktur lässt sich ein großes Projekt einfach und Übersichtlich händeln. Dadurch kann man stück für stück das ganze system aufsetzten.
Ich bin auch gerade dabei das gewurschtel etwas zu ordnen nach deiner Vorstellung.
Leider weiß ich nicht was ich alles in die datei „02_web.cfg“ und „10_datastorage.cfg“ ablegen sollte.
Kannst du evtl. dein ConfigProjekt als Template zum Download anbieten? evtl. sogar über FHEM. Je nach dem was der User benötigt, kann er es aus oder einkomentieren.
Hallo Thomas,
Danke für das Lob und Deine Anregungen.
Generell könnte ich natürlich meine komplette Konfiguration zum Download anbieten, aber es gibt gewisse Dinge (insb. meine Alarmanlage), die sind einfach nicht für alle Augen bestimmt. Ich werde aber so gut es geht Beispiele online stellen.
Viele Grüße
Dennis
Das ist klar das Sicherheitskritische Themen nicht für anderer Augen bestimmt ist. Lass das dan einfach draußen.
Hallo.
Schon einmal vielen Dank für die Anregungen in deinen 3 Artikeln. Damit kann man auch als Anfänger gut arbeiten.
Eine Frage habe ich: In deinem Titelbild bearbeitest du die Dateien mit Coda. Wie hast du es geschafft dich mit Coda auf den PI zu verbinden um die Daten dort direkt zu pflegen ? Ich kann mit zwar verbinden mit Coda o.ä. aber ich sehe lediglich den Ordner /home/pi und dort fehlen mir die Verzeichnisse in denen die FHEM Dateien liegen.
Hi Thorsten,
den Ordner findest Du in /opt/fhem
Damit das Editieren auch in Coda funktioniert, musst Du in den Einstellungen von Coda im Reiter „Editor“ noch ganz unten unter „Eigene Syntaxmodi“ folgenden Eintrag ergänzen Suffix = „pm“, Syntaxmodus = „Perl“. Dann kannst Du die Dateien auch öffnen und der Syntaxmodus funktioniert dann auch.
Hallo, als Anfänger in FHEM bin auf deinen Blog gestoßen und bin von dieser Struktur sehr begeistert. Meine Frage zum Verständnis wäre: Lagerst Du finale Config-Schnipsel in die entsprechenden cfg-Dateien aus, weil mit „save config“ wird doch m.E.n. die fhem.cfg überschrieben,Richtig? MfG Matthias Müller
Hallo Matthias, ich habe mal angefangen meine Konfiguration offen zu legen:
http://blog.krannich.de/2016/01/meine-fhem-konfiguration-schritt-fuer-schritt/
Ich lagere wirklich alles in CFG-Dateien, damit ich schnell Systeme wechseln kann bzw. alles übersichtlich im Blick behalten kann.
Beim einem „save config“ wird die fhem.cfg überschrieben, das ist richtig.
Viele Grüße
Dennis
Großes Lob und vielen Dank frü Deine Artikel, als Einsteiger helfen mir die immens weiter. Endlich etwas Ordnung im config-Dschungel 😉
Neben FHEM schaue ich mir parallel noch Home-Assistant.io an, dafür kennst Du nicht zufällig eine ähnlich gut aufgemachte Seite wie Deine? 😉
Vielen Dank für das Offenlegen Deiner config und vor allem der Gedanken dahinter! Finde ich große Klasse.
Hi Markus,
zu Home-Assistant.io kenne ich mich überhaupt nicht aus. Wusste nicht einmal, dass es so etwas gibt.
Und Danke für das Lob, freut mich, wenn ich helfen kann.
Viele Grüße
Dennis
Hallo Dennis,
deine Erläuterungen helfen mehr Übersichtlichkeit in die Fhem Konfiguration zu bringen, vielen Dank dafür.
Wie verhält es sich aber, wenn für die einzelnen Devices, die ja dann in verschiedene cfg-Dateien verlegt sind, Änderungen über die FHEM Web Oberfläche vorgenommen werden?
Werden diese dann tatsächlich auch in den jeweiligen cfg-Dateien abgelegt – oder landen diese dann doch wieder in der config.cfg und müssen anschließend in die jeweiligen Dateien übertragen werden?
Beste Grüße
Lutz
Hi Lutz,
ich ändere die Konfiguration selten über das Web-Interface. Aber ich habe mal auf Save gedrückt und die Änderugen wurden entsprechend in der jeweiligen Datei gespeichert.
Du kannst auch ein Gerät in FHEM anklicken und dann wird Dir gesagt, in welcher Datei Du das Gerät definiert hast. Finde ich recht praktisch, vor allem wenn es viele Dateien sind. Somit vermute ich weiß FHEM auch wo es die Änderungen speichern muss.
Viele Grüße
Dennis
Hallo,
die Aufteilung der Config ist eine super Sache! Leider habe ich ein Problem festgestellt. Wenn ich ein Backup entpacke sind die Dateien leer. Ich habe schon einiges an den Rechten gepielt. Habe aber keine Lösung bisher gefunden. Das Config-File welches im /fhem Ordern lieght, wird einwandfrei gebackupt und ist auch wiederherstellbar.
Kennt jemand dieses Problem und hat hier weiterhelfen?
Installiert habe ich FHEM auf eine RaspberryPi mit Raspbian Jessie.
in der Regel ändere ich die Rechte mit: sudo chmod -R a+w fhem
Hallo Benedikt,
da kann ich Dir leider auch nicht helfen. In meinem Backup sind alle Dateien enthalten.
Vielleicht musst Du noch die Gruppe oder den Eigentümer ändern, damit es bei Dir geht.
Viele Grüße
Dennis