Automatische Beziehungen
Funktionsbeschreibung
Über diese Funktionen können Ordnerpfade aus B.One element iot automatisiert ins Thingsboard übertragen werden.
B.One element iot Profil
Um die automatischen Beziehungen zu aktivieren muss folgendes Profil eingerichtet werden. Dabei sind die Bedingungen unter Voraussetzungen zu beachten.
Profilname: thingsboard_alarms
| Technischer Feldname | Typ |
|---|---|
| active | Boolscher Wert |

Das Profil
Benutzung
Das einzige Profilfeld ist hier der boolsche Wert active. Über diesen wird gesteuert, ob die Funktion für ein Gerät aktiviert sein soll.
Funktionsweise
Da das Thingsboard keine klassischen Ordnerstrukturen kennt, muss sich hier mit Objekten (Assets) und Beziehungen (Relations) beholfen werden. Für jede Ordner-Ebene in B.One element iot wird im Thingsboard ein neues Objekt angelegt. Dieser Objekt hat jeweils eine Beziehung zu einem Eltern-Objekt. Außerdem kann es beliebig viele Beziehungen zu Kinder-Objekten haben. Eine Straße kann also mehrere Häuser enthalten, aber ein Haus kann niemals Teil von mehreren Straßen sein. Sollte das Objekt für eine Ordner-Ebene schon vorhanden sein, so wird nur eine neue Beziehung hinzugefügt, nicht aber ein neues Objekt. Beziehungsstrukturen werden nach Aktivierung des Profils mit dem nächsten Messwert ausgelöst.
Beispiel
Als Beispiel sieht man hier ein Gerät in B.One element iot. Dieses ist Teil eines Ordners, der wiederum verschiedene Überordner hat. Auch hat das Gerät das Profil thingsboard_relations, wie es weiter oben beschrieben wurde. Das Feld active ist hier aktiviert.

Im Thingsboard sind folgende Objekte angelegt worden. Dies ist automatisch durch das erste gesendete Paket des Geräts in B.One element iot passiert.

Es gibt also für jede Ordner-Ebene ein Asset. In diesem Beispiel hat die Teststraße schon einen weiteren Unterordner (Testgebäude Nummer 3). Dieses Objekt wurde bereits durch ein früheres Paket erstellt und liegt neben dem neu erstellten Testgebäude Nummer 4. Zu beachten ist noch, dass den Objekten wie üblich der slug als Prefix hinzugefügt wurde.
Beziehungen
Zum Abschluss nun einmal die Beziehungen der erstellten Objekte.

Die relevanten Beziehungen haben immer den Typ element_iot_path. Es ist hier zu sehen, dass das Objekt testing_Thingsboard ZRI TEST Export/Teststraße/Testgebäude Nummer 4 zwei Beziehungen hat. Eine Zu seinem Kind-Objekt, also dem konkreten Gerät und eine Von seinem Eltern-Objekt, also in diesem Fall der zugehörigen Straße.
Die Beziehungen des Objekts testing_Thingsboard ZRI TEST Export/Teststraße wiederum sehen wie folgt aus:

Weiterhin hat das Objekt nur eine Von-Beziehung zu seinem Eltern-Objekt. Hier gibt es allerdings gleich zwei Zu-Beziehungen, da es hier zwei Gebäude gibt und jedes seine eigene Beziehung benötigt.
Anwendungsbeispiel
Um die Beziehungen im Thingsboard darzustellen, kann ein Entities-Hierarchy-Widget benutzt werden. Als Datenquelle muss hier folgender Entitätsalias gewählt werden:

Hierbei ist der Aliasname beliebig wählbar, alle anderen Felder müssen allerdings exakt ausgefüllt werden. Der einzige benötigte Datenschlüssel ist hier das Label. Dies dient dazu, dass die Elemente der Hierarchie mit ihrem korrekten Namen angezeigt werden:

Zusätzlich müssen noch einige Einstellungen im Erweitert-Reiter vorgenommen werden. Das erste Feld (Funktion zur Abfrage von Knotenbeziehungen: f(widgetCtx, nodeCtx)) muss folgendermaßen befüllt werden:

Als letzte Einstellung muss noch das Feld Knotentext-Funktion: f(widgetCtx, nodeCtx) so ausgefüllt werden:

Wenn alles richtig funktioniert hat, sieht das Ergebnis so aus:

Hinweise: In den Zu-Beziehungen taucht immer eine Beziehung mit dem
ManagedByIntegreation-Typ auf. Dieser wird automatisch vom Thingsboard hinzugefügt und hat nichts mit dem hier beschriebenen Feature zu tun. Diese kann also ignoriert werden.
Es ist im aktuellen Stand nicht möglich, dass Objekte automatisiert gelöscht werden. Sollte also ein Ordner in B.One element iot umbenannt werden, so wird ein neues Objekt im Thingsboard angelegt, das alte aber nicht gelöscht. Dies hat technische Hintergründe. Allerdings verbrauchen diese Objekte so gut wie keinen Speicherplatz und sollten somit kein Problem darstellen.
Alle Objekte, die über diese Funktion erstellt werden, werden in einer von zwei automatisch erstellten Objekt-Gruppen abgelegt. Diese sind element_iot_path und element_iot_path_root. Wobei in letzterem jeweils das Objekt zur obersten Ordnerebene abgelegt wird und alle anderen in der ersten Objekt-Gruppe. Beide Gruppen dürfen nicht gelöscht werden, erfordern aber auch keine manuelle Interaktion.