🏆
Eliona
German
German
  • 💡Vorwort
    • Willkommen!
    • Über dieses Dokument
    • Typographische Konventionen
    • Das Interface
    • Bedienelemente
    • Glossar
    • FAQ
  • 🎉Neue Funktionen
    • Changelog – Aktuelle Version: v14.0.5
  • 🎓Academy
    • Eliona Marketplace - Apps installieren und konfigurieren
    • Eliona als Ticketing Plattform
      • Anleitung aus Sicht Admin
      • Anleitung aus Sicht Service
      • Anleitung aus Sicht Kunde
    • Einführung in Ontologien
      • Einführung in die Haystack Ontologie
      • Einführung in die Brick Ontologie
      • Einführung in die RealEstateCore Ontologie
      • Wie deckt Eliona Ontologien ab
    • Einen Zählerwechsel konfigurieren
    • Aggregationen in Eliona
    • White-Labeling
    • Ein Projekt erstellen
    • Einen Benutzer erstellen
    • Benutzer zu einem Projekt hinzufügen
    • Eine Rolle erstellen
    • Einem Benutzer eine Rolle zuordnen
    • Ein Asset erstellen und konfigurieren
    • Ein Dashboard erstellen
    • Eine Analytic erstellen und konfigurieren
    • Einen Alarm konfigurieren
    • Einen Digitalen Zwilling anlegen
    • Wie “Wayfinding” funktioniert
    • Werte-Mapping in Eliona
    • Twig-Templating in Eliona
    • Einführung und Tour durch die Benutzeroberfläche
  • 📚Dokumentation
    • 🗺️Wayfinding
      • Ein neues Wayfinding-Gebäude mit Stockwerken erstellen
      • Ein bestehendes Gebäude bearbeiten
      • Ein bestehendes Stockwerk öffnen
      • Ein Wayfinding Stockwerk konfigurieren
      • QR-Code generieren
      • Wayfinding in der Nuzung
    • 📊Dashboard
      • Ein neues Dashboard erstellen
      • Widgets zum Dashboard hinzufügen
      • Zwischen Dashboards wechseln
      • Layout von Dashboards anpassen
      • Dashboards organisieren
      • Dashboards an Benutzer kopieren
      • Globale Dashboards
      • Dashboard Templates
    • 🧊Widgets
      • Widgets bedienen
      • Vordefinierte Widgets
        • Alarm
        • Alarmübersicht
        • Analog Eingabe
        • Analoger Trend
        • Analyse
        • Asset Tracking
        • Behaglichkeit
        • Bereichsdiagramm
        • Bild
        • Buchung
        • Digitaler Trend
        • Donut
        • Einfache Anzeige
        • Eingabe Auswahl
        • Eingabe Schalter
        • Fahrplan
        • Fortschritt Radial
        • Fortschritt Vertikal
        • Heatmap
        • HLK KPI
        • iFrame
        • Kalender
        • Karte
        • Kombinierte Trends
        • Lichtsteuerung
        • Links
        • Radar-Diagramm
        • Reporttabelle
        • Sankey-Diagramm
        • Schalter
        • Slider
        • Stockwerk
        • Temperaturbereiche
        • Ticketübersicht
        • Tracking heatmap
        • Trend mit Balken
        • Trigger
        • Wetter
        • Zwei analoge Trends
        • Zwei digitale Trends
      • Benutzerdefinierte Widgets
        • Detaillierte Liste der Alarme
        • Liste der Alarme
        • Module
          • Alarm
          • Bereich
          • Bild
          • Custom Stockwerk
          • Donut
          • Eingaben & Schalter
          • Fortschritt
          • Heatmap
          • Icon
          • iFrame
          • Kalender
          • Karte
          • Komfort
          • Links
          • Radar
          • Sankey
          • Tabelle
          • Ticket
          • Tracking
          • Trend
          • Uhrzeit
          • Wert
          • Wetter
    • 🎈Assets
      • Assets erstellen
      • Asset-Details
      • Ein Asset konfigurieren
      • QR-Codes generieren
      • Bewertungen
      • Asset Daten
      • Dokumente an Assets anhängen
      • Einem Asset Links hinzufügen
      • Asset-Status: Aktive / Inaktive / Nicht Überwachte Assets
      • Assets auf einer Karte platzieren
      • Assets strukturieren
      • Assets archivieren
      • Asset-Modellierung: Templates erstellen
        • Ein neues Template erstellen
        • Ein neues Asset-Charakteristik-Template erstellen
      • ❤️Die Template-Bibliothek
        • Ein Template importieren
        • Ein Template Exportieren
    • 🎛️Smart Views
      • Eine neue Smart View erstellen
      • Eine bestehende Smart View öffnen
      • Eine Smart View konfigurieren
      • Eine Smart View bereitstellen
      • Slider Gruppen
      • Smart Assist
    • ⏰Alarme, Regeln und Eskalationen
      • 🚦Regeln
        • Eine Regel erstellen
      • 🚨Alarme
        • Quittierpflichtige und Gehende Alarme
        • Alarmstatistik
      • ↗️Eskalationen
        • Eine Neue Eskalationen erstellen
        • Eine Eskalation konfigurieren
        • Nutzer für Eskalationen konfigurieren
        • Notification Provider
          • Mail
          • Google Chat
          • SMS
          • Slack
          • eCall-Services
          • Job diagnostic
        • Allgemeinen Kalender erstellen
        • Eskalationen gruppieren
      • ⛓️Regelketten
        • Die Regelketten Seite öffnen
        • Eine neue Regelkette erstellen
        • Die Konfiguration einer bestehenden Regelkette öffnen
        • Regelkette konfigurieren
    • 🎟️Tickets
      • Tickets erstellen
      • Ticket Einstellungen
      • Ticket konfigurieren
      • Ticket-Details
      • Tasks erstellen
      • Task starten und abschliessen
      • Tickets schliessen
    • 📈Analytics & Reports
      • Analytics Nutzen
      • Reports Nutzen
    • 🌍Karte und Stockwerk
      • Karte
      • Stockwerk
        • Ein Stockwerk erstellen
        • Assets auf einem Stockwerk platzieren
        • Räume erstellen
        • Localino Anker konfigurieren
    • 🏛️BIM
      • Ein BIM öffnen
      • In einem BIM navigieren
      • Ein neues BIM erstellen
      • Assets in einem BIM platzieren
    • 📫Benachrichtigungen
      • Interne Benachrichtigungen
      • Benachrichtigungen Stumm Schalten
      • Push-Benachrichtigungen
      • Benachrichtigungen anpassen
    • 👥Digitaler Zwilling
    • ⚙️Engineering
      • Skript Engine
        • Skripte konfigurieren
        • Python Skripte schreiben
          • Output Logging und Fehlerbehandlung
          • Vorinstallierte Python-Bibliotheken im Eliona-System
          • Erstellen und Lesen von Dateien
        • PL/PgSQL-Skripte schreiben
      • Asset-Modellierung / Templates
        • Ein neues Template erstellen
        • Ein neues Asset-Charakteristik-Template erstellen
    • 🔧Einstellungen
      • Apps
        • Asset-Filter
      • Audit Trail
      • Lizenz
        • Lizenz läuft ab
      • System
      • API-Schlüssel
    • 🚩Tags
    • 🔮Systeme und Projekte
      • Ein neues Projekt erstellen
      • Benutzer zu einem Projekt hinzufügen
      • Aussehen eines Projekts anpassen
      • Startseite
      • Zwischen Projekten wechseln
    • 🧑‍💻Benutzer
      • Einen neuen Nutzer anlegen
      • Einen Nutzer einem Projekt zuweisen
      • Rolle eines Nutzers ändern
      • Zugriffsrechte von Nutzern verwalten
      • Benutzer archivieren und wiederherstellen
      • Benutzerdaten anpassen
    • 🎭Rollen
      • Warum sind Rollen so wichtig?
      • Das Rollen-Menü
      • Systemrollen
      • Projektrollen
    • 👾Weitere Funktionen
      • 📑Attribut Funktionen
        • ➗Werte berechnen: Der Calculator
        • 🕵️Filter
        • 📈Gerätesimulator
      • 🪃Lesezeichen
      • Tracking
      • 👀Monitoring
        • Monitoring mit Grafana
        • HDD Monitor
      • 🤳Augmented Reality
      • 🚢Bulk Import
  • 📶connectivity as a service
    • Geräte mit Eliona verbinden
      • Geräte per Modbus verbinden
        • Neue Modbus-Verbindung erstellen
        • Jobs lesen
      • Geräte per MQTT verbinden
        • Neuen Client erstellen
        • Client konfigurieren
        • Eine Subscription konfigurieren
        • Eine Publication konfigurieren
        • Eliona Broker
      • Geräte per RESTful verbinden
        • RESTful Verbindung konfigurieren
        • RESTful Request konfigurieren
      • Geräte per Webhook verbinden
      • ...mit Kafka
        • Eine neue Verbindung aufbauen
        • Verbindung konfigurieren
        • Abonnement konfigurieren
        • Publication konfigurieren
      • Geräte per OPC UA verbinden
        • Einen Endpunkt erstellen und konfigurieren
        • Endpunkt-Details
        • Verbindungs-Details
      • Ein Format konfigurieren
        • Format Konventionen und Beispiele
      • Funktionen
  • Edge Nodes
    • Was sind Edge Nodes?
    • EdgeNodes in Eliona
      • Control Edge einrichten
        • Eliona-Module für Niagara
  • 🍎Apps
    • Apps
      • ABB free@home
      • Akenza
      • Buchung
      • CoffeeCloud
      • Correlation App
      • Device simulator
      • Exchange-App
      • Forecast
        • Was ist Forecasting
        • Forecast App einfach nutzen
        • Parameter richtig Wählen
          • Alle Parameter auf einem Blick
        • Ablauf der Forecast App
        • Was sind Hyperparameter?
        • Parameter Konfiguration
        • Training Parameter einstellen
        • Binäre und Mehrklassen-Prognosen
        • Automatische Parameter
        • API-Dokumentation
        • Use Cases
      • Glutz
      • GP Joule
      • Hailo
      • Kentix
      • KentixONE
      • Kontakt.io
      • Localino
        • Geofencing-Funktion im Localino-System
      • Loriot.io
      • Microsoft 365
      • Microsoft ADFS
      • myStrom App
      • Niagara
      • OpenBOS
      • Renzbox
      • ROOMZ
      • SAML SSO
      • Signify
      • Spread Sheet
      • Stoppuhr
      • Thingdust
      • Xovis
      • Xovis People Counter
      • Zevvy
    • App SDK
  • 📢Feedback
    • 🐛Einen Bug melden
    • 💝Verbesserungsvorschlag senden / Feature wünschen
  • 👩‍💻Für Entwickler
    • REST API
    • Engineering
