Konfiguration: Unterschied zwischen den Versionen

Aus FHEMWiki
K (→‎Objektdetails: ->Klarstellung)
K (Kleinere Anpassung und Klarstellungen)
Zeile 1: Zeile 1:
Die '''Konfiguration''' eines Fhem [[Systemübersicht|Systems]] wird im Normalfall definiert durch Eintragungen in der Datei <code>fhem.cfg</code>, die standardmäßig im Fhem-Installationsverzeichnis abgelegt ist.
Die '''Konfiguration''' eines Fhem [[Systemübersicht|Systems]] wird im Normalfall definiert durch Eintragungen in der Konfigurationsdatei <code>fhem.cfg</code>, die standardmäßig im Fhem-Installationsverzeichnis abgelegt ist.


Sofern nicht anderweitig erwähnt, beziehen sich alle weiteren Aussagen und Bildschirmfotos auf das [[PGM2|Standard Webinterface]] im Stil "dark".
Sofern nicht anderweitig erwähnt, beziehen sich alle weiteren Aussagen und Bildschirmfotos auf das [[PGM2|Standard Webinterface]] im Stil "dark".
Zeile 11: Zeile 11:
== Bearbeitung der Konfiguration ==
== Bearbeitung der Konfiguration ==
[[Bild:saveConfig.png|mini|120px|rechts|"Knopf" zum Speichern der Konfigurationsänderungen]]
[[Bild:saveConfig.png|mini|120px|rechts|"Knopf" zum Speichern der Konfigurationsänderungen]]
Die Fhem-Konfiguration kann auf verschiedene Arten bearbeitet werden. Für Einsteiger empfiehlt sich grundsätzlich die Verwendung des "Befehl-Eingabefeld" und der "Objektdetails" mit eingeschalteter Syntaxhervorhebung. Die Methoden "Integrierter Editor" und insbesondere "Externer Editor" sollten als "Expertenmodus" angesehen und nur in begründeten (Ausnahme-)Fällen angewendet werden. Insbesondere beim Mischen der Arten können unerwünschte und/oder unerwartete Effekte auftreten, so beispielsweise, wenn ein benötigtes "save config" nicht erfolgt ist, bevor ein "rereadcfg" oder Neustart von Fhem durchgeführt wird.  
Die Fhem-Konfiguration kann auf verschiedene Arten bearbeitet werden. Für Einsteiger empfiehlt sich grundsätzlich die Verwendung des "Befehl-Eingabefeld" und der "Objektdetails" mit eingeschalteter Syntaxhervorhebung. Die Methoden "Integrierter Editor" und insbesondere "Externer Editor" sollten als "Expertenmodus" angesehen und nur in begründeten (Ausnahme-)Fällen angewendet werden. Insbesondere beim Mischen der Arten können unerwünschte und/oder unerwartete Effekte auftreten, so beispielsweise, wenn ein benötigtes "Save config" nicht erfolgt ist, bevor ein "rereadcfg" oder Neustart von Fhem durchgeführt wird.  


=== Befehl-Eingabefeld ===
=== Befehl-Eingabefeld ===
[[Bild:ConfCommandField.png|thumb|300px|Right|Befehl-Eingabefeld]]
[[Bild:ConfCommandField.png|thumb|300px|Right|Befehl-Eingabefeld]]
Eingaben in das Befehl-Eingabefeld (teilweise auch bezeichnet als "Kommando-Eingabefeld" oder kurz "Eingabefeld"), das sich oben auf jeder Seite des Standardinterfaces befindet, stellen einen schnellen und einfachen Weg dar, um z.&nbsp;B. neue Objekte zu definieren (im dargestellten Beispiel die Zuweisung eines (ggf. neuen) Raumes and ein Objekt).
Eingaben in das Befehl-Eingabefeld (teilweise auch bezeichnet als "Kommando-Eingabefeld" oder kurz "Eingabefeld"), das sich oben auf jeder Seite des Standardinterfaces befindet, stellen einen schnellen und einfachen Weg dar, um z.&nbsp;B. neue Objekte zu definieren (im dargestellten Beispiel die Zuweisung eines (ggf. neuen) Raumes zu einem Objekt). Nach Bestätigung mit der <Enter>-Taste werden die Änderungen unmittelbar wirksam.


