Dela via


Azure Azure Digital Twins Core-klientbibliotek för JavaScript – version 2.0.0

Det här paketet innehåller en isomorfisk SDK för Azure Digital Twins API för att ge åtkomst till Azure Digital Twins-tjänsten för hantering av tvillingar, modeller, relationer osv.

Komma igång

Miljöer som stöds för närvarande

Mer information finns i vår supportprincip.

Förutsättningar

Installera @azure/digital-twins-core-paketet

Installera Digital Twins Core-klientbiblioteket för JavaScript med npm:

npm install @azure/digital-twins-core

Webbläsarstöd

JavaScript-paket

Om du vill använda det här klientbiblioteket i webbläsaren måste du först använda en bundler. Mer information om hur du gör detta finns i vår paketeringsdokumentation.

CORS (Cross-Origin Resource Sharing)

Azure Digital Twins har för närvarande inte stöd för resursdelning mellan ursprung (CORS). Därför kan det här biblioteket inte användas för att göra direkta anrop till malltjänsten från en webbläsare. Mer information finns i det här dokumentet.

Viktiga begrepp

Azure Digital Twins (Azure Digitala Tvillingar)

Azure Digital Twins är en Azure IoT-tjänst som skapar omfattande modeller av den fysiska miljön. Den kan skapa diagram med rumslig intelligens för att modellera relationer och interaktioner mellan personer, utrymmen och enheter. Du kan lära dig mer om Azure Digital Twins genom att gå till Azure Digital Twins-dokumentationen.

DigitalTwinsClient

DigitalTwinsClient är det klientobjekt som användare av det här biblioteket använder för att hantera sin Azure Digital Twins instans.

Exempel

Skapa DigitalTwinsClient

Om du vill skapa en ny DigitalTwinsClientbehöver du slutpunkten till en Azure Digital Twins-instans och autentiseringsuppgifter. Här använder DefaultAzureCredential vi för referenser från paketet @azure/identity. Den stöder olika autentiseringsmekanismer och avgör lämplig typ av autentiseringsuppgifter baserat på den miljö som den körs i. Mer information om de olika autentiseringsalternativ som du kan använda finns i den readme for @azure/identity .

import { DefaultAzureCredential } from "@azure/identity";
import { DigitalTwinsClient } from "@azure/digital-twins-core";

const url = "<URL to Azure Digital Twins instance>";
const credential = new DefaultAzureCredential();
const serviceClient = new DigitalTwinsClient(url, credential);

Skapa, lista, hämta, inaktivera och ta bort modeller

Skapa modeller

För att skapa modeller skickar vi in en lista med modeller till createModels. Här skapar vi bara en modell.

import { DefaultAzureCredential } from "@azure/identity";
import { DigitalTwinsClient } from "@azure/digital-twins-core";

const url = "<URL to Azure Digital Twins instance>";
const credential = new DefaultAzureCredential();
const serviceClient = new DigitalTwinsClient(url, credential);

const myComponent = {
  "@id": "dtmi:my_component;1",
  "@type": "Interface",
  "@context": "dtmi:dtdl:context;2",
  displayName: "Component1",
  contents: [
    {
      "@type": "Property",
      name: "ComponentProp1",
      schema: "string",
    },
  ],
};

const models = await serviceClient.createModels([myComponent]);

Lista modeller

Vi brukar listModels lista alla modeller.

import { DefaultAzureCredential } from "@azure/identity";
import { DigitalTwinsClient } from "@azure/digital-twins-core";

const url = "<URL to Azure Digital Twins instance>";
const credential = new DefaultAzureCredential();
const serviceClient = new DigitalTwinsClient(url, credential);

const models = serviceClient.listModels();
for await (const model of models) {
  console.log(`Model ID: ${model.id}`);
}

Hämta modell

Vi kan få en specifik modell med hjälp av getModel modell-ID:t.

import { DefaultAzureCredential } from "@azure/identity";
import { DigitalTwinsClient } from "@azure/digital-twins-core";

const url = "<URL to Azure Digital Twins instance>";
const credential = new DefaultAzureCredential();
const serviceClient = new DigitalTwinsClient(url, credential);

const model = await serviceClient.getModel("<model ID>");

Modell för avveckling

