Plugin-spezifische Attribute
In SmartHomeNG werden außer den Standard Attributen weiter Attribute unterstützt, die von Plugins implementiert werden. Wenn das Plugin, welches diese Attribute implementiert nicht geladen ist, haben die konfigurierten Werte keine Auswirkung auf die Funktion von SmartHomeNG.
Um diese Attribute leichter den Plugins zuordnen zu können, beginnen die Attributnamen normalerweise mit einem Kürzel, welches das Plugin kennzeichnet, gefolgt von einem Unterstrich (‚_‘).
Beispiele für Kürzel, die kennzeichnen zu welchem Plugin die jeweiligen Attribute gehören sind:
Kürzel |
Plugin |
Attribut-Beispiele |
---|---|---|
knx_ |
knx |
knx_dpt, knx_cache, knx_listen, knx_send |
hm_ |
homematic |
hm_address, hm_function |
sv_ |
visu_smartvisu |
sv_page, sv_img, sv_nav_aside, sv_nav_aside2, sv_widget |
hue_ |
hue |
hue_lamp_id, hue_lamp_type, hue_listen, hue_send |
avm_ |
avm |
avm_data_type, avm_identifier |
enigma2_ |
enigma2 |
enigma2_data_type, enigma2_page |
Vererbung von Attributen update
Bei einigen Plugins ist es notwendig, bei jedem Item einen Identifier anzugeben. Beispiele sind das homematic Plugin und das hue Plugin. Hier ist es hilfreich, den Identifier (z.B. die hm_address oder die hue_lamp_id) nur an einer Stelle konfigurieren zu müssen.
Das hue Plugin hat eine Vererbung der hue_lamp_id von übergeordneten Items im Plugin implementiert, indem das Plugin immer prüft, ob das Attribut in übergeordneten Items definiert wurde.
Ab der Version 1.5 von SmartHomeNG gibt es einen Standardmechanismus der es möglich macht, selektiv den Wert aus einem übergeordneten Item zu erben. Dieser Mechanismus funktioniert nur bei plugin-spezifischen Attributen. Hierbei kann ein Attribut mit dem Wert eines Attributes eines übergeordneten Items belegt werden.
Es kann die übergeordnete Ebene (Eltern / Großeltern) das Attribut der Ebene angegeben werden. Dabei wird
als Wert eines Attributes folgender Platzhalter eingetragen: <Ebene>:<Attribut>
Achtung
Zwischen Ebene und Doppelpunkt, sowie zwischen Doppelpunkt und Attribut dürfen keine Leerzeichen angegeben werden.
Die <Ebene>
kann die Werte ..
und ...
für Parent- bzw. Grandparent-Item annehmen.
Für <Attribut>
kann der Name des Attributes aus der übergeordneten Ebene angegeben werden oder
.
um aus der übergeordneten Ebene das Attribut mit dem gleichen Namen zu referenzieren.
Um den Wert eines Attributes (mit gleichem Namen) von dem übergeordnetem Item (Parent-Item) zu erben, muss
in der Konfiguration das Attribut mit dem Wert ..:.
konfiguriert werden:
fenstergriff_kueche:
type: num
hm_address: OEQ1234567
sabotage:
type: bool
hm_address: ..:.
hm_function: SABOTAGE
low_battery:
type: bool
hm_address: ..:.
hm_function: LOW_BAT
In diesem Beispiel sieht man, dass die HomeMatic Adresse des Devices nur einmal angegeben werden muss. Der Vorteil wird besonders sichtbar, wenn man mehrere Fenstergriffe hat. Dann kann man diesen Block einfach kopieren und muss nur dem Item einen neuen Namen geben (z.B. fenstergriff_bad) und die hm_adress an einer Stelle abzuändern.
Um direkt den Wert eines Attributes von dem übergeordnetem Item des Parent-Items (Grandparent-Item)
zu erben, kann in der Konfiguration das Attribut mit dem Wert ...:.
konfiguriert werden.
Die Vererbung ist so implementiert, dass der Attribut Wert während der Initialisierung der Items beim
Start von SmartHomeNG kopiert wird. Im Backend wird in den Item Details des Child-Items also nicht
..:.
oder ...:.
angezeigt, sondern der kopierte Wert.