Condividi tramite


Elaborazione dati e funzioni definite dall'utente

Importante

È stata rilasciata una nuova versione del servizio Gemelli digitali di Azure. Alla luce delle funzionalità espanse del nuovo servizio, il servizio Gemelli digitali di Azure originale (descritto in questo set di documentazione) è stato ritirato.

Per visualizzare la documentazione per il nuovo servizio, visitare la documentazione attiva di Azure Digital Twins.

Azure Digital Twins offre funzionalità di calcolo avanzate. Gli sviluppatori possono definire ed eseguire funzioni personalizzate sui messaggi di telemetria in ingresso per inviare eventi a endpoint predefiniti.

Flusso di elaborazione dati

Dopo che i dispositivi inviano dati di telemetria a Gemelli digitali di Azure, gli sviluppatori possono elaborare i dati in quattro fasi: convalida, corrispondenza, calcolo e invio.

Flusso di elaborazione dati dei gemelli digitali Azure

  1. La fase di convalida trasforma il messaggio di telemetria in ingresso in un formato di oggetto trasferimento dati comunemente riconosciuto. Questa fase esegue anche la convalida del dispositivo e del sensore.
  2. La fase di corrispondenza trova le funzioni definite dall'utente appropriate da eseguire. I matcher predefiniti trovano le funzioni definite dall'utente in base alle informazioni sul dispositivo, sul sensore e sullo spazio del messaggio di telemetria in ingresso.
  3. La fase di calcolo esegue le funzioni definite dall'utente corrispondenti nella fase precedente. Queste funzioni possono leggere e aggiornare i valori calcolati nei nodi del grafo spaziale e possono generare notifiche personalizzate.
  4. La fase di invio instrada tutte le notifiche personalizzate dalla fase di calcolo agli endpoint definiti nel grafico.

Oggetti di elaborazione dati

L'elaborazione dei dati in Gemelli digitali di Azure consiste nella definizione di tre oggetti: matcher, funzioni definite dall'utente e assegnazioni di ruolo.

Oggetti di elaborazione dati di Gemelli digitali di Azure

Matcher

I matcher definiscono un set di condizioni che valutano le azioni eseguite in base ai dati di telemetria dei sensori in ingresso. Le condizioni per determinare la corrispondenza possono includere proprietà del sensore, del dispositivo padre del sensore e dello spazio padre del sensore. Le condizioni vengono espresse come confronti con un percorso JSON come descritto in questo esempio:

  • Tutti i sensori del tipo di dato Temperature rappresentati dal valore della stringa con escape \"Temperature\"
  • Avendo 01 nel loro porto
  • Che appartengono ai dispositivi con la chiave della proprietà estesa Manufacturer impostata sul valore stringa di escape \"Contoso\"
  • Che appartengono a spazi del tipo specificato dalla stringa di escape \"Venue\"
  • Che sono discendenti di SpaceId padreDE8F06CA-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"
    }
  ]
}

Importante

  • I percorsi JSON fanno distinzione tra maiuscole e minuscole.
  • Il payload JSON è uguale al payload restituito da:
    • /sensors/{id}?includes=properties,types per il sensore.
    • /devices/{id}?includes=properties,types,sensors,sensorsproperties,sensorstypes per il dispositivo padre del sensore.
    • /spaces/{id}?includes=properties,types,location,timezone per lo spazio principale del sensore.
  • I confronti sono insensibili alle maiuscole e minuscole.

Funzioni definite dall'utente

Una funzione definita dall'utente è una funzione personalizzata eseguita in un ambiente isolato di Gemelli digitali di Azure. Le funzioni definite dall'utente hanno accesso al messaggio grezzo di telemetria del sensore al momento della ricezione. Le funzioni definite dall'utente hanno anche accesso al servizio di grafo spaziale e al servizio di dispatcher. Dopo la registrazione della funzione definita dall'utente all'interno di un grafico, è necessario creare un matcher (descritto in precedenza) per specificare quando viene eseguita la funzione. Ad esempio, quando Gemelli digitali di Azure riceve nuovi dati di telemetria da un determinato sensore, la funzione definita dall'utente corrispondente può calcolare una media mobile delle ultime letture dei sensori.

Le funzioni definite dall'utente possono essere scritte in JavaScript. I metodi helper interagiscono con il grafico nell'ambiente di esecuzione definito dall'utente. Gli sviluppatori possono eseguire frammenti di codice personalizzati sui messaggi di telemetria dei sensori. Gli esempi includono:

  • Imposta la lettura del sensore direttamente sull'oggetto sensore nel grafico.
  • Eseguire un'azione in base a letture di sensori diverse all'interno di uno spazio nel grafico.
  • Creare una notifica quando vengono soddisfatte determinate condizioni per la lettura di un sensore in ingresso.
  • Collegare i metadati del grafo alla lettura del sensore prima di inviare una notifica.

Per altre informazioni, vedere Come usare le funzioni definite dall'utente.

Esempi

Il repository GitHub per l'esempio C# di Gemelli digitali contiene alcuni esempi delle funzioni definite dall'utente:

  • Questa funzione cerca i valori di anidride carbonica, movimento e temperatura per determinare se una stanza è disponibile con questi valori nell'intervallo. Le esercitazioni per Gemelli digitali esplorano questa funzione in altri dettagli.
  • Questa funzione cerca i dati di più sensori di movimento e determina che lo spazio è disponibile se nessuno di essi rileva alcun movimento. È possibile sostituire facilmente la funzione definita dall'utente usata nella guida introduttiva o nelle esercitazioni apportando le modifiche indicate nella sezione dei commenti del file.

Assegnazione di ruolo

Le azioni di una funzione definita dall'utente sono soggette al controllo degli accessi in base al ruolo di Gemelli digitali di Azure per proteggere i dati all'interno del servizio. Le assegnazioni di ruolo definiscono le funzioni definite dall'utente con le autorizzazioni appropriate per interagire con il grafico spaziale e le relative entità. Ad esempio, una funzione definita dall'utente potrebbe avere la possibilità e l'autorizzazione per CREARE, LEGGERE, AGGIORNARe o ELIMINARE i dati del grafo in un determinato spazio. Il livello di accesso di una funzione definita dall'utente viene controllato quando la funzione definita dall'utente chiede al grafico i dati o tenta un'azione. Per altre informazioni, vedere Controllo degli accessi in base al ruolo.

È possibile che un matcher attivi una funzione definita dall'utente senza assegnazioni di ruolo. In questo caso, la funzione definita dall'utente non riesce a leggere i dati dal grafico.

Passaggi successivi