Freigeben über


Datenverarbeitung und benutzerdefinierte Funktionen

Wichtig

Eine neue Version des Azure Digital Twins-Diensts wurde veröffentlicht. Angesichts der erweiterten Funktionen des neuen Diensts wurde der ursprüngliche Azure Digital Twins-Dienst (in diesem Dokumentationssatz beschrieben) eingestellt.

Um die Dokumentation für den neuen Dienst anzuzeigen, besuchen Sie die aktive Azure Digital Twins-Dokumentation.

Azure Digital Twins stellt erweiterte Computefunktionen bereit. Entwickler können benutzerdefinierte Funktionen erstellen und für eingehende Telemetrienachrichten ausführen, um Ereignisse an vordefinierte Endpunkte zu senden.

Datenverarbeitungsfluss

Nachdem Geräte Telemetriedaten an Azure Digital Twins gesendet haben, können Entwickler diese Daten in vier Phasen verarbeiten: Überprüfen, Abgleichen, Berechnen und Versenden.

Datenverarbeitungsfluss in Azure Digital Twins

  1. In der Phase „Überprüfen“ wird die eingehende Telemetrienachricht in ein allgemein verständliches Format eines Datenübertragungsobjekts transformiert. In dieser Phase erfolgt auch die Überprüfung von Geräten und Sensoren.
  2. In der Phase „Abgleichen“ wird nach den entsprechenden benutzerdefinierten Funktionen gesucht, die ausgeführt werden sollen. Vordefinierte Matcher (Abgleicher) finden die benutzerdefinierten Funktionen anhand der Geräte-, Sensor- und Rauminformationen aus der eingehenden Telemetrienachricht.
  3. In der Phase „Berechnen“ werden die benutzerdefinierten Funktionen ausgeführt, für die in der vorherigen Phase eine Übereinstimmung gefunden wurde. Diese Funktionen können berechnete Werte aus Raumgraphknoten lesen und aktualisieren sowie benutzerdefinierte Benachrichtigungen ausgeben.
  4. In der Phase „Versenden“ werden alle benutzerdefinierten Benachrichtigungen aus der Berechnungsphase an Endpunkte gesendet, die im Graphen definiert sind.

Datenverarbeitungsobjekte

Die Datenverarbeitung in Azure Digital Twins umfasst das Definieren von drei Objekten: Matcher, benutzerdefinierte Funktionen und Rollenzuweisungen.

Datenverarbeitungsobjekte in Azure Digital Twins

Matcher (Abgleicher)

Matcher definieren eine Reihe von Bedingungen, mit denen anhand der eingehenden Telemetriedaten eines Sensors bestimmt wird, welche Aktionen ausgeführt werden. In diesen Bedingungen können Eigenschaften des Sensors, des übergeordneten Geräts des Sensors und des übergeordneten Gebäudebereichs des Sensors enthalten sein. Die Bedingungen werden wie im folgenden Beispiel dargestellt als Vergleiche mit einem JSON-Pfad formuliert:

  • Alle Sensoren des Datentyps Temperature, die durch den mit Escapezeichen versehenen Zeichenfolgenwert \"Temperature\" dargestellt werden
  • Die den Wert 01 im Port aufweisen
  • Die zu Geräten gehören, für die der erweiterte Eigenschaftenschlüssel Hersteller auf den mit Escapezeichen versehenen Zeichenfolgenwert \"Contoso\" festgelegt ist
  • Die zu Räumen des Typs gehören, der durch den mit Escapezeichen versehenen Zeichenfolgenwert \"Venue\" angegeben ist
  • Die Nachfolger der übergeordneten SpaceId DE8F06CA-1138-4AD7-89F4-F782CC6F69FD sind
{
  "id": "23535afafd-f39b-46c0-9b0c-0dd3892a1c30",
  "name": "My custom matcher",
  "spaceId": "DE8F06CA-1138-4AD7-89F4-F782CC6F69FD",
  "description": "All sensors of datatype Temperature with 01 in their port that belong to devices with the extended property key Manufacturer set to the value Contoso and that belong to spaces of type Venue that are somewhere below space Id DE8F06CA-1138-4AD7-89F4-F782CC6F69FD",
  "conditions": [
    {
      "id": "43898sg43-e15a-4e9c-abb8-2gw464364",
      "target": "Sensor",
      "path": "$.dataType",
      "value": "\"Temperature\"",
      "comparison": "Equals"
    },
    {
      "id": "wt3th44-e15a-35sg-seg3-235wf3ga463",
      "target": "Sensor",
      "path": "$.port",
      "value": "01",
      "comparison": "Contains"
    },
    {
      "id": "735hs33-e15a-37jj-23532-db901d550af5",
      "target": "SensorDevice",
      "path": "$.properties[?(@.name == 'Manufacturer')].value",
      "value": "\"Contoso\"",
      "comparison": "Equals"
    },
    {
      "id": "222325-e15a-49fg-5744-463643644",
      "target": "SensorSpace",
      "path": "$.type",
      "value": "\"Venue\"",
      "comparison": "Equals"
    }
  ]
}

