Konventionen und Beispiele für Encoder-/Decoder-Formate
BuildingPro Suites bietet leistungsstarke Werkzeuge wie JSONPath und MQTT-Wildcards um eingehende Daten dynamisch und präzise den richtigen Assets zuzuordnen. Während JSONPath eine flexible Auswahl von Werten aus JSON-Daten ermöglicht, erlauben MQTT-Wildcards die Verwendung dynamischer Werte aus Topic-Strukturen. Diese Dokumentation zeigt, wie Sie beide Methoden effektiv nutzen können, um Ihre Datenverarbeitung zu optimieren.
JSONPath-Konvention
JSONPath ist eine Syntax zum Auswählen und Verarbeiten von Werten in einem JSON-Dokument. Die grundlegende Struktur und die Symbole von JSONPath:
$: Der Wurzelknoten des JSON-Dokuments..: Zugriff auf ein untergeordnetes Element.[]: Ermöglicht den Zugriff auf ein Element über einen Index oder eine Bedingung.?(): Filterausdruck, um Elemente anhand einer Bedingung auszuwählen.@: Repräsentiert das aktuelle Element im Filterausdruck.*: Platzhalter, um alle Elemente eines Arrays oder Objekts auszuwählen...: Rekursiver Zugriff, um alle Vorkommen eines bestimmten Namens in der Hierarchie zu finden.
Beispiel 1: Einfache Abfrage aus einem JSON-Payload
JSON-Daten:
[hier kommt der Code hin]
JSONPath-Abfragen und Ergebnisse:
Alle Gerätedaten abfragen: JSONPath:
$.devices[*]Ergebnis:[hier kommt der Code hin]
Die Temperatur aller Geräte abfragen: JSONPath:
$.devices[*].wifiSwitchTempErgebnis:[hier kommt der Code hin]
Ein Gerät mit einer bestimmten ID abfragen: JSONPath:
$.devices[?(@.id=="A8032A13B850")]Ergebnis:[hier kommt der Code hin]
Nur die Temperatur eines bestimmten Geräts abfragen: JSONPath:
$.devices[?(@.id=="A8032A13B850")].wifiSwitchTempErgebnis:
[hier kommt der Code hin]

Beispiel: Funktion zum Generieren einer GAI/Associated ID, wenn der Payload keine Kennung enthält
Wenn ein eingehender Payload keine eindeutige Kennung enthält oder die Kennung von mehreren Elementen im Payload abhängt, kann eine benutzerdefinierte Funktion verwendet werden, um die Kennung zu generieren.
Szenario: Keine Kennung im Payload
Stellen wir uns das folgende Beispiel für einen Payload vor:
[hier kommt der Code hin]
In diesem Beispiel enthält der Payload keine direkte Kennung, da es mehrere WiFi-Schalter geben könnte, aber die Kombination aus Gebäude, Stockwerk, und Raum kann verwendet werden, um eine eindeutige Kennung zu erstellen.
Lösung: Eine Funktion erstellen
Verwenden Sie in BuildingPro Suites eine benutzerdefinierte Funktion, um die Kennung aus den Bestandteilen des Payloads zu generieren.
Codebeispiel: Kennung aus mehreren Feldern generieren
[hier kommt der Code hin]
Konfiguration in BuildingPro Suites
Funktion erstellen:
Gehen Sie zu "Funktion erstellen" Option im Menü.
Geben Sie der Funktion einen Namen, z. B.
parsePayloadCustom.Fügen Sie den obigen Code in den Code-Editor.
Funktion mit einem Format verbinden:
Wählen Sie im Menü "Format konfigurieren" das entsprechende Format aus.
Fügen Sie die Funktion mit der "Funktion anhängen" Schaltfläche hinzu.
Kennung verwenden:
Das Format verwendet die generierte Kennung (
eliona.uin) um eingehende Daten dem richtigen Asset zuzuordnen. Hierfür kann entweder Extern für die zugehörige ID oder GAI gewählt werden, je nachdem, wo sich die ID befinden soll.

Verwendung von MQTT-Wildcards zur Erstellung einer GAI/Associated ID
MQTT-Topic-Struktur im Beispiel:
[hier kommt der Code hin]
Wildcards in MQTT
MQTT unterstützt zwei Arten von Platzhaltern, die in Topics verwendet werden können:
+(Platzhalter für eine Ebene)Repräsentiert „alle Werte auf dieser Topic-Ebene“.
Beispiel: Das Topic
building_01/+/room_01passt zu den folgenden Topics:building_01/floor_01/room_01building_01/floor_02/room_01
#(Platzhalter für mehrere Ebenen)Repräsentiert „alle Werte von dieser Ebene und darunter“.
Kann nur am Ende verwendet werden eines Topics.
Beispiel: Das Topic
building_01/#passt zu den folgenden Topics:building_01/floor_01building_01/floor_01/room_01building_01/floor_02/room_02
So funktionieren MQTT-Wildcards
+Platzhalter: Jeder+Platzhalter ersetzt genau einen Teil des Topics. Wenn es mehrere+Platzhalter in einem Topic gibt, können Sie in BuildingPro Suites mithilfe von Zahlen darauf zugreifen (1,2, usw.). Beispiel: Im Topicbuilding_01/+/+, steht dies für:1: der erste Teil, der durch+.2: der zweite Teil, der durch+.
#Platzhalter: Erfasst alle Werte und Ebenen ab der Position, an der es steht. Alles, was an die Stelle von#im Topic tritt, kann direkt über#in BuildingPro Suites referenziert werden.
Beispiele für die Verwendung von MQTT-Wildcards
Beispiel 1: Verwendung von # zum Erfassen von Räumen
Abonnement-Topic: building_01/#
Empfangene Nachricht: building_01/floor_01/room_01
Konfiguration in BuildingPro Suites:
Kennung:
#
Ergebnis: Das Topic floor_01/room_01 wird als GAI/Associated ID verwendet.
Beispiel 2: Verwendung von + zur Identifizierung einer Ebene
Abonnement-Topic: building_01/+/room_01
Empfangene Nachricht: building_01/floor_02/room_01
Konfiguration in BuildingPro Suites:
Kennung:
1
Ergebnis: Der Wert floor_02 (die Ebene, die durch den ersten +) wird als GAI/Associated ID verwendet.
Beispiel 3: Kombination von + und # zum Erfassen mehrerer Ebenen
Abonnement-Topic: building_01/+/+/#
Empfangene Nachricht: building_01/floor_01/room_02/sensor_01
Konfiguration in BuildingPro Suites:
Kennung:
1→floor_01(erster+Platzhalter)2→room_02(zweiter+Platzhalter)#→sensor_01(alle Werte, die#)
Ergebnis: Die Werte floor_01, room_02, und sensor_01 können einzeln als GAI/Associated ID verwendet werden.
Wichtige Hinweise
MQTT-Wildcards funktionieren nur mit dem Topic-Modus: Wählen Sie in der Identifikation "Topic" aus, wie in der folgenden Abbildung gezeigt:

Automatische Verarbeitung in BuildingPro Suites:
BuildingPro Suites ersetzt Platzhalter automatisch durch die tatsächlichen Werte des Topics.
Es ist keine zusätzliche Verarbeitung erforderlich.
Beachten Sie die Nummerierung der
+Platzhalter:Verwenden Sie die entsprechende Zahl (
1,2, usw.), um auf die spezifischen Werte zuzugreifen.
Zuletzt aktualisiert
War das hilfreich?