Powered by GitBook
On this page
  • JSONPath-Konvention
  • Beispiel 1: Einfache Abfrage aus einem JSON-Payload
  • Beispiel: Funktion zur Erzeugung eines GAI/Zugehörige ID, wenn der Payload keinen Identifikator enthält
  • Szenario: Kein Identifier im Payload
  • Lösung: Funktion erstellen
  • Konfiguration in Eliona
  • Verwendung von MQTT-Wildcards zur GAI/Zugehörige ID-Erstellung
  • MQTT-Topic-Struktur im Beispiel:
  • Wildcards in MQTT
  • Funktionsweise der MQTT-Wildcards
  • Beispiele für MQTT-Wildcard-Nutzung
  • Beispiel 2: Nutzung von + zur Identifikation einer Ebene
  • Beispiel 3: Kombination von + und # zur Erfassung mehrerer Ebenen
  • Wichtige Hinweise

Was this helpful?

  1. connectivity as a service
  2. Geräte mit Eliona verbinden
  3. Ein Format konfigurieren

Format Konventionen und Beispiele

Eliona 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 Nutzung dynamischer Werte aus Topic-Strukturen. Diese Dokumentation zeigt, wie Sie beide Methoden effektiv einsetzen können, um Ihre Datenverarbeitung zu optimieren.