Notwendige Aktionen nach Durchführung der Änderung: "Save config" (aus dem Menü in der linken Spalte).
Die Änderung müssen manuell in der Konfigurationsdatei abspeichert werden, ansonsten gehen die Änderungen beim Neustart verloren: "Save config" (aus dem Menü in der linken Spalte) anklicken oder den Befehl "save" im Befehl-Eingabefeld eingeben.


=== Objektdetails ===
=== Objektdetails ===
Zeile 24: Zeile 24:
* [[Bild:ConfAttrDropdown.png|300px|right]] Attribute / Attributwerte aus Auswahllisten (nach Auswahl der Werte ist der <code>attr</code> Knopf anzuklicken)  
* [[Bild:ConfAttrDropdown.png|300px|right]] Attribute / Attributwerte aus Auswahllisten (nach Auswahl der Werte ist der <code>attr</code> Knopf anzuklicken)  
* je nach Objekttyp stehen weitere / andere Aktionen zur  
* je nach Objekttyp stehen weitere / andere Aktionen zur  
Nach einem Klick auf "Modify" werden die Änderungen unmittelbar wirksam.
Nach einem Klick auf "Modify" werden die Änderungen an der Defintion unmittelbar wirksam.


Notwendige Aktionen nach Durchführung der Änderung zum dauerhaften Speichern: "Save config" (aus dem Menü in der linken Spalte). Ansonsten sind die Änderungen beim nächsten Neustart weg.
Die Änderung müssen manuell in der Konfigurationsdatei abspeichert werden, ansonsten gehen die Änderungen beim Neustart verloren: "Save config" (aus dem Menü in der linken Spalte) anklicken oder den Befehl "save" im Befehl-Eingabefeld eingeben.


=== Integrierter Editor ===
=== Integrierter Editor ===
Zeile 32: Zeile 32:
[[Bild:ConfEditSyntaxHighlight.png|mini|300px|rechts|Editfenster (Ausschnitt) mit Syntaxhervorhebung]]
[[Bild:ConfEditSyntaxHighlight.png|mini|300px|rechts|Editfenster (Ausschnitt) mit Syntaxhervorhebung]]
Sollte ein direktes Editieren der Konfigurationsdatei als nötig erachtet werden, wird der Editor über den entsprechenden Menüeintrag in der linken Spalte erreicht. Auf die Einhaltung der Syntax von Befehlen und Definitionen ist zu achten, teilweise sind besondere Maßnahmen zu ergreifen ("Escapen" von Sonderzeichen, verdoppeln von Semikolon). Mit dem Abspeichern der editierten Datei werden die Änderungen unmittelbar aktiv, korrekte Syntax und Semantik vorausgesetzt.
Sollte ein direktes Editieren der Konfigurationsdatei als nötig erachtet werden, wird der Editor über den entsprechenden Menüeintrag in der linken Spalte erreicht. Auf die Einhaltung der Syntax von Befehlen und Definitionen ist zu achten, teilweise sind besondere Maßnahmen zu ergreifen ("Escapen" von Sonderzeichen, verdoppeln von Semikolon). Mit dem Abspeichern der editierten Datei werden die Änderungen unmittelbar aktiv, korrekte Syntax und Semantik vorausgesetzt.
Notwendige Aktionen nach speichern der Änderung: keine.


