Dela via


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

Det här paketet innehåller en isomorf 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

Stöd för webbläsare

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

Azure Digital Twins stöder för närvarande inte 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. Se det här dokumentet för vägledning.

Viktiga begrepp

Azure Digital Twins

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

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 autentiseringsuppgifter från paketet @azure/identity. Den stöder olika autentiseringsmekanismer och bestämmer lämplig typ av autentiseringsuppgifter baserat på den miljö som den körs i. Mer information om de olika autentiseringsalternativ som readme for @azure/identity du kan använda finns i .

const { DefaultAzureCredential } = require("@azure/identity");
const { DigitalTwinsClient } = require("@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 en lista över modeller till createModels. Här skapar vi bara en modell.

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 använder listModels för att lista alla modeller.

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

Hämta modell

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

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

Inaktivera modell

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

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

Ta bort modell

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

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

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

Skapa 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 det digitala tvillingobjektet.

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

Hämta digital tvilling

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

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

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.

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.

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 av getComponent det digitala tvilling-ID:t och komponentens sökväg.

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

Uppdatera komponenten digital tvilling

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

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, namnet på relationen (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 egenskapen med nyckeln "$targetId" för att ange målet för relationen.

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 lista alla relationer respektive alla inkommande relationer.

const digitalTwinId = "myTwin";
const relationships = serviceClient.listRelationships(digitalTwinId);
for await (const relationship of relationships) {
  console.log(`Relationship: ${relationship}`);
}
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 exemplet nedan. Mer information om filtreringshändelser finns i den här dokumentationen.

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.

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.

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.

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.

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 det digitala tvilling-ID:t, nyttolasten och det unika meddelande-ID:t måste du ange målkomponentsökvägen.

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

Aktivering av loggning kan hjälpa dig att hitta användbar information om fel. Om du vill se en logg över 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:

const { setlogLevel } = require("@azure/logger");

setLogLevel("info");

Mer detaljerade anvisningar om hur du aktiverar loggar finns i @azure-/loggningspaketdokumenten.

Nästa steg

Bidra

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