Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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
- LTS-versioner av Node.js
- De senaste versionerna av Safari, Chrome, Edge och Firefox.
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
- Ta en titt på exempelkatalogen för detaljerade exempel som visar hur du använder klientbiblioteken.
- Utforska Azure Digital Twins-dokumentationen
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.
Relaterade projekt
Azure SDK for JavaScript