=== Syntaxhervorhebung ===
=== Syntaxhervorhebung ===
[[Bild:ConfEditDEFAutocomplete.png|mini|300px|rechts|Automatische Vervollständigung / Befehlsauswahlfenster ("se" getippt, dann Strg+Leertaste gedrückt)]]
[[Bild:ConfEditDEFAutocomplete.png|mini|300px|rechts|Automatische Vervollständigung / Befehlsauswahlfenster ("se" getippt, dann Strg+Leertaste gedrückt)]]
Im Zeitraum von Februar bis April 2014 wurde der in Fhem integrierte Editor um Syntaxhervorhebungs-, Befehlsauswahl- und Befehlsvervollständigungsfunktionen erweitert. Diese Erweiterungen wurden ausführlich im Fhem Forum unter der Überschrift [http://forum.fhem.de/index.php/topic,20444.0.html Javascript Editor einbinden] diskutiert.
Seit Anfang April 2014 ist der in Fhem integrierte Editor um Syntaxhervorhebungs-, Befehlsauswahl- und Befehlsvervollständigungsfunktionen erweitert.


Seit Anfang April 2014 ist diese Erweiterung im aktuellen Fhem Update enthalten. Um die Funktionalität zu aktivieren müssen die folgenden zwei Attribute gesetzt werden:
Um die Funktionalität zu aktivieren müssen die folgenden zwei Attribute gesetzt werden:
:<code>attr WEB JavaScripts codemirror/fhem_codemirror.js</code>
:<code>attr WEB JavaScripts codemirror/fhem_codemirror.js</code>
:<code>attr WEB codemirrorParam { "theme":"blackboard", "lineNumbers":true }</code>
:<code>attr WEB codemirrorParam { "theme":"blackboard", "lineNumbers":true }</code>


Die Syntaxhervorhebung / Befehlsvervollständigung, sofern aktiviert, ist wirksam für
Die Syntaxhervorhebung / Befehlsvervollständigung, sofern aktiviert, ist wirksam für
* Bearbeitung der [[Konfiguration#Objektdetails|Objektdetails]]
* [[Konfiguration#Integrierter Editor|Integrierter Editor]]
* [[Konfiguration#Integrierter Editor|Integrierter Editor]]
* Bearbeitung der [[Konfiguration#Objektdetails|Objektdetails]]


Darüber hinaus wird (wie im Bildauschnitt dargestellt) über Strg+Leertaste eine Befehlsauswahl bzw. automatische Befehlsvervollständigung angeboten.
Darüber hinaus wird (wie im Bildauschnitt dargestellt) über Strg+Leertaste eine Befehlsauswahl bzw. automatische Befehlsvervollständigung angeboten.
Der Forums-Thread unter der Überschrift [http://forum.fhem.de/index.php/topic,20444.0.html Javascript Editor einbinden] enthält die Diskussion zum Entwicklungsprozess.


=== Externer Editor ===
=== Externer Editor ===
Zeile 71: Zeile 71:


== Konfiguration in einer SQL Datenbank ==
== Konfiguration in einer SQL Datenbank ==
Es werden derzeit Tester gesucht für einen anderen Ansatz zu Speicherung der Konfigurationsdaten: hierbei werden die Definitionen nicht mehr in einfachen Dateien gespeichert, sondern in einer SQL Datenbank abgelegt.
Seit April 2014 (Fhem-Version 5079) können Definitionen alternativ zur Speicherung in einer einfachen Text-Konfigurationsdatei(en) in einer SQL Datenbank abgelegt werden. Hierzu dienen configDB (Hilfsmodul) und configdb (command), die in der [http://fhem.de/commandref.html#configDB commandref] dokumentiert sind.


Details zu diesem "Projekt":
Weitere Details zu dieser "Alternative":
* Fhem Forum - "[http://forum.fhem.de/index.php/topic,20194.0.html Tester gesucht]" (enthält auch die Beschreibung und Installationsanleitung)
* Fhem Forum - [http://forum.fhem.de/index.php/topic,20194.0.html Tester gesucht]
* Fhem Forum - [http://forum.fhem.de/index.php/topic,20117.0.html Vorüberlegungen]
* Fhem Forum - [http://forum.fhem.de/index.php/topic,20117.0.html Vorüberlegungen]
Seit April 2014 (Fhem-Version 5079) sind configDB (Hilfsmodul) und configdb (command) offizieller Bestandteil des aktuellen Fhem und in der [http://fhem.de/commandref.html#configDB commandref] dokumentiert.


[[Kategorie:FHEM]]
[[Kategorie:FHEM]]

Version vom 1. Oktober 2014, 21:24 Uhr

Die Konfiguration eines Fhem Systems wird im Normalfall definiert durch Eintragungen in der Konfigurationsdatei fhem.cfg, die standardmäßig im Fhem-Installationsverzeichnis abgelegt ist.

Sofern nicht anderweitig erwähnt, beziehen sich alle weiteren Aussagen und Bildschirmfotos auf das Standard Webinterface im Stil "dark".

Grundstruktur

In einer Standardinstallation sind alle Definitionen in der Datei fhem.cfg abgelegt; diese Datei befindet sich im Installationsverzeichnis (z. B. /opt/fhem). Soll alternativ eine andere (Start-)Konfigurationsdatei verwendet werden, so ist deren Name beim Start von Fhem mitzugeben.

Autocreate

Sofern die "Autocreate" Funktion aktiv ist (define autocreate autocreate), werden unter bestimmten Umständen Objekte automatisch angelegt. Diese Definitionen werden immer in der Start-Konfigurationsdatei abgelegt und abgespeichert. Nach der Erstinstallation von Fhem ist die "Autocreate" Funktion standardmäßig aktiv.

Bearbeitung der Konfiguration

"Knopf" zum Speichern der Konfigurationsänderungen

Die Fhem-Konfiguration kann auf verschiedene Arten bearbeitet werden. Für Einsteiger empfiehlt sich grundsätzlich die Verwendung des "Befehl-Eingabefeld" und der "Objektdetails" mit eingeschalteter Syntaxhervorhebung. Die Methoden "Integrierter Editor" und insbesondere "Externer Editor" sollten als "Expertenmodus" angesehen und nur in begründeten (Ausnahme-)Fällen angewendet werden. Insbesondere beim Mischen der Arten können unerwünschte und/oder unerwartete Effekte auftreten, so beispielsweise, wenn ein benötigtes "Save config" nicht erfolgt ist, bevor ein "rereadcfg" oder Neustart von Fhem durchgeführt wird.

Befehl-Eingabefeld

Befehl-Eingabefeld

Eingaben in das Befehl-Eingabefeld (teilweise auch bezeichnet als "Kommando-Eingabefeld" oder kurz "Eingabefeld"), das sich oben auf jeder Seite des Standardinterfaces befindet, stellen einen schnellen und einfachen Weg dar, um z. B. neue Objekte zu definieren (im dargestellten Beispiel die Zuweisung eines (ggf. neuen) Raumes zu einem Objekt). Nach Bestätigung mit der <Enter>-Taste werden die Änderungen unmittelbar wirksam.

Die Änderung müssen manuell in der Konfigurationsdatei abspeichert werden, ansonsten gehen die Änderungen beim Neustart verloren: "Save config" (aus dem Menü in der linken Spalte) anklicken oder den Befehl "save" im Befehl-Eingabefeld eingeben.

Objektdetails

Durch Anklicken des Namensfeldes eines Objekts werden die Objektdetails aufgerufen. Je nach Objekttyp stehen auf dieser Seite verschiedene Optionen zur Manipulation von Objekteigenschaften zur Verfügung:

  • ConfModifyDEF.png
    DEF zur Anpassung der Definition
  • ConfAttrDropdown.png
    Attribute / Attributwerte aus Auswahllisten (nach Auswahl der Werte ist der attr Knopf anzuklicken)
  • je nach Objekttyp stehen weitere / andere Aktionen zur

Nach einem Klick auf "Modify" werden die Änderungen an der Defintion unmittelbar wirksam.

Die Änderung müssen manuell in der Konfigurationsdatei abspeichert werden, ansonsten gehen die Änderungen beim Neustart verloren: "Save config" (aus dem Menü in der linken Spalte) anklicken oder den Befehl "save" im Befehl-Eingabefeld eingeben.

Integrierter Editor

Aufruf des integrierten Editors
Editfenster (Ausschnitt) mit Syntaxhervorhebung

Sollte ein direktes Editieren der Konfigurationsdatei als nötig erachtet werden, wird der Editor über den entsprechenden Menüeintrag in der linken Spalte erreicht. Auf die Einhaltung der Syntax von Befehlen und Definitionen ist zu achten, teilweise sind besondere Maßnahmen zu ergreifen ("Escapen" von Sonderzeichen, verdoppeln von Semikolon). Mit dem Abspeichern der editierten Datei werden die Änderungen unmittelbar aktiv, korrekte Syntax und Semantik vorausgesetzt.

Syntaxhervorhebung

Automatische Vervollständigung / Befehlsauswahlfenster ("se" getippt, dann Strg+Leertaste gedrückt)

Seit Anfang April 2014 ist der in Fhem integrierte Editor um Syntaxhervorhebungs-, Befehlsauswahl- und Befehlsvervollständigungsfunktionen erweitert.

Um die Funktionalität zu aktivieren müssen die folgenden zwei Attribute gesetzt werden:

attr WEB JavaScripts codemirror/fhem_codemirror.js
attr WEB codemirrorParam { "theme":"blackboard", "lineNumbers":true }

Die Syntaxhervorhebung / Befehlsvervollständigung, sofern aktiviert, ist wirksam für

Darüber hinaus wird (wie im Bildauschnitt dargestellt) über Strg+Leertaste eine Befehlsauswahl bzw. automatische Befehlsvervollständigung angeboten.

Der Forums-Thread unter der Überschrift Javascript Editor einbinden enthält die Diskussion zum Entwicklungsprozess.

Externer Editor

Unter bestimmten Umständen kann auch das Editieren der Konfiguration mit einem externen Editor wie z. B.

  • Notepad++ (mit der nppFTP-Erweiterung)
  • nano in einer Telnet Sitzung
  • in wfftp integrierter / integrierbarer Editor
  • ...

sinnvoll sein (duplizieren von Definitionen, globale Änderungen, umsortieren von Definitionen, etc.). In diesem Fall sollte der Benutzer sich mit der Bedienung des Editors in der gewählten Umgebung hinreichend gut auskennen.

Auf die Einhaltung der Syntax von Befehlen und Definitionen ist zu achten, teilweise sind besondere Maßnahmen zu ergreifen ("Escapen" von Sonderzeichen, verdoppeln von Semikolon). Nach dem Abspeichern der editierten Datei werden die Änderungen erst nach erneutem Einlesen der Konfiguration aktiv, korrekte Syntax und Semantik vorausgesetzt.

Notwendige Aktionen nach Durchführung der Änderung: "rereadcfg" oder Neustart von Fhem.

Auslagerung von Definitionen

Die Methode der Auslagerung von Definitionen gehört zum "Expertenmodus". Sie sollte nur bei detaillierter Kenntnis der Auswirkungen gewählt werden. Selbst einige Entwickler von Fhem wenden diese Methode nicht an. Sofern Definitionen aus der fhem.cfg ausgelagert werden sollen bzw. wurden, können die Dateien mit den ausgelagerten Anweisungen mithilfe von include eingebunden werden.

include Zimmer1.cfg (Datei muss in /opt/fhem/FHEM liegen)
include /opt/fhem/eigene/Zimmer1.cfg (Datei muss im angegebenen Verzeichnis liegen)

Sämtliche attr global Definitionen müssen in der fhem.cfg bleiben.

Nur Konfigurationsdateien, die im Verzeichnis <installationsverzeichnis>/FHEM liegen, werden unter "Edit files" zur Bearbeitung mit dem integrierten Editor aufgeführt.

Konfiguration in einer SQL Datenbank

Seit April 2014 (Fhem-Version 5079) können Definitionen alternativ zur Speicherung in einer einfachen Text-Konfigurationsdatei(en) in einer SQL Datenbank abgelegt werden. Hierzu dienen configDB (Hilfsmodul) und configdb (command), die in der commandref dokumentiert sind.

Weitere Details zu dieser "Alternative":