JSONPath-Konvention

JSONPath ist eine Syntax zur Auswahl und Verarbeitung von Werten in einem JSON-Dokument. Die Grundstruktur und Symbole von JSONPath:

  1. $: Der Root-Knoten des JSON-Dokuments.

  2. .: Der Zugriff auf ein Kind-Element.

  3. []: Ermöglicht den Zugriff auf ein Element anhand eines Indexes oder einer Bedingung.

  4. ?(): Filter-Ausdruck, um Elemente anhand einer Bedingung auszuwählen.

  5. @: Repräsentiert das aktuelle Element im Filter-Ausdruck.

  6. *: Wildcard, um alle Elemente eines Arrays oder Objekts auszuwählen.

  7. ..: Rekursiver Zugriff, um alle Instanzen eines bestimmten Namens in der Hierarchie zu finden.


Beispiel 1: Einfache Abfrage aus einem JSON-Payload

JSON-Daten:

{
    "devices": [
        {
            "id": "A8032A13B850",
            "name": "WiFi Switch 4",
            "type": "ws2",
            "wifiSwitchTemp": 23.75
        },
        {
            "id": "F008D1C4B034",
            "name": "WiFi Switch 3",
            "type": "ws2",
            "wifiSwitchTemp": 23.93
        }
    ]
}