Vi kan inaktivera en modell med hjälp av decomissionModel modell-ID:t.

import { DefaultAzureCredential } from "@azure/identity";
import { DigitalTwinsClient } from "@azure/digital-twins-core";

const url = "<URL to Azure Digital Twins instance>";
const credential = new DefaultAzureCredential();
const serviceClient = new DigitalTwinsClient(url, credential);

await serviceClient.decomissionModel("<model ID>");

Ta bort modell

Vi kan ta bort en modell med hjälp av deleteModel modell-ID:t.

import { DefaultAzureCredential } from "@azure/identity";
import { DigitalTwinsClient } from "@azure/digital-twins-core";

const url = "<URL to Azure Digital Twins instance>";
const credential = new DefaultAzureCredential();
const serviceClient = new DigitalTwinsClient(url, credential);

await serviceClient.deleteModel("<model ID>");

Skapa, hämta, fråga och ta bort digitala tvillingar

Skapa en digital tvilling

Om du vill skapa en tvilling måste du ange ett ID för den digitala tvillingen och en JSON-sträng som innehåller den digitala tvillingen.

import { DefaultAzureCredential } from "@azure/identity";
import { DigitalTwinsClient } from "@azure/digital-twins-core";

const url = "<URL to Azure Digital Twins instance>";
const credential = new DefaultAzureCredential();
const serviceClient = new DigitalTwinsClient(url, credential);

const digitalTwinId = "myTwin";
const newTwin = "<JSON containing the digitalTwin object>";
const createdTwin = await serviceClient.upsertDigitalTwin(digitalTwinId, newTwin);

Skaffa en digital tvilling

Vi kan få en digital tvilling med hjälp av getDigitalTwin ID:t för den digitala tvillingen.

import { DefaultAzureCredential } from "@azure/identity";
import { DigitalTwinsClient } from "@azure/digital-twins-core";

const url = "<URL to Azure Digital Twins instance>";
const credential = new DefaultAzureCredential();
const serviceClient = new DigitalTwinsClient(url, credential);

const digitalTwinId = "myTwin";
const twin = await serviceClient.getDigitalTwin(digitalTwinId);
console.log(`DigitalTwin's etag: ${twin.etag}`);
console.log(`DigitalTwin: ${twin}`);

Fråga digitala tvillingar

Fråga Azure Digital Twins-instansen efter digitala tvillingar med hjälp av Azure Digital Twins-frågespråket. Här är ett exempel på hur du frågar efter digitala tvillingar och hur du itererar över resultaten.

import { DefaultAzureCredential } from "@azure/identity";
import { DigitalTwinsClient } from "@azure/digital-twins-core";

const url = "<URL to Azure Digital Twins instance>";
const credential = new DefaultAzureCredential();
const serviceClient = new DigitalTwinsClient(url, credential);

const query = "SELECT * FROM digitaltwins";
const queryResult = serviceClient.queryTwins(query);
for await (const item of queryResult) {
  console.log(`DigitalTwin: ${item}`);
}

Ta bort digital tvilling

Vi kan ta bort en digital tvilling med hjälp av deleteDigitalTwin ID:t för den digitala tvillingen.

import { DefaultAzureCredential } from "@azure/identity";
import { DigitalTwinsClient } from "@azure/digital-twins-core";

const url = "<URL to Azure Digital Twins instance>";
const credential = new DefaultAzureCredential();
const serviceClient = new DigitalTwinsClient(url, credential);

const digitalTwinId = "myTwin";
await serviceClient.deleteDigitalTwin(digitalTwinId);

Hämta och uppdatera komponenter för digitala tvillingar

Hämta komponent för digital tvilling

Vi kan hämta en digital tvillingkomponent med hjälp getComponent av det digitala tvilling-ID:t och komponentens sökväg.

import { DefaultAzureCredential } from "@azure/identity";
import { DigitalTwinsClient } from "@azure/digital-twins-core";

const url = "<URL to Azure Digital Twins instance>";
const credential = new DefaultAzureCredential();
const serviceClient = new DigitalTwinsClient(url, credential);

const digitalTwinId = "myTwin";
const componentPath = "Component1";
const component = await serviceClient.getComponent(digitalTwinId, componentPath);
console.log(`Component: ${component}`);

