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
- 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
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 DigitalTwinsClient
behö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
- Ta en titt på exempelkatalogen för detaljerade exempel som visar hur du använder klientbiblioteken.
- Utforska Dokumentationen om Azure Digital Twins
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.
Relaterade projekt
Azure SDK for JavaScript