Wichtig

  • Bei JSON-Pfaden muss die Groß-/Kleinschreibung beachtet werden.
  • Die JSON-Nutzlast ist identisch mit der Nutzlast, die von:
    • /sensors/{id}?includes=properties,types für den Sensor.
    • /devices/{id}?includes=properties,types,sensors,sensorsproperties,sensorstypes für das übergeordnete Gerät des Sensors.
    • /spaces/{id}?includes=properties,types,location,timezone für den übergeordneten Raum des Sensors.
  • Bei den Vergleichen muss die Groß-/Kleinschreibung nicht beachtet werden.

Benutzerdefinierte Funktionen

Eine benutzerdefinierte Funktion ist eine angepasste Funktion, die in einer isolierten Azure Digital Twins-Umgebung ausgeführt wird. Benutzerdefinierte Funktionen haben Zugriff auf die empfangene unformatierte Telemetrienachricht eines Sensors. Benutzerdefinierte Funktionen haben auch Zugriff auf den Raumgraph und den Verteilerdienst. Nachdem die benutzerdefinierte Funktion im Graph registriert wurde, muss ein Matcher (Beschreibung weiter oben) erstellt werden, um anzugeben, wann die Funktion ausgeführt werden soll. Wenn Azure Digital Twins beispielsweise neue Telemetriedaten von einem bestimmten Sensor empfängt, kann die übereinstimmende benutzerdefinierte Funktion einen gleitenden Durchschnitt der letzten Sensormesswerte berechnen.

Benutzerdefinierte Funktionen können in JavaScript geschrieben werden. Hilfsmethoden interagieren mit dem Graphen in der benutzerdefinierten Ausführungsumgebung. Entwickler können benutzerdefinierte Codeausschnitte für Telemetrienachrichten von Sensoren ausführen. Beispiele:

  • Festlegen eines Sensormesswerts direkt im Sensorobjekt im Graphen
  • Ausführen einer Aktion basierend auf verschiedenen Sensormesswerten in einem Raum im Graphen
  • Erstellen einer Benachrichtigung, wenn bestimmte Bedingungen für einen eingehenden Sensormesswert erfüllt sind
  • Hinzufügen von Graphmetadaten zu einem Sensormesswert, bevor eine Benachrichtigung gesendet wird

Wenn Sie weitere Informationen benötigen, lesen Sie Definieren von benutzerdefinierten Funktionen.

Beispiele

Das GitHub-Repository mit dem C#-Beispiel für Digital Twins enthält einige Beispiele für benutzerdefinierte Funktionen:

  • Mit dieser Funktion wird nach Kohlendioxid-, Bewegungs- und Temperaturwerten gesucht, um festzustellen, ob ein Raum verfügbar ist, bei dem diese Werte im zulässigen Bereich liegen. In den Tutorials für Digital Twins wird diese Funktion genauer untersucht.
  • Mit dieser Funktion wird nach Daten von mehreren Bewegungssensoren gesucht und festgestellt, dass der Platz verfügbar ist, wenn von keinem Sensor eine Bewegung erkannt wird. Sie können die im Schnellstart oder den Tutorials verwendete benutzerdefinierte Funktion problemlos ersetzen, indem Sie die Änderungen vornehmen, die im Kommentarabschnitt der Datei genannt sind.

Rollenzuweisung

Die Aktionen einer benutzerdefinierten Funktion unterliegen der rollenbasierten Zugriffssteuerung von Azure Digital Twins, um die Daten im Dienst zu schützen. Mit Rollenzuweisungen wird definiert, welche benutzerdefinierte Funktionen über die erforderlichen Berechtigungen für die Interaktion mit dem Raumgraph und seinen Entitäten verfügen. Eine benutzerdefinierte Funktion kann beispielsweise über die Möglichkeit und Berechtigung verfügen, Diagrammdaten unter einem bestimmten Bereich zu ERSTELLEN, zu LESEN, zu AKTUALISIEREN oder zu LÖSCHEN. Die Zugriffsebene einer benutzerdefinierten Funktion wird überprüft, wenn diese Daten aus dem Graph abrufen möchte oder versucht, eine Aktion auszuführen. Wenn Sie weitere Informationen benötigen, lesen Sie Rollenbasierte Zugriffssteuerung.

Möglicherweise kann ein Matcher eine benutzerdefinierte Funktion auslösen, die über keine Rollenzuweisungen verfügt. In diesem Fall kann die benutzerdefinierte Funktion keine Daten aus dem Graph lesen.

Nächste Schritte