Letztes Update 2021/04/11 14:47
openHAB hat eine strikte Trennung zwischen der physischen Welt (die „Things“, siehe unten) und der Anwendung, die auf dem Begriff „Items“ (auch als virtuelle Schicht bezeichnet) basiert.
Items stellen Funktionen dar, die von der Anwendung verwendet werden (hauptsächlich Benutzeroberflächen oder Automatisierungslogik). Items haben einen Status und werden durch Ereignisse verwendet.
Die folgenden Artikeltypen sind derzeit verfügbar (alphabetische Reihenfolge):
Item Name | Beschreibung | Befehlstypen |
---|---|---|
Color | Farbinformation (RGB) | OnOff, IncreaseDecrease, Percent, HSB |
Contact | Speicherstatus von z.B. Tür- / Fensterkontakten | OpenClosed |
DateTime | Speichert Datum und Uhrzeit | - |
Dimmer | Beinhaltet prozentualen Wert vom Dimmer | OnOff, IncreaseDecrease, Percent |
Group | Gegenstand, um andere Gegenstände zu verschachteln / in Gruppen zu sammeln | - |
Image | Enthält die Binärdaten eines Images | - |
Location | Speichert GPS Koordinaten | Point |
Number | Speichert Werte im Zahlenformat und verwendet ein optionales Dimensionssuffix | Decimal |
Number: <dimension> | wie Number, zusätzliche Dimensionsinformationen für die Einheitenunterstützung | Quantity |
Player | Ermöglicht die Steuerung von Playern (z. B. Audio-Playern) | PlayPause, NextPrevious, RewindFastforward |
Rollershutter | Wird üblicherweise für Jalousien verwendet | UpDown, StopMove, Percent |
String | Speichert Texte | String |
Switch | Wird üblicherweise für Lichter verwendet (Ein / Aus) | OnOff |
Gruppenelemente sammeln andere Elemente in Gruppen. Gruppenelemente können selbst Mitglieder anderer Gruppenelemente sein. Eine zyklische Mitgliedschaft ist nicht verboten, wird jedoch dringend empfohlen. Benutzeroberflächen können Gruppenelemente als einzelne Einträge anzeigen und ihren Mitgliedern die Navigation ermöglichen.
Beispiel für ein Gruppenelement als einfache Sammlung anderer Elemente:
Group Erdgeschoss Switch küchenLicht (Erdgeschoss) Switch wohnzimmerLicht (Erdgeschoss)
Gruppenelemente können ihren eigenen Status von ihren Mitglieds-Items ableiten. Um einen Status abzuleiten, muss das Gruppen-Item unter Verwendung eines Basiselements und einer Gruppenfunktion erstellt werden. Bei der Berechnung des Status durchlaufen Gruppenfunktionen rekursiv die Mitglieder der Gruppe und berücksichtigen auch Mitglieder von Untergruppen. Wenn eine Untergruppe jedoch einen eigenen Status definiert (wobei die Basisfunktion für Element und Gruppe festgelegt ist), wird die Durchquerung gestoppt und der Status des Untergruppenmitglieds wird übernommen.
Verfügbare Gruppenfunktionen und Beispiele finden Sie im Konfigurationshandbuch.
StringType
Objekte speichern einen einfachen Java-String.
DateTimeType
Objekte werden mit Java SimpleDateFormat.parse()
unter Verwendung des ersten übereinstimmenden Musters analysiert:
yyyy-MM-dd'T'HH:mm:ss.SSSZ
yyyy-MM-dd'T'HH:mm:ss.SSSz
yyyy-MM-dd'T'HH:mm:ss.SSSX
yyyy-MM-dd'T'HH:mm:ssz
yyyy-MM-dd'T'HH:mm:ss
Literal | Standard | Beispiel |
---|---|---|
z | General time zone | Pacific Standard Time; PST; GMT-08:00 |
Z | RFC 822 time zone | -0800 |
X | ISO 8601 time zone | -08; -0800; -08:00 |
DecimalType
und PercentType
Objekte verwenden den BigDecimal
Konstruktor von Java für die Konvertierung. PercentType
Werte reichen von 0 bis 100.
Ein numerischer Type, der zusätzlich zu seinem Wert eine Einheit trägt. Das Framework kann abhängig von den Ländereinstellungen des Benutzers automatisch zwischen Einheiten konvertieren. Weitere Informationen finden Sie im Konzept zu Maßeinheiten.
HSB-Zeichenfolgenwerte bestehen aus drei durch Kommas getrennte Werte für Farbton (0-360 °), Sättigung (0-100%) bzw. Helligkeit (0-100%), z.B. 240.100.100 für „maximales“ Blau.
PointType
Zeichenfolgen bestehen aus drei durch Kommas getrennte DecimalTypes
, die Breiten- und Längengrade in Grad bzw. Höhen in Metern angeben.
Type | Unterstützte Werte |
---|---|
IncreaseDecreaseType | INCREASE , DECREASE |
NextPreviousType | NEXT , PREVIOUS |
OnOffType | ON , OFF |
OpenClosedType | OPEN , CLOSED |
PlayPauseType | PLAY , PAUSE |
RewindFastforwardType | REWIND , FASTFORWARD |
StopMoveType | STOP , MOVE |
UpDownType | UP , DOWN |
Es gibt eine Reihe von Elementen, die mehrere Statusdatentypen akzeptieren, z. B. DimmerItem
, das OnOffType
und PercentType
, RollershutterItem
, das PercentType
und UpDownType
, oder ColorItem
, das HSBType
, OnOffType
und PercentType
. Da ein Item den Status EINZELN hat, können diese mehreren Datentypen als unterschiedliche Ansichten zu diesem Status betrachtet werden. Der Datentyp mit den meisten Informationen zum Status wird normalerweise verwendet, um den internen Status für das Element beizubehalten, und andere Datentypen werden aus diesem Hauptdatentyp konvertiert. Dieser Hauptdatentyp ist normalerweise das erste Element in der Liste, das von Item.getAcceptedDataTypes()
zurückgegeben wird.
Hier ist eine kurze Tabelle, die die Konvertierungen für die obigen Beispiele zeigt:
Item Name | Hauptdatentyp | Zusätzliche Datentypkonvertierungen |
---|---|---|
Color | HSBType | OnOffType - OFF wenn die Helligkeitsstufe im HSBType gleich 0 ist - ON anderenfalls, PercentType - der Wert für die Helligkeitsstufe im HSBType |
Dimmer | PercentType | OnOffType - OFF wenn die durch den Prozent-Typ angegebene Helligkeitsstufe gleich 0 ist, ON andernfalls |
Rollershutter | PercentType | UpDownType - UP , wenn der durch den Prozent-Typ angegebene Verschlusspegel gleich 0 ist, DOWN , wenn er 100 beträgt, und UnDefType.UNDEF für einen anderen Wert |
Manchmal müssen für bestimmte Anwendungsfälle zusätzliche Informationen an Items angehängt werden. Dies kann eine Anwendung sein, die einige Hinweise benötigt, um die Items generisch zu rendern, oder eine Integration mit sprachgesteuerten Assistenten oder anderen Diensten, die auf die Items zugreifen und deren „Bedeutung“ verstehen müssen.
Solche Metadaten können mithilfe disjunkter Namespaces an Items angehängt werden, damit sie nicht miteinander in Konflikt stehen. Jeder Metadateneintrag hat einen Hauptwert und optional zusätzliche Schlüssel / Wert-Paare. An ein Item können Metadaten für beliebig viele Namespaces angehängt werden, wie im folgenden Beispiel dargestellt:
Switch LightSwitch "Light Switch" {channel="zwave:device:22c99d1e:node3:switch_binary", alexa="PowerController.powerState"}
Die Metadaten können über einen dedizierten REST-Endpunkt verwaltet werden und sind in den EnrichedItemDTO
Antworten enthalten.
Erweiterungen, die auf einige Metadaten schließen können, müssen automatisch einen MetadataProvider
Dienst implementieren und registrieren, um sie dem System zur Verfügung zu stellen. Sie können sie aus einer beliebigen Quelle bereitstellen und Daten dynamisch entfernen oder hinzufügen. Sie sind auch nicht auf einen einzelnen Namespace beschränkt.
Die MetadataRegistry
bietet Zugriff auf alle Erweiterungen, die die Item-Metadaten programmgesteuert lesen müssen. Es ist der zentrale Ort, an dem zusätzliche Informationen zu Artikeln aufbewahrt werden.
Die Übersetzung steht unter der EPLv2 Lizenz.