Attribut: Unterschied zwischen den Versionen

Aus FHEMWiki
(REDIRECT für suchende Wikileser)
 
K (Haupt-Kategorie FHEM entfernt; ist bereits über Kategoriebaum abgedeckt.)
 
(18 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
#REDIRECT [[Attribute]]
'''{{Link2CmdRef|Lang=de|Anker=Attribute|Label=Attribute}}''' sind ein wichtiges Mittel, um das Verhalten von [[FHEM]] insgesamt (device [[global]]) oder von einzelnen [[Gerät|Geräten]] bzw. Geräteklassen zu beeinflussen.
 
== Allgemeines ==
Damit der Nutzer das Verhalten einer einzelnen Gerätedefinition zur Laufzeit individuell anpassen kann, gibt es in FHEM für jede Definition sogenannte Attribute.
 
Attribute werden zusammen mit dem <code>define</code>-Befehl des jeweiligen [[Gerät|Devices]] beim Speichern der aktuellen Konfiguration von FHEM in die [[Konfiguration|Konfigurationsdatei]] geschrieben. Beim Neustart werden die entsprechenden Befehle ausgeführt um alle Definition inkl. Attribute wieder anzulegen.
 
Alle [[Gerät|Geräte]] haben Attribute. Diese werden mittels des Befehls <code>attr</code> gesetzt, angezeigt mit dem Befehl <code>displayattr</code>, und mit dem Kommando <code>deleteattr</code> entfernt. In FHEMWEB gibt es daneben die Möglichkeit, Attribute über die Weboberfläche einzustellen.
 
== Globale Attribute ==
 
Globale Attribute können von allen [[Gerät|Geräten]] genutzt werden. Welche vorhanden sind, kann mit <code>list global</code> ermittelt werden:
=== alias ===
Wird in FHEMWEB benutzt, um einen alternativen Namen für ein Gerät anzuzeigen z.B. wenn Sonderzeichen/Leerzeichen nicht in der Gerätedefinition verwendet werden können.
=== comment ===
Hält einen freien Kommentar für das Gerät verfügbar.
===  eventMap ===
Ersetzt Event-Namen und setzt Argumente.
 
Der Wert dieses Attributes besteht aus einer Liste von durch Leerzeichen getrennter Werten.
 
Jeder Wert ist ein durch Doppelpunkt getrenntes Paar: der erste Teil stellt den "alten" Wert, der zweite Teil den "neuen" Wert dar.
 
Wenn der erste Wert ein Slash (/) oder ein Komma (,) ist, dann wird nicht durch Leerzeichen sondern durch das vorgestellte Zeichen getrennt. Optional kann man auch ein widgetOverride angeben (angehängt nach einem Doppelpunkt):
on-for-timer:OnFor:texField
Die Voreinstellung ist :noArg, um das Input-Feld bei cmdList zu vermeiden.
 
'''Beispiele:'
attr store eventMap on:open off:closed
attr store eventMap /on-for-timer 10:open/off:closed/
set store open
 
Die explizite Variante dieses Attributes hat folgenden Syntax:
attr store eventMap { dev=>{'on'=>'open'}, usr=>{'open'=>'on'} }
attr store eventMap { dev=>{'^on(-for-timer)?(.*)'=>'open$2'}, usr=>{'^open(.*)'=>'on$1'}, fw=>{'^open(.*)'=>'open'} }
 
Diese Variante muss dann verwendet werden, falls das Mapping nicht symmetrisch ist.
 
Der erste Teil (dev) spezifiziert dabei die Richtung Gerät zu Benutzer: falls das Gerät ''on 100'' oder ''on-for-timer 100'' meldet, dann wird der Benutzer ''open 100'' zu sehen bekommen.
 
Der zweite Teil (usr) spezifiziert die Richtung Benutzer zu Gerät: wenn man ''set XX open 100'' eingibt, wird das Kommando ''on 100'' an das Gerät gesendet.
 
In beiden Fällen wird der Schlüssel zuerst direkt, und dann als Regulärer Ausdruck mit dem Wert verglichen. Falls man Reguläre Ausddrücke mit Wildcards im usr Teil verwendet, dann muss man den fw Teil mit dem exakt gleichen Schlüsseln ausfüllen, damit FHEMWEB in der Detail-Ansicht den set-Auswahl richtig anzeigen kann.
 
Weiteres siehe [[eventMap]].
 
=== genericDisplayType ===
Wird von bestimmten Frontends (aber nicht FHEMWEB) verwendet, um für das Gerät passende Voreinstellungen (Bild, Befehle, etc.) anzubieten. Zurzeit werden folgende Werte unterstützt:
* switch
* outlet
* light
* blind
* speaker
* thermostat
=== group ===
Enthält die Gerätegruppe(n). FHEMWEB zeigt Geräte die in die gleiche Gruppe gehören auch in einer gemeinsamen Box an. Ein Gerät kann zu mehr als einer Gruppe gehören. In diesem Fall müssen die entsprechenden Gruppen durch Kommata getrennt eingetragen werden. Wenn dieses Attribut nicht gesetzt ist, wird der im Gerät gesetzte Gerätetyp verwendet.
=== room ===
Enthält die den Raum/die Räume, in dem das Gerät sich befindet. Filtert und gruppiert die Geräte in der Anzeige. Ein Gerät kann zu mehr als einem Raum zugeordnet werden. In diesem Fall müssen die Raumzuordnungen durch Kommata getrennt angegeben werden.
 
Geräte, die dem Raum mit der Bezeichnung ''hidden'' zugeordnet werden, erscheinen nicht auf der Webseite.
 
Mit -> werden Räume strukturiert, z. B. ''OG->Schlafzimmer''
Siehe auch: [[room]].
=== Showtime ===
Wird im FHEMWEB verwendet, um die Zeit der letzten Aktivität anstelle des Status in der Gesamtansicht anzuzeigen. Nützlich z.B. für FS20 PIRI Geräte.
=== suppressReading ===
Wird verwendet, um nicht gewollte Readings zu entfernen. Der Wert ist ein Regulärer Ausdruck, ergänzt mit ^ und $. Wird nur in Ausnahmefällen benötigt.
=== verbose ===
Setzt den Schwellwert für die Logfile-Meldungen. Mögliche Werte sind:
* 0 - Server start/stop
* 1 - Fehlermeldungen oder unbekannte Pakete
* 2 - bedeutende Ereigbisse/Alarme
* 3 - ausgesendete Kommandos werden gelogged
* 4 - von den einzelnen Geräten empfangene Daten
* 5 - Fehlersuche
Der für die global Instanz gesetzte Wert gilt als Voreinstellung für die Instanzen, die dieses Attribut nicht gesetzt haben
 
Weiteres siehe [[verbose]].
 
== Lokale Attribute ==
 
Als lokale Attribute werden Attribute bezeichnet, die nur auf individuelle Geräteklassen oder einzelne [[Gerät|Geräte]] zutreffen. Welche dies sind, wird jeweils durch den Code des [[Modul|Moduls]] festgelegt, dementsprechend sind Hinweise zur Funktion dieser Attribute in der jeweiligen Beschreibung zum [[Modul]] in der {{Link2CmdRef}} zu entnehmen.
 
== userattr ==
Neben den von FHEM und den jeweils verwendeten [[Modul|Modulen]] bereitgestellten Attributen besteht die Möglichkeit, eigene Attribute zu definieren.
=== Global ===
Dies kann zentral erfolgen, indem <code>attr global userattr <attributelist></code> verwendet wird. <attributelist> ist eine durch Leerzeichen getrennte Liste, die die Namen der zusätzlichen Attribute enthält.
 
Damit stehen die betreffenden Attribute dann system-weit zur Verfügung.
{{Hinweis|Beim Erstellen oder Löschen von eigenen Attributen ist darauf zu achten, dass der Name des Attributs nicht auch anderweitig verwendet wurde. Andernfalls kann es zu schwerwiegenden Fehlfunktionen in FHEM kommen.}}
Manche [[Gerät|Geräte]] (wie [[FHEMWEB]]) definieren automatisch neue globale Attribute beim ersten Anlegen eines [[Gerät|Gerätes]] dieses Typs.
 
=== Einzelne Geräte ===
Mit <code>attr <devicename> userattr <attributelist></code> können auch ein oder mehrere neue lokale Attribute für bestimmte individuelle [[Gerät|Geräte]] eingeführt werden.
 
== ReadingsGroup ==
[[ReadingsGroup]] stellt eine Möglichkeit dar, neben [[Readings]] auch Attribute strukturiert darzustellen.
Mit Hilfe dieses [[Modul|Moduls]] können auch den End-Anwendern auf einfache Weise vielfältige Einstellmöglichkeiten zur Verfügung gestellt werden.
 
== Abgrenzung zu Readings ==
Als Readings werden demgegenüber Daten bezeichnet, die von einem Gerät gelesen und in FHEM in einer (üblicherweise) lesbaren Form zur Verfügung gestellt werden. Typischerweise werden sich im laufenden Betrieb ändernde Zustände oder Meßwerte in Readings zwischengespeichert und jede Aktualisierung ist in der Regel mit einem [[Event]] verbunden. Readings werden nicht in der [[Konfiguration]] gespeichert, sondern im sog. statefile<ref>Dies ist eine eigene Datei fhem.save bzw. es werden die Infos bei Nutzung von {{Link2CmdRef|Anker=configDB|Lang=de|Label=configDB}} in der Konfigurationsdatenbank gespeichert.</ref> Hierdurch werden die Informationen bei ordnungsgemäßer Beendigung von FHEM auch nach einem Neustart wieder verfügbar.
 
Auch hier kann der Nutzer über die Kommandozeile<ref>Durch Anpassung der Attribute "setList" und "readingList" können Änderungen auch über FHEMWEB-Elemente ermöglicht werden</ref> direkt Einfluß auf den aktuellen Wert nehmen und Events erzeugen. Es sollte dabei jedoch sichergestellt werden, dass es nicht zu unbeabsichtigten Überschneidungen mit Änderungen der Readingsinhalte kommt, die vom entsprechenden Modulcode geschrieben werden.
 
Der Vorteil der Nutzung von Readings liegt darin, dass die Änderung der Daten nicht zu Änderungen an der [[Konfiguration]] führen, diese aber dennoch bei einem ordnungsgemäßen Neustart von FHEM direkt wieder verfügbar sind.
 
== Weitere Infos für Modulentwickler ==
* Attribute in der [[DevelopmentModuleIntro#Attribute|DevelopmentModuleIntro]]
* Readings in der [[DevelopmentModuleIntro#Readings|DevelopmentModuleIntro]]
* Leitlinie: "Attribute gehören den Usern!"
 
== Hinweise und Links ==
Die Commandref zum Befehl {{Link2CmdRef|Lang=de|Anker=attr|Label=attr}} enthält einige Beispiele zur Verwendung von Attributen.
 
<references />
 
[[Kategorie:FHEM-Verwendung]]
[[Kategorie:Glossary]]

Aktuelle Version vom 4. Dezember 2019, 12:26 Uhr

Attribute sind ein wichtiges Mittel, um das Verhalten von FHEM insgesamt (device global) oder von einzelnen Geräten bzw. Geräteklassen zu beeinflussen.

Allgemeines

Damit der Nutzer das Verhalten einer einzelnen Gerätedefinition zur Laufzeit individuell anpassen kann, gibt es in FHEM für jede Definition sogenannte Attribute.

Attribute werden zusammen mit dem define-Befehl des jeweiligen Devices beim Speichern der aktuellen Konfiguration von FHEM in die Konfigurationsdatei geschrieben. Beim Neustart werden die entsprechenden Befehle ausgeführt um alle Definition inkl. Attribute wieder anzulegen.

Alle Geräte haben Attribute. Diese werden mittels des Befehls attr gesetzt, angezeigt mit dem Befehl displayattr, und mit dem Kommando deleteattr entfernt. In FHEMWEB gibt es daneben die Möglichkeit, Attribute über die Weboberfläche einzustellen.

Globale Attribute

Globale Attribute können von allen Geräten genutzt werden. Welche vorhanden sind, kann mit list global ermittelt werden:

alias

Wird in FHEMWEB benutzt, um einen alternativen Namen für ein Gerät anzuzeigen z.B. wenn Sonderzeichen/Leerzeichen nicht in der Gerätedefinition verwendet werden können.

comment

Hält einen freien Kommentar für das Gerät verfügbar.

eventMap

Ersetzt Event-Namen und setzt Argumente.

Der Wert dieses Attributes besteht aus einer Liste von durch Leerzeichen getrennter Werten.

Jeder Wert ist ein durch Doppelpunkt getrenntes Paar: der erste Teil stellt den "alten" Wert, der zweite Teil den "neuen" Wert dar.

Wenn der erste Wert ein Slash (/) oder ein Komma (,) ist, dann wird nicht durch Leerzeichen sondern durch das vorgestellte Zeichen getrennt. Optional kann man auch ein widgetOverride angeben (angehängt nach einem Doppelpunkt):

on-for-timer:OnFor:texField

Die Voreinstellung ist :noArg, um das Input-Feld bei cmdList zu vermeiden.

Beispiele:'

attr store eventMap on:open off:closed
attr store eventMap /on-for-timer 10:open/off:closed/
set store open 

Die explizite Variante dieses Attributes hat folgenden Syntax:

attr store eventMap { dev=>{'on'=>'open'}, usr=>{'open'=>'on'} }
attr store eventMap { dev=>{'^on(-for-timer)?(.*)'=>'open$2'}, usr=>{'^open(.*)'=>'on$1'}, fw=>{'^open(.*)'=>'open'} } 

Diese Variante muss dann verwendet werden, falls das Mapping nicht symmetrisch ist.

Der erste Teil (dev) spezifiziert dabei die Richtung Gerät zu Benutzer: falls das Gerät on 100 oder on-for-timer 100 meldet, dann wird der Benutzer open 100 zu sehen bekommen.

Der zweite Teil (usr) spezifiziert die Richtung Benutzer zu Gerät: wenn man set XX open 100 eingibt, wird das Kommando on 100 an das Gerät gesendet.

In beiden Fällen wird der Schlüssel zuerst direkt, und dann als Regulärer Ausdruck mit dem Wert verglichen. Falls man Reguläre Ausddrücke mit Wildcards im usr Teil verwendet, dann muss man den fw Teil mit dem exakt gleichen Schlüsseln ausfüllen, damit FHEMWEB in der Detail-Ansicht den set-Auswahl richtig anzeigen kann.

Weiteres siehe eventMap.

genericDisplayType

Wird von bestimmten Frontends (aber nicht FHEMWEB) verwendet, um für das Gerät passende Voreinstellungen (Bild, Befehle, etc.) anzubieten. Zurzeit werden folgende Werte unterstützt:

  • switch
  • outlet
  • light
  • blind
  • speaker
  • thermostat

group

Enthält die Gerätegruppe(n). FHEMWEB zeigt Geräte die in die gleiche Gruppe gehören auch in einer gemeinsamen Box an. Ein Gerät kann zu mehr als einer Gruppe gehören. In diesem Fall müssen die entsprechenden Gruppen durch Kommata getrennt eingetragen werden. Wenn dieses Attribut nicht gesetzt ist, wird der im Gerät gesetzte Gerätetyp verwendet.

room

Enthält die den Raum/die Räume, in dem das Gerät sich befindet. Filtert und gruppiert die Geräte in der Anzeige. Ein Gerät kann zu mehr als einem Raum zugeordnet werden. In diesem Fall müssen die Raumzuordnungen durch Kommata getrennt angegeben werden.

Geräte, die dem Raum mit der Bezeichnung hidden zugeordnet werden, erscheinen nicht auf der Webseite.

Mit -> werden Räume strukturiert, z. B. OG->Schlafzimmer Siehe auch: room.

Showtime

Wird im FHEMWEB verwendet, um die Zeit der letzten Aktivität anstelle des Status in der Gesamtansicht anzuzeigen. Nützlich z.B. für FS20 PIRI Geräte.

suppressReading

Wird verwendet, um nicht gewollte Readings zu entfernen. Der Wert ist ein Regulärer Ausdruck, ergänzt mit ^ und $. Wird nur in Ausnahmefällen benötigt.

verbose

Setzt den Schwellwert für die Logfile-Meldungen. Mögliche Werte sind:

  • 0 - Server start/stop
  • 1 - Fehlermeldungen oder unbekannte Pakete
  • 2 - bedeutende Ereigbisse/Alarme
  • 3 - ausgesendete Kommandos werden gelogged
  • 4 - von den einzelnen Geräten empfangene Daten
  • 5 - Fehlersuche

Der für die global Instanz gesetzte Wert gilt als Voreinstellung für die Instanzen, die dieses Attribut nicht gesetzt haben

Weiteres siehe verbose.

Lokale Attribute

Als lokale Attribute werden Attribute bezeichnet, die nur auf individuelle Geräteklassen oder einzelne Geräte zutreffen. Welche dies sind, wird jeweils durch den Code des Moduls festgelegt, dementsprechend sind Hinweise zur Funktion dieser Attribute in der jeweiligen Beschreibung zum Modul in der commandref zu entnehmen.

userattr

Neben den von FHEM und den jeweils verwendeten Modulen bereitgestellten Attributen besteht die Möglichkeit, eigene Attribute zu definieren.

Global

Dies kann zentral erfolgen, indem attr global userattr <attributelist> verwendet wird. <attributelist> ist eine durch Leerzeichen getrennte Liste, die die Namen der zusätzlichen Attribute enthält.

Damit stehen die betreffenden Attribute dann system-weit zur Verfügung.

Info blue.png
Beim Erstellen oder Löschen von eigenen Attributen ist darauf zu achten, dass der Name des Attributs nicht auch anderweitig verwendet wurde. Andernfalls kann es zu schwerwiegenden Fehlfunktionen in FHEM kommen.


Manche Geräte (wie FHEMWEB) definieren automatisch neue globale Attribute beim ersten Anlegen eines Gerätes dieses Typs.

Einzelne Geräte

Mit attr <devicename> userattr <attributelist> können auch ein oder mehrere neue lokale Attribute für bestimmte individuelle Geräte eingeführt werden.

ReadingsGroup

ReadingsGroup stellt eine Möglichkeit dar, neben Readings auch Attribute strukturiert darzustellen. Mit Hilfe dieses Moduls können auch den End-Anwendern auf einfache Weise vielfältige Einstellmöglichkeiten zur Verfügung gestellt werden.

Abgrenzung zu Readings

Als Readings werden demgegenüber Daten bezeichnet, die von einem Gerät gelesen und in FHEM in einer (üblicherweise) lesbaren Form zur Verfügung gestellt werden. Typischerweise werden sich im laufenden Betrieb ändernde Zustände oder Meßwerte in Readings zwischengespeichert und jede Aktualisierung ist in der Regel mit einem Event verbunden. Readings werden nicht in der Konfiguration gespeichert, sondern im sog. statefile[1] Hierdurch werden die Informationen bei ordnungsgemäßer Beendigung von FHEM auch nach einem Neustart wieder verfügbar.

Auch hier kann der Nutzer über die Kommandozeile[2] direkt Einfluß auf den aktuellen Wert nehmen und Events erzeugen. Es sollte dabei jedoch sichergestellt werden, dass es nicht zu unbeabsichtigten Überschneidungen mit Änderungen der Readingsinhalte kommt, die vom entsprechenden Modulcode geschrieben werden.

Der Vorteil der Nutzung von Readings liegt darin, dass die Änderung der Daten nicht zu Änderungen an der Konfiguration führen, diese aber dennoch bei einem ordnungsgemäßen Neustart von FHEM direkt wieder verfügbar sind.

Weitere Infos für Modulentwickler

Hinweise und Links

Die Commandref zum Befehl attr enthält einige Beispiele zur Verwendung von Attributen.

  1. Dies ist eine eigene Datei fhem.save bzw. es werden die Infos bei Nutzung von configDB in der Konfigurationsdatenbank gespeichert.
  2. Durch Anpassung der Attribute "setList" und "readingList" können Änderungen auch über FHEMWEB-Elemente ermöglicht werden