Gegevensverwerking en door gebruikers gedefinieerde functies

Belangrijk

Er is een nieuwe versie van de Azure Digital Twins-service uitgebracht. In het licht van de uitgebreide mogelijkheden van de nieuwe service is de oorspronkelijke Azure Digital Twins-service (beschreven in deze documentatieset) buiten gebruik gesteld.

Als u de documentatie voor de nieuwe service wilt bekijken, gaat u naar de actieve Documentatie van Azure Digital Twins.

Azure Digital Twins biedt geavanceerde rekenmogelijkheden. Ontwikkelaars kunnen aangepaste functies definiëren en uitvoeren op binnenkomende telemetrieberichten om gebeurtenissen naar vooraf gedefinieerde eindpunten te verzenden.

Gegevensverwerkingsstroom

Nadat apparaten telemetriegegevens naar Azure Digital Twins hebben verzonden, kunnen ontwikkelaars gegevens in vier fasen verwerken: valideren, vergelijken, berekenen en verzenden.

Azure Digital Twins-gegevensverwerkingsstroom

  1. De validatiefase transformeert het binnenkomende telemetriebericht naar een algemeen begrepen objectindeling voor gegevensoverdracht . Deze fase voert ook apparaat- en sensorvalidatie uit.
  2. In de overeenkomstfase worden de juiste door de gebruiker gedefinieerde functies gevonden die moeten worden uitgevoerd. Vooraf gedefinieerde matchers vinden de door de gebruiker gedefinieerde functies op basis van de apparaat-, sensor- en ruimtegegevens uit het binnenkomende telemetriebericht.
  3. In de rekenfase worden de door de gebruiker gedefinieerde functies uitgevoerd die overeenkomen met de vorige fase. Deze functies kunnen berekende waarden lezen en bijwerken op ruimtelijke grafiekknooppunten en kunnen aangepaste meldingen verzenden.
  4. De verzendfase stuurt eventuele aangepaste meldingen van de rekenfase naar eindpunten die in de grafiek zijn gedefinieerd.

Gegevensverwerkingsobjecten

Gegevensverwerking in Azure Digital Twins bestaat uit het definiëren van drie objecten: matchers, door de gebruiker gedefinieerde functies en roltoewijzingen.

Azure Digital Twins-gegevensverwerkingsobjecten

Matchers

Matchers definiëren een set voorwaarden die evalueren welke acties worden uitgevoerd op basis van binnenkomende sensortelemetrie. Voorwaarden om de overeenkomst te bepalen, kunnen eigenschappen van de sensor, het bovenliggende apparaat van de sensor en de bovenliggende ruimte van de sensor bevatten. De voorwaarden worden uitgedrukt als vergelijkingen met een JSON-pad , zoals beschreven in dit voorbeeld:

  • Alle sensoren van de temperatuur van het gegevenstype die worden vertegenwoordigd door de waarde van de escape-tekenreeks \"Temperature\"
  • In 01 hun poort
  • Welke deel uitmaken van apparaten met de uitgebreide eigenschapssleutel Fabrikant ingesteld op de waarde van de escape-tekenreeks \"Contoso\"
  • Dit behoort tot spaties van het type dat is opgegeven door de escape-tekenreeks \"Venue\"
  • Dit zijn afstammelingen van de bovenliggende SpaceIdDE8F06CA-1138-4AD7-89F4-F782CC6F69FD
{
  "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"
    }
  ]
}

Belangrijk

  • JSON-paden zijn hoofdlettergevoelig.
  • De JSON-nettolading is hetzelfde als de nettolading die wordt geretourneerd door:
    • /sensors/{id}?includes=properties,types voor de sensor.
    • /devices/{id}?includes=properties,types,sensors,sensorsproperties,sensorstypes voor het bovenliggende apparaat van de sensor.
    • /spaces/{id}?includes=properties,types,location,timezone voor de bovenliggende ruimte van de sensor.
  • De vergelijkingen zijn niet hoofdlettergevoelig.