Uppdatera komponent för digital tvilling

Om du vill uppdatera en komponent för en digital tvilling (d.v.s. ersätta, ta bort eller lägga till en komponentegenskap eller underegenskap i en digital tvilling) måste du ange ett ID för en digital tvilling, en komponentsökväg och en lista över korrigeringsobjekt med egenskaperna op och .path Värdet för op är "ersätt", "ta bort" eller "lägg till" och värdet path för är sökvägen till den digitala tvillingkomponenten som uppdateras. För åtgärderna value "ersätt" och "lägg till" ska egenskapen inkluderas med det önskade värdet för komponentegenskapen.

import { DefaultAzureCredential } from "@azure/identity";
import { DigitalTwinsClient } from "@azure/digital-twins-core";

const url = "<URL to Azure Digital Twins instance>";
const credential = new DefaultAzureCredential();
const serviceClient = new DigitalTwinsClient(url, credential);

const digitalTwinId = "myTwin";
const componentPath = "Component1";
const patch = {
  op: "replace",
  path: "/ComponentProp1",
  value: "value2",
};
const updateComponentResponse = await serviceClient.updateComponent(digitalTwinId, componentPath, [
  patch,
]);

Skapa och lista relationer med digitala tvillingar

Skapa relationer med digitala tvillingar

upsertRelationship skapar en relation på en digital tvilling som tillhandahålls med ID för en digital tvilling, namn på relation (i det här fallet "har"), ID för en relation (i det här fallet "BuildingHasFloor") och objektet som representerar relationen som ska skapas. Objektet måste innehålla en egenskap med nyckeln "$targetId" för att ange målet för relationen.

import { DefaultAzureCredential } from "@azure/identity";
import { DigitalTwinsClient } from "@azure/digital-twins-core";

const url = "<URL to Azure Digital Twins instance>";
const credential = new DefaultAzureCredential();
const serviceClient = new DigitalTwinsClient(url, credential);

const relationship = {
  $relationshipId: "BuildingHasFloor",
  $sourceId: "BuildingTwin",
  $relationshipName: "has",
  $targetId: "FloorTwin",
  isAccessRestricted: false,
};

await serviceClient.upsertRelationship(
  relationship["$sourceId"],
  relationship["$relationshipId"],
  relationship,
);

Visa en lista över relationer med digitala tvillingar

För en digital tvilling listRelationships och listIncomingRelationships visa en lista över alla relationer och alla inkommande relationer.

import { DefaultAzureCredential } from "@azure/identity";
import { DigitalTwinsClient } from "@azure/digital-twins-core";

const url = "<URL to Azure Digital Twins instance>";
const credential = new DefaultAzureCredential();
const serviceClient = new DigitalTwinsClient(url, credential);

const digitalTwinId = "myTwin";
const relationships = serviceClient.listRelationships(digitalTwinId);
for await (const relationship of relationships) {
  console.log(`Relationship: ${relationship}`);
}
import { DefaultAzureCredential } from "@azure/identity";
import { DigitalTwinsClient } from "@azure/digital-twins-core";

const url = "<URL to Azure Digital Twins instance>";
const credential = new DefaultAzureCredential();
const serviceClient = new DigitalTwinsClient(url, credential);

const digitalTwinId = "myTwin";
const incomingRelationships = serviceClient.listIncomingRelationships(digitalTwinId);
for await (const incomingRelationship of incomingRelationships) {
  console.log(`Relationship: ${incomingRelationship}`);
}

Skapa, hämta, lista och ta bort händelsevägar

Skapa händelseväg

Om du vill skapa en händelseväg anger du ett ID för en händelseväg (i det här fallet "myEventRouteId") och händelsevägsdata som innehåller slutpunkten och det valfria filtret som i exemplet nedan. Mer information om hur du filtrerar händelser finns i den här dokumentationen.

import { DefaultAzureCredential } from "@azure/identity";
import { DigitalTwinsClient } from "@azure/digital-twins-core";

const url = "<URL to Azure Digital Twins instance>";
const credential = new DefaultAzureCredential();
const serviceClient = new DigitalTwinsClient(url, credential);

