Die Funktion der Virtuellen Geräte ist sinngemäß, unterschiedliche Datenquellen des Internets der Dinge in niotix zu integrieren. Dabei ist es nicht relevant, welche Übertragungstechnologie hierbei verwendet wird, da Virtuelle Geräte technologie-agnostisch sind.
Datenfluss vom physischen Sensor bis an ein Virtuelles Gerät
Den zentralen Eingangspunkt für Sensordaten bilden in niotix die Konnektoren (). Sie bieten die Möglichkeit Daten über verschiedene Protokolle zu empfangen und auf das benötigte Eingangsformat zu transformieren.
Gerätereiber() parsen das eingehende Payload bei Bedarf und ordnen die Daten Ziel-Variablen zu.
Auf Basis eines Konnektors und eines Gerätetreibers können Virtuelle Geräte () angelegt werden, an denen die Daten (historisch) einsehbar sind. Sollen viele gleichartige Virtuelle Geräte angelegt werden empfiehlt sich die Verwendung eines Gerätetemplates (), um maximale Konstistenz herzustellen und eine einfachere Verwaltung zu gewährleisten.
Übersicht Virtuelle Geräte
Über das Menü “Virtuelle Geräte” werden alle verfügbaren Geräte angezeigt, auf die der Nutzer Zugriff hat.
In dieser Übersicht können außerdem neue Virtuelle Geräte angelegt, die Favoritenansicht eingeblendet oder die Virtuellen Geräte auf einer Karte angezeigt werden.
Zudem können die Virtuellen Geräte aus dieser Übersicht heraus bearbeitet werden, indem der Nutzer auf den entsprechenden Stift-Button rechts in der Tabelle drückt. Bei Bedarf können Virtuelle Geräte auch gelöscht werden.
Die Anwendung bietet eine Filterfunktion, über die der Nutzer die Möglichkeit hat, die angezeigte Gesamtliste auf seine Bedürfnisse zu filtern.
Filter funktionieren im Default auf “partiellen Treffern”, d.h. ein Filter nach Id 123 findet sowohl das Gerät mit der Id 123, als auch alle anderen Geräte mit dieser Zeichenkombination, z.B. 1123 oder 51234. Um nur “exakte Treffer” zu erhalten, muss das Filterkriterium in " " gesetzt werden, also z.B. “123”.
Bedeutung besonderer Tabellenspalten:
- “Zuletzt gesehen”: Dieser Wert gibt an wie viel Zeit nach dem Eintreffen des letzten Datenpakets vergangen ist.
- “Externe ID”: Virtuelle Geräte können unterschiedliche Datenquellen besitzen. Sie repräsentieren Objekte aus den verbundenen Datenquellen. Dieser Wert gibt die ID des Objektes in der verbundenen Datenquelle an.
- “Systemstatus”: dieser Wert drückt aus, ob mit dem Virtuellen Gerät alles in Ordnung ist. Sollte eine Warnung oder ein Alarm angezeigt werden, so kann der Wert angeklickt werden um den Alarm beziehungsweise die Warnung anzuzeigen oder zu ignorieren. Für jedes Objekt können mehrere Warnungen und Alarme existieren. Ignorierte Warnungen oder Alarme können in der Bearbeitung des Objektes wieder auf aktiv gesetzt werden.
Virtuelle Geräte anlegen
Um einfach und schnell ein Virtuelles Gerät zu erstellen, klickst du auf den Button “Anlegen”. Es öffnet sich ein neues Fenster, in dem der Nutzer zunächst ein Konto auswählt, zu dem das Virtuelle Gerät angelegt werden soll. Nach der Auswahl des Kontos zeigt das zweite Feld rechts daneben die für das Konto verfügbaren Konnektoren an. Über die Option “Gerätetemplate für die Erstellung verwenden” wechselt das Feld auf die Auswahl der vorhandenen Templates.
Nach der Auswahl eines Konnektors/Gerätetemplates werden die beiden Felder zur Bearbeitung gesperrt und können über den Änderungsbutton nachträglich wieder angepasst werden. Im weiteren Schritt kann nun ein neues Virtuelles Gerät zu diesem Konnektor angelegt oder ein bereits bestehendes Virtuelles Gerät importiert werden.
Entscheidet sich der Benutzer dazu ein bestehendes Virtuelles Gerät zu importieren, so trägt er den externen Identifikator des Geräts in dem entsprechenden Eingabefeld ein und betätigt den Button “Importieren”. Danach wird das Virtuelle Gerät in dem durch den Konnektor verbundenen System gesucht. Bei einer erfolgreichen Suche werden alle möglichen Eingabefelder bereits vorausgefüllt. Sollte beim Import festgestellt werden, dass das Gerät bereits im System erfasst ist, wird dem Nutzer eine entsprechende Meldung angezeigt und danach kann sich der Nutzer entscheiden, ob er das bereits angelegte Gerät weiter verwenden möchte oder dennoch das Gerät ein weiteres Mal importieren möchte.
Über den Button “Anlegen” kann man als Nutzer ein neues Virtuelles Gerät erstellen. Es erscheinen die Eingabefelder, die auszufüllen sind, um ein neues Gerät anzulegen:
- Titel:* Gib dem Gerät einen aussagekräftigen Titel für die einfache Identifizierung.
- Übergeordnetes Objekt:* In diesem Eingabefeld kannst du den digitalen Zwilling auswählen, zu dessen Berechtigungsumfeld das Virtuelle Gerät angelegt werden soll.
- Beschreibung: Gebe eine kurze Beschreibung des Geräts ein, die auf der Detailseite erscheint. (Unterstützt Markdown-Formatierung)
- Tags: Über ein Dropdown können bereits im System existierende Tags ausgesucht oder neue Tags erfasst werden.
- Betriebsstatus: Du kannst zwischen “Nicht gesetzt”, “Unterwegs”, “Betriebsbereit”, “In Betrieb”, “Vorübergehend inaktiv” oder “Stillgelegt” wählen. Um den Status für die Berichtsanzeige auf der Detailseite zu überprüfen, wird der jüngste Betriebsstatus des Geräts mit dem Schwellenwert kombiniert.
- Gerätetreiber: Wenn das Virtuelle Gerät zu einem bestimmten Gerätetreiber gehört, kannst du diesen Teriber aus der Liste auswählen und die Geräte direkt zuordnen, damit bei der Anlage und nach der Inbetriebnahme die Nutzlast der Datenpakete interpretiert werden kann.
- Gruppen: Virtuelle Geräte können bis unendlich viele Gerätegruppen zugewiesen werden. In dem Dropdown “Gruppen” kannst du zwischen den verschiedenen im System bereits existierenden Gruppen wählen. Es können auch mehrere Gruppen ausgewählt werden. Existiert die entsprechende Gerätegruppe nicht im System, kann im Eingabefeld “Neue Geräte Gruppe” eine neue Gerätegruppe über die Eingabe erfasst werden und über das Betätigen des Buttons mit dem Plus-Symbol zu den existierenden Gruppen hinzugefügt werden.
Virtuelle Geräte bearbeiten
Bereits erfasste Virtuelle Geräte im System können vom Nutzer angezeigt und bearbeitet werden.
Einzelne Geräte bearbeiten
Bearbeite und editiere ein einzelnes Gerät, indem du auf ein Gerät in der Übersichtsliste bzw. auf den “Bearbeiten”-Icon rechts klickst. So gelangst du zu den Geräteinformationen.
Hier kannst du verschiedene Eigenschaften wie Titel, EUI, Beschreibung und weitere Felder verändern. In diesem Reiter wird oben links der Treiber des Geräts angezeigt, mit dem unter anderem auch die Nutzlast interpretiert wird. Dieser Gerätetreiber ist anklickbar und führt den Benutzer nach Anklicken direkt auf die Übersicht des entsprechenden Gerätetreibers. Rechts neben dem Gerätetreiber wird dem Nutzer angezeigt, seit wann das Gerät angelegt wurde und wie viel Zeit vergangen ist seit dem letzten eingehenden Datenpaket. Rechts neben diesen Informationen befindet sich ein Dropdown zur Auswahl eines relativen oder absoluten Zeitraumes. Dieser Zeitraum gibt an, für welche Zeitspanne alle im folgenden aufgeführten Informationen aufbereitet werden.
In der nächsten Zeile findet der Nutzer die Pakethistorie sowie die Liveansicht. Hier werden alle Pakete aufgelistet, die im ausgewählten Zeitraum vom System empfangen wurden. Endet der ausgewählte Zeitraum in der aktuellen Zeit, so werden in Echtzeit empfangene Pakete live in der Pakethistorie angezeigt. Rechts neben der Pakethistorie befindet sich die Paketvisualisierung. In der Paketvisualisierung werden einerseits die rohen empfangenen Daten des Datenpakets im JSON-Format angezeigt, darüber hinaus wird die durch den zuvor zugewiesenen Gerätetreiber interpretierte Nutzlast als JSON angezeigt.
Im nächsten Abschnitt wird dem Nutzer ein Balken-Diagramm angezeigt, welches die vom System empfangenen Paketmengen in dem ausgewählten Zeitraum visualisiert. Dabei zeigen die farbigen Balken den aktuell ausgewählten Zeitraum an, die grauen Balken zeigen den vorherigen Zeitraum an. So besteht die Möglichkeit einfach zu sehen, ob das Gerät zuverlässig Daten sendet im Vergleich zum vergangenen Zeitraum.
Darunter befinden sich nun die allgemeinen Geräteinformationen wie die externe Identifikationsnummer, der Betriebsstatus, der Gerätetreiber und die Gerätegruppen sowie die Möglichkeit eine neue Gerätegruppe hinzuzufügen. Alle Daten können hier verändert und gespeichert werden.
Des Weiteren findet man als Nutzer die Sektion der Downlinks. Hier kann man eine Nutzlast eintragen, eine Kodierung auswählen und einen entsprechenden Port, worüber die Nutzlast versendet werden soll. Zusätzlich ist es möglich auszuwählen, ob der Downlink vom System bestätigt werden soll oder nicht. Durch einen Klick auf den “Senden”-Button wird der entsprechende Downlink an das Virtuelle Gerät in der realen Welt versendet.
Im letzten Abschnitt dieser Übersicht befinden sich die Konnektor spezifischen Daten. Diese Daten sind nicht änderbar und werden zur Laufzeit aus dem System, welches durch den Konnektor angebunden ist, ausgelesen und zur Anzeige gebracht. Besteht der Wunsch diese Daten zu ändern, muss sich der Nutzer in dem verbundenen System anmelden und die Datenänderung dort durchführen.
Mehrere Geräte bearbeiten
Bearbeite und editiere bis zu 50 Geräte, indem du in der Übersichtsliste die zu bearbeitenden Geräte über die Checkbox selektierst und anschließend auf den Button “Auswahl bearbeiten” klickst. Die Bearbeitung erfolgt in drei Schritten.
1. Modus Wähle im Dropdown den Modus aus. Aktuell ist nur der Modus “Meta-Informationen anpassen” verfügbar.
2. Änderungen konfigurieren Die verfügbaren Änderungen basieren auf dem ausgewählten Modus.
Verfügbare Änderungen im Modus “Meta-Informationen anpassen”:
- Betriebsstatus
- Zugriffsbereich
- Gruppen: Dem Gerät eine oder mehere Gruppen zufügen. Die Gruppe muss bereits angelegt sein.
- Tags: Dem Gerät einen oder mehere Tags zufügen. Der Tag muss bereits angelegt sein.
3. Änderungen anwenden Im dritten Schritt kann den Änderungen ein Titel zugefügt werden, um Änderungen später nachvollziehen zu können. Nach einem Klick auf “Änderungen anwenden” wird ein Hintergrundjob erstellt, sodass niotix weiter genutzt werden kann, während die Verarbeitung läuft.
Der Fortschritt dieser Hintergrundjobs lässt sich unter “Hintergrundjobs” einsehen. Dieser Bereich ist unter dem Toolbar-Icons oben rechts erreichbar.
Den Gerätetreiber ändern
Es gibt sowohl die Möglichkeit, einen Gerätetreiber neu zu synchronisieren um Änderungen an einem Gerätetreiber auf das Virtuelle Gerät anzuwenden, als auch den ganzen Gerätetreiberen zu ändern.
Beide Funktionalitäten sollten mit Bedacht verwendet werden, da die Änderung an den Virtuellen Geräten auch Auswirkungen auf Datenpunkte in Digitalen Zwillingen haben und diese möglicherweise neu erstellt werden müssen, um wieder Daten zu empfangen. Die Daten im Virtuellen Gerät selbst werden bei beiden Funktionalitäten gelöscht.
Um den Gerätetreiber eines Virtuelle Geräts neu zu synchronisieren und die Änderungen am Gerätetreiber auch auf das Virtuelle Gerät anzuwenden, auf den Button neben dem Gerätetreiber klicken und das Virtuelle Gerät im Anschluss speichern.
Um dem Virtuellen Gerät einen neuen Gerätetreiber zuzuordnen muss die Liste der verfügbaren Gerätetreiberen zunächst entsperrt werden. Hierzu auf den Button mit dem Schloss klicken. Im Anschluss kann der gewünschte Gerätetreiber gesucht und ausgewählt werden. Wurde der richtige Gerätetreiber ausgewählt, das Virtuelle Gerät speichern.
Zu Beachten ist hierbei, dass die Änderungen am Virtuellen Gerät erst mit Speichern ebendieses übernommen werden.
Wichtige Datenpunkte
Jedes dieser Objekte besitzt drei Datenpunkte, welche automatisch erzeugt werden und nicht löschbar sind. Der “_raw” Datenpunkt zeigt die unveränderten Daten an, welche an das Objekt gesendet werden. Der “_parsed” Datenpunkt enthält das JSON, welches nach dem Durchlaufen des Parsers im Gerätetreiber aus dem rohen Payload des Sensors generiert wurde. Der “Health” Datenpunkt speichert Informationen zur Ermittlung des “Systemstatus”.
Der “_raw” Datenpunkt
Dieser Datenpunkt enhält die unveränderten Daten die am Konnektor für dieses Gerät eingegangen sind. Da für die weitere Verarbeitung nur das Payload für die Berechnung der einzelnen Messwert-Datenpunkte verwendet wird, dient dieser Datenpunkt dazu spezifische Datenpunkte für zum Beispiel RSSI/SNR/SF im LoRaWAN Fällen abzuleiten. Zudem ermöglich der State einen zuverlässige Revision der Daten.
Der “_parsed” Datenpunkt
Dieser Datenpunkt enthält das JSON welches durch das Parsen des rohen Payloads erzeugt wird. Er kann verwendet werden, um beispielsweise aggegierte Datenpunkte, welche Berechnungen aus verschiedenen Messwerten enhalten soll zu erstellen. Zusätzlich eignet er sich für das Weiterleiten von Daten an Drittsysteme, wenn mehr als ein Messpunkt weiterverarbeitet werden soll.
Der “Health” Datenpunkt
Dieser Datenpunkt ist besonders wichtig, da in ihm die Berechnung für den Systemstatus des Objektes erfolgt. Im Bearbeitungsmodus kann aus allen durch den Gerätetreiber entstandenen Datenpunkten ausgewählt werden, welche für die Ermittlung des Systemstatus relevant sind. Danach wird für jedes ausgewählte Element eine spezielle Ermittlungslogik festgelegt. Für diese Ermittlungslogik sind Programm-Beispiele angeführt.
Zum Beispiel kann ein Gerät bei einem Batteriestand unter 40 % eine Warnung erhalten und bei einem Batteriestand unter 20 % einen Alarm. Gleichzeitig kann ein weiterer Alarm ausgelöst werden, sollte das Gerät einen Fehler melden. Der Systemstatus kann also mehrere fehlerhafte Zustände parallel annehmen und darstellen.
Um die Konfiguration nicht bei jedem Gerät jeweils vornehmen zu müssen, kann die Konfiguration gesammelt im Gerätetreiber vorbereitet werden. Dies geschieht unter “Gerätestatuskonfig” und gilt für alle danach angelegten Geräte, die diesen Gerätetreiber zugewiesen bekommen.
Zustände des Health Datenpunktes und Auswertungslogik
Der Health Datenpunkt wird bei jedem neuen Paket, das für das Virtuelle Gerät verarbeitet wird ausgewertet. Zusätzlich gibt es eine zeitbasierte Auswertung, welche durch die Health Check - Regel definiert wird. Diese wird automatisch mit dem Health Datenpunkt erstellt. Standardmäßig wird diese Regel einmal am Tag ausgeführt, so dass auch dann, wenn keine Daten am Sensor ankommen, ein Alarm für dieses Gerät erzeugt wird. Wenn z.B. der Health Datenpunkt so konfiguriert ist, dass ein Alarm gesetzt wird, wenn z.B. 24 Stunden lang keine Daten empfangen wurden.
Zustände des Health Datenpunktes:
- Unbekannt: Bevor ein Gerät das erste Datenpaket empfängt, ist der Gesundheitszustand immer unbekannt, auch wenn es so konfiguriert ist, dass alle 24 Stunden nach Paketen gesucht wird. Dies dient dazu, Geräte mit echten Fehlern leichter von solchen zu unterscheiden, die noch nicht aktiviert sind, aber bereits in das System importiert wurden.
- Ok: Wenn das Virtuelle Gerät in der Vergangenheit mindestens ein Datenpaket empfangen hat und keine Warnungen oder Fehler vorhanden sind.
- Warnung: Wenn gemäß der Konfiguration des Gesundheitszustands ein Fehler erkannt wird.
- Alarm: Wenn gemäß der Konfiguration des Gesundheitszustands ein Alarm erkannt wurde.
- Ungültig: Wenn es für dieses Gerät keinen Health Datenpunkt gibt (z. B. Geräte, die erstellt wurden, bevor der Gesundheitszustand verfügbar war) oder wenn der Wert vom System nicht interpretiert werden kann (was der Fall sein kann, wenn der Gesundheitszustand einen benutzerdefinierten Javascript-Transformator enthält). Nach diesem Status kann aus technischen Gründen nicht gefiltert werden.
Berechtigungen
Alle Virtuellen Geräte werden, insofern nicht anders eingestellt, bei Geräteanlage oder bei Geräteänderung zu dem Root-Zwilling des entsprechenden Kontos angelegt. Das bedeutet, dass nur Nutzer die Geräte sehen können, die eine Berechtigung zur Anzeige und/ oder Änderung des Root-Zwillings besitzen. Soll ein Gerät eine andere Berechtigungseinstellung erhalten, zum Beispiel zur Berechtigungsgruppe eines untergeordneten Zwillings gehören, kann dies durch die Änderung des übergeordneten Objektes (unter Meta-Informationen) eingestellt werden.
Für einen Nutzer mit Einsicht sowie Schreibrechten der Virtuellen Geräte werden folgende Rollen auf dem jeweiligen Konto benötigt: DigitalTwin.list und VirtualDevice.manage.
Für einen Nutzer mit nur Leserecht auf die Virtuellen Geräte ist die Rolle VirtualDevice.read notwendig.
Gerätetreiber
Unter dem Menüpunkt “Gerätetreiber” siehst du eine Liste der Gerätetreiber, auf die du mit deinem Konto Zugriff hast. Hier erstellst du mit den entsprechenden Benutzerrechten Vorlagen zur Verwendung und Gruppierung von Geräten mit den selben Funktionen und Datenstrukturen. Du kannst Standards für die Umwandlung von Paketdaten über einen Paket-Parser einsetzen. Die detaillierte Dokumentation findest du im Hilfeartikel - Gerätetreiber