Door de gebruiker gedefinieerde functies

Een door de gebruiker gedefinieerde functie is een aangepaste functie die wordt uitgevoerd in een geïsoleerde Azure Digital Twins-omgeving. Door de gebruiker gedefinieerde functies hebben toegang tot onbewerkte sensortelemetrieberichten wanneer deze worden ontvangen. Door de gebruiker gedefinieerde functies hebben ook toegang tot de ruimtelijke grafiek en dispatcherservice. Nadat de door de gebruiker gedefinieerde functie is geregistreerd in een grafiek, moet er een matcher ( hierboven beschreven) worden gemaakt om op te geven wanneer de functie wordt uitgevoerd. Wanneer Azure Digital Twins bijvoorbeeld nieuwe telemetrie van een bepaalde sensor ontvangt, kan de overeenkomende door de gebruiker gedefinieerde functie een zwevend gemiddelde berekenen van de laatste paar sensormetingen.

Door de gebruiker gedefinieerde functies kunnen worden geschreven in JavaScript. Helpermethoden communiceren met de grafiek in de door de gebruiker gedefinieerde uitvoeringsomgeving. Ontwikkelaars kunnen aangepaste codefragmenten uitvoeren op sensortelemetrieberichten. Enkele voorbeelden:

  • Stel de sensorlezing rechtstreeks in op het sensorobject in de grafiek.
  • Voer een actie uit op basis van verschillende sensormetingen binnen een ruimte in de grafiek.
  • Maak een melding wanneer aan bepaalde voorwaarden wordt voldaan voor het lezen van een binnenkomende sensor.
  • Voeg grafiekmetagegevens toe aan de sensorlezing voordat u een melding verzendt.

Lees voor meer informatie het gebruik van door de gebruiker gedefinieerde functies.

Voorbeelden

De GitHub-opslagplaats voor het Digital Twins C#-voorbeeld bevat enkele voorbeelden van de door de gebruiker gedefinieerde functies:

  • Deze functie zoekt naar koolstofdioxide-, bewegings- en temperatuurwaarden om te bepalen of een ruimte beschikbaar is met deze waarden in het bereik. De zelfstudies voor Digital Twins verkennen deze functie in meer informatie.
  • Deze functie zoekt naar gegevens van meerdere bewegingssensoren en bepaalt dat de ruimte beschikbaar is als er geen bewegingen worden gedetecteerd. U kunt de door de gebruiker gedefinieerde functie die in de quickstart of de zelfstudies wordt gebruikt, eenvoudig vervangen door de wijzigingen aan te brengen die worden vermeld in de sectie Opmerkingen van het bestand.

Roltoewijzing

De acties van een door de gebruiker gedefinieerde functie zijn onderworpen aan op rollen gebaseerd toegangsbeheer van Azure Digital Twins om gegevens binnen de service te beveiligen. Roltoewijzingen definiëren welke door de gebruiker gedefinieerde functies de juiste machtigingen hebben om te communiceren met de ruimtelijke grafiek en de bijbehorende entiteiten. Een door de gebruiker gedefinieerde functie kan bijvoorbeeld de mogelijkheid en machtiging hebben om grafiekgegevens te MAKEN, LEZEN, BIJWERKEN of VERWIJDEREN onder een bepaalde ruimte. Het toegangsniveau van een door de gebruiker gedefinieerde functie wordt gecontroleerd wanneer de door de gebruiker gedefinieerde functie de grafiek vraagt voor gegevens of een actie probeert uit te voeren. Lees op rollen gebaseerd toegangsbeheer voor meer informatie.

Het is mogelijk dat een matcher een door de gebruiker gedefinieerde functie activeert die geen roltoewijzingen heeft. In dit geval kan de door de gebruiker gedefinieerde functie geen gegevens uit de grafiek lezen.

Volgende stappen