JSONPath-Abfragen und Ergebnisse:

  1. Alle Gerätedaten abfragen: JSONPath: $.devices[*] Ergebnis:

    [
        {
            "id": "A8032A13B850",
            "name": "WiFi Switch 4",
            "type": "ws2",
            "wifiSwitchTemp": 23.75
        },
        {
            "id": "F008D1C4B034",
            "name": "WiFi Switch 3",
            "type": "ws2",
            "wifiSwitchTemp": 23.93
        }
    ]
  2. Temperatur aller Geräte abfragen: JSONPath: $.devices[*].wifiSwitchTemp Ergebnis:

    [23.75, 23.93]
  3. Ein Gerät mit einer bestimmten ID abfragen: JSONPath: $.devices[?(@.id=="A8032A13B850")] Ergebnis:

    [
        {
            "id": "A8032A13B850",
            "name": "WiFi Switch 4",
            "type": "ws2",
            "wifiSwitchTemp": 23.75
        }
    ]
  4. Nur die Temperatur eines bestimmten Geräts abfragen: JSONPath: $.devices[?(@.id=="A8032A13B850")].wifiSwitchTemp Ergebnis:

[23.75]

Beispiel: Funktion zur Erzeugung eines GAI/Zugehörige ID, wenn der Payload keinen Identifikator enthält

Wenn ein eingehender Payload keinen eindeutigen Identifikator enthält oder der Identifikator von mehreren Elementen im Payload abhängt, kann eine benutzerdefinierte Funktion verwendet werden, um den Identifikator zu generieren.

Szenario: Kein Identifier im Payload

Stellen wir uns folgendes Beispiel für einen Payload vor:

{
    "device": {
        "name": "WiFi Switch",
        "type": "ws2",
        "status": "active",
        "location": {
            "building": "Building_01",
            "floor": "Floor_02",
            "room": "Room_01"
        }
    }
}

In diesem Beispiel enthält der Payload keinen direkten Identifikator da es vielleicht mehrere WiFi Switch gibt, aber die Kombination aus Gebäude, Etage und Raum kann verwendet werden, um einen eindeutigen Identifikator zu erstellen.

Lösung: Funktion erstellen

Verwenden Sie eine benutzerdefinierte Funktion in Eliona, um den Identifikator aus den Bestandteilen des Payloads zu generieren.

Code-Beispiel: Identifikator aus mehreren Feldern erzeugen

javascriptCode kopierenfunction parsePayloadCustom(json, context) {
    const input = JSON.parse(json);

    // Objektstruktur initialisieren
    let obj = {
        "eliona": {
            "uin": null // Der Identifikator wird hier gespeichert
        }
    };

    // Prüfen, ob die erforderlichen Daten vorhanden sind
    if (
        input.device &&
        input.device.location &&
        input.device.location.building &&
        input.device.location.floor &&
        input.device.location.room
    ) {
        // Identifikator aus den Feldern im Payload generieren
        obj.eliona.uin = `${input.device.location.building}_${input.device.location.floor}_${input.device.location.room}`;
    } else {
        // Fallback: Standardwert setzen, wenn Felder fehlen
        obj.eliona.uin = null;
    }

    return obj;
}