const eventHubEndpointName = "myEventHubEndpointName";
const eventRouteId = "myEventRouteId";
const eventFilter =
  "$eventType = 'DigitalTwinTelemetryMessages' or $eventType = 'DigitalTwinLifecycleNotification'";
await serviceClient.upsertEventRoute(eventRouteId, eventHubEndpointName, eventFilter);

Hämta händelseväg

Vi kan hämta en händelseväg med hjälp av getEventRoute händelsevägs-ID:t.

import { DefaultAzureCredential } from "@azure/identity";
import { DigitalTwinsClient } from "@azure/digital-twins-core";

const url = "<URL to Azure Digital Twins instance>";
const credential = new DefaultAzureCredential();
const serviceClient = new DigitalTwinsClient(url, credential);

const eventRouteId = "myEventRouteId";
const eventRoute = serviceClient.getEventRoute(eventRouteId);
console.log(`EventRoute: ${eventRoute}`);

Lista händelsevägar

Vi kan lista händelsevägar med hjälp av listEventRoutes.

import { DefaultAzureCredential } from "@azure/identity";
import { DigitalTwinsClient } from "@azure/digital-twins-core";

const url = "<URL to Azure Digital Twins instance>";
const credential = new DefaultAzureCredential();
const serviceClient = new DigitalTwinsClient(url, credential);

const eventRoutes = serviceClient.listEventRoutes();
for await (const eventRoute of eventRoutes) {
  console.log(`EventRoute: ${eventRoute}`);
}

Ta bort händelseväg

Vi kan ta bort en händelseväg med hjälp av deleteEventRoute händelsevägs-ID:t.

import { DefaultAzureCredential } from "@azure/identity";
import { DigitalTwinsClient } from "@azure/digital-twins-core";

const url = "<URL to Azure Digital Twins instance>";
const credential = new DefaultAzureCredential();
const serviceClient = new DigitalTwinsClient(url, credential);

const eventRouteId = "myEventRouteId";
await serviceClient.deleteEventRoute(eventRouteId);

Publicera telemetrimeddelanden för en digital tvilling

Om du vill publicera ett telemetrimeddelande för en digital tvilling måste du ange ID:t för den digitala tvillingen, nyttolasten och ett unikt ID för meddelandet.

import { DefaultAzureCredential } from "@azure/identity";
import { DigitalTwinsClient } from "@azure/digital-twins-core";

const url = "<URL to Azure Digital Twins instance>";
const credential = new DefaultAzureCredential();
const serviceClient = new DigitalTwinsClient(url, credential);

const digitalTwinId = "<digital twin ID>";
const telemetryPayload = { Telemetry1: 5 };
const response = await serviceClient.publishTelemetry(
  digitalTwinId,
  telemetryPayload,
  "<unique message ID>",
);

Du kan också publicera ett telemetrimeddelande för en specifik komponent i en digital tvilling. Förutom ID:t för den digitala tvillingen, nyttolasten och det unika meddelande-ID:t måste du ange sökvägen till målkomponenten.

import { DefaultAzureCredential } from "@azure/identity";
import { DigitalTwinsClient } from "@azure/digital-twins-core";

const url = "<URL to Azure Digital Twins instance>";
const credential = new DefaultAzureCredential();
const serviceClient = new DigitalTwinsClient(url, credential);

const digitalTwinId = "<digital twin ID>";
const componentPath = "<component path>";
const telemetryPayload = { Telemetry1: 5 };
const response = await serviceClient.publishComponentTelemetry(
  digitalTwinId,
  componentPath,
  telemetryPayload,
  "<unique message ID>",
);

Ytterligare exempel

Ytterligare exempel finns i exempelkatalogen.

Felsökning

Loggning / Skogsavverkning

Aktivering av loggning kan hjälpa dig att hitta användbar information om fel. Om du vill se en logg med HTTP-begäranden och svar anger du AZURE_LOG_LEVEL miljövariabeln till info. Du kan också aktivera loggning vid körning genom att anropa setLogLevel i @azure/logger:

import { setLogLevel } from "@azure/logger";

setLogLevel("info");

Mer detaljerade anvisningar om hur du aktiverar loggar finns i dokument för @azure/logger-paket.

Nästa steg

Bidrag

Om du vill bidra till det här biblioteket kan du läsa bidragsguide för att lära dig mer om hur du skapar och testar koden.