Dela via


Databearbetning och användardefinierade funktioner

Viktigt!

En ny version av Azure Digital Twins-tjänsten har släppts. Mot bakgrund av den nya tjänstens utökade funktioner har den ursprungliga Azure Digital Twins-tjänsten (beskrivs i den här dokumentationsuppsättningen) dragits tillbaka.

Om du vill visa dokumentationen för den nya tjänsten går du till den aktiva Dokumentationen om Azure Digital Twins.

Azure Digital Twins erbjuder avancerade beräkningsfunktioner. Utvecklare kan definiera och köra anpassade funktioner mot inkommande telemetrimeddelanden för att skicka händelser till fördefinierade slutpunkter.

Databearbetningsflöde

När enheter har skickat telemetridata till Azure Digital Twins kan utvecklare bearbeta data i fyra faser: validera, matcha, beräkna och skicka.

Databearbetningsflöde för Azure Digital Twins

  1. Verifieringsfasen omvandlar det inkommande telemetrimeddelandet till ett vanligt tolkat objektformat för dataöverföring. Den här fasen kör också enhets- och sensorvalidering.
  2. Matchningsfasen hittar lämpliga användardefinierade funktioner som ska köras. Fördefinierade matchare hittar de användardefinierade funktionerna baserat på enhet, sensor och utrymmesinformation från det inkommande telemetrimeddelandet.
  3. Beräkningsfasen kör de användardefinierade funktionerna som matchades i föregående fas. Dessa funktioner kan läsa och uppdatera beräknade värden på rumsliga grafnoder och kan generera anpassade meddelanden.
  4. Sändningsfasen dirigerar alla anpassade meddelanden från beräkningsfasen till slutpunkter som definierats i diagrammet.

Databearbetningsobjekt

Databearbetning i Azure Digital Twins består av att definiera tre objekt: matchare, användardefinierade funktioner och rolltilldelningar.

Databearbetningsobjekt för Azure Digital Twins

Matchers

Matchare definierar en uppsättning villkor som utvärderar vilka åtgärder som utförs baserat på inkommande sensortelemetri. Villkor för att fastställa matchningen kan innehålla egenskaper från sensorn, sensorns överordnade enhet och sensorns överordnade utrymme. Villkoren uttrycks som jämförelser mot en JSON-sökväg enligt beskrivningen i det här exemplet:

  • Alla sensorer för datatyptemperatur som representeras av det undantagna strängvärdet\"Temperature\"
  • Ha 01 i sin port
  • Som tillhör enheter med den utökade egenskapsnyckeln Tillverkare inställd på det undantagna strängvärdet \"Contoso\"
  • Som tillhör blanksteg av den typ som anges av den undantagna strängen \"Venue\"
  • Som är underordnade till det överordnade SpaceId DE8F06CA-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"
    }
  ]
}

Viktigt!

  • JSON-sökvägar är skiftlägeskänsliga.
  • JSON-nyttolasten är samma som nyttolasten som returneras av:
    • /sensors/{id}?includes=properties,types för sensorn.
    • /devices/{id}?includes=properties,types,sensors,sensorsproperties,sensorstypes för sensorns överordnade enhet.
    • /spaces/{id}?includes=properties,types,location,timezone för sensorns överordnade utrymme.
  • Jämförelserna är skiftlägesokänsliga.

Användardefinierade funktioner

En användardefinierad funktion är en anpassad funktion som körs i en isolerad Azure Digital Twins-miljö. Användardefinierade funktioner har åtkomst till råsensortelemetrimeddelande när det tas emot. Användardefinierade funktioner har också åtkomst till tjänsten spatial graph och dispatcher. När den användardefinierade funktionen har registrerats i en graf måste en matchare (som beskrivs ovan) skapas för att ange när funktionen körs. När Azure Digital Twins till exempel tar emot ny telemetri från en viss sensor kan den matchade användardefinierade funktionen beräkna ett glidande medelvärde för de senaste sensoravläsningarna.

Användardefinierade funktioner kan skrivas i JavaScript. Hjälpmetoder interagerar med diagrammet i den användardefinierade körningsmiljön. Utvecklare kan köra anpassade kodfragment mot sensortelemetrimeddelanden. Exempel:

  • Ställ in sensoravläsningen direkt på sensorobjektet i grafen.
  • Utför en åtgärd baserat på olika sensoravläsningar i ett utrymme i diagrammet.
  • Skapa ett meddelande när vissa villkor uppfylls för inkommande sensoravläsning.
  • Bifoga grafmetadata till sensorläsningen innan du skickar ut ett meddelande.

Mer information finns i Använda användardefinierade funktioner.

Exempel

GitHub-lagringsplatsen för Digital Twins C#-exemplet innehåller några exempel på användardefinierade funktioner:

  • Den här funktionen söker efter koldioxid-, rörelse- och temperaturvärden för att avgöra om ett rum är tillgängligt med dessa värden i intervallet. Självstudierna för Digital Twins utforskar den här funktionen i mer information.
  • Den här funktionen söker efter data från flera rörelsesensorer och fastställer att utrymmet är tillgängligt om ingen av dem identifierar några rörelser. Du kan enkelt ersätta den användardefinierade funktion som används i antingen snabbstarten eller självstudierna genom att göra ändringarna som nämns i kommentarsavsnittet i filen.

Rolltilldelning

En användardefinierad funktions åtgärder omfattas av rollbaserad åtkomstkontroll i Azure Digital Twins för att skydda data i tjänsten. Rolltilldelningar definierar vilka användardefinierade funktioner som har rätt behörighet att interagera med den rumsliga grafen och dess entiteter. En användardefinierad funktion kan till exempel ha möjlighet och behörighet att SKAPA, LÄSA, UPPDATERA eller TA BORT diagramdata under ett visst utrymme. En användardefinierad funktions åtkomstnivå kontrolleras när den användardefinierade funktionen frågar grafen om data eller försöker utföra en åtgärd. Mer information finns i Rollbaserad åtkomstkontroll.

Det är möjligt för en matchare att utlösa en användardefinierad funktion som inte har några rolltilldelningar. I det här fallet kan den användardefinierade funktionen inte läsa några data från diagrammet.

Nästa steg