Konfiguration in Eliona

  1. Funktion erstellen:

    • Gehen Sie zur Option "Funktion erstellen" im Menü.

    • Geben Sie der Funktion einen Namen, z. B. parsePayloadCustom.

    • Fügen Sie den obigen Code im Code-Editor ein.

  2. Funktion mit einem Format verbinden:

    • Wählen Sie im Menü "Format konfigurieren" das entsprechende Format.

    • Fügen Sie die Funktion mit dem Button "Funktion anhängen" hinzu.

  3. Identifikator verwenden:

    • Das Format verwendet den generierten Identifikator (eliona.uin), um eingehende Daten auf das korrekte Asset zuzuordnen. Dafür kann entweder Extern für die Zugehörige ID oder GAI ausgewählt werden je nach dem wo man die Id dann haben will.


Verwendung von MQTT-Wildcards zur GAI/Zugehörige ID-Erstellung

MQTT-Topic-Struktur im Beispiel:

Wildcards in MQTT

MQTT unterstützt zwei Wildcard-Typen, die in den Topics verwendet werden können:

  1. + (Einzel-Ebenen-Wildcard)

    • Stellt "alle Werte auf dieser Topic-Ebene" dar.

    • Beispiel: Das Topic building_01/+/room_01 passt auf folgende Topics:

      • building_01/floor_01/room_01

      • building_01/floor_02/room_01

  2. # (Mehr-Ebenen-Wildcard)

    • Stellt "alle Werte ab dieser Ebene und darunter" dar.

    • Kann nur am Ende eines Topics verwendet werden.

    • Beispiel: Das Topic building_01/# passt auf folgende Topics:

      • building_01/floor_01

      • building_01/floor_01/room_01

      • building_01/floor_02/room_02


Funktionsweise der MQTT-Wildcards

  • +-Wildcard: Jede +-Wildcard ersetzt genau einen Teil des Topics. Wenn es mehrere +-Wildcards in einem Topic gibt, können Sie in Eliona durch Nummern (1, 2, usw.) auf sie zugreifen. Beispiel: Im Topic building_01/+/+, repräsentiert:

    • 1: den ersten Teil, der durch + ersetzt wurde.

    • 2: den zweiten Teil, der durch + ersetzt wurde.

  • #-Wildcard: Erfasst alle Werte und Ebenen ab der Position, an der sie steht. Alles, was im Topic den Platz von # einnimmt, kann in Eliona direkt über # referenziert werden.


Beispiele für MQTT-Wildcard-Nutzung

Beispiel 1: Nutzung von # zur Erfassung von Räumen

Subscription-Topic: building_01/#

Erhaltene Nachricht: building_01/floor_01/room_01

Konfiguration in Eliona:

  • Identifikator: #

Ergebnis: Das Thema floor_01/room_01 wird als GAI/Zugehörige ID verwendet.


Beispiel 2: Nutzung von + zur Identifikation einer Ebene

Subscription-Topic: building_01/+/room_01

Erhaltene Nachricht: building_01/floor_02/room_01

Konfiguration in Eliona:

  • Identifikator: 1

Ergebnis: Der Wert floor_02 (die Ebene, die durch das erste + ersetzt wurde) wird als GAI/Zugehörige ID verwendet.


Beispiel 3: Kombination von + und # zur Erfassung mehrerer Ebenen

Subscription-Topic: building_01/+/+/#

Erhaltene Nachricht: building_01/floor_01/room_02/sensor_01

Konfiguration in Eliona:

  • Identifikator:

    • 1 → floor_01 (erste +-Wildcard)

    • 2 → room_02 (zweite +-Wildcard)

    • # → sensor_01 (alle Werte, die # ersetzen)

Ergebnis: Die Werte floor_01, room_02 und sensor_01 können individuell als GAI/Zugehörige ID verwendet werden.


Wichtige Hinweise

  1. MQTT-Wildcards funktionieren nur mit dem Topic-Modus: Wählen Sie in der Identifikation "Topic" aus, wie im folgenden Bild dargestellt:

  2. Automatische Verarbeitung in Eliona:

    • Eliona ersetzt Wildcards automatisch durch die tatsächlichen Werte des Topics.

    • Keine zusätzliche Verarbeitung ist erforderlich.

  3. Nummerierung der +-Wildcards beachten:

    • Verwenden Sie die entsprechende Nummer (1, 2, usw.), um auf die spezifischen Werte zuzugreifen.

PreviousEin Format konfigurierenNextFunktionen

Last updated 5 months ago

Was this helpful?

📶
Beispiel für wenn man ein bestimmtes Gerät will.