이 패키지에는 트윈, 모델, 관계 등을 관리하기 위해 Azure Digital Twins 서비스에 대한 액세스를 제공하는 Azure Digital Twins API용 동형 SDK가 포함되어 있습니다.
시작하기
현재 지원되는 환경
- Node.js의 LTS 버전
- Safari, Chrome, Edge 및 Firefox의 최신 버전입니다.
자세한 내용은 지원 정책 참조하세요.
필수 조건
@azure/digital-twins-core 패키지 설치
다음을 사용하여 npmJavaScript용 Digital Twins Core 클라이언트 라이브러리를 설치합니다.
npm install @azure/digital-twins-core
브라우저 지원
JavaScript 번들
브라우저에서 이 클라이언트 라이브러리를 사용하려면 먼저 번들러를 사용해야 합니다. 이 작업을 수행하는 방법에 대한 자세한 내용은 번들링 설명서참조하세요.
크로스 오리진 리소스 셰어링 (CORS)
Azure Digital Twins는 현재 CORS(원본 간 리소스 공유)를 지원하지 않습니다. 따라서 이 라이브러리를 사용하여 브라우저에서 템플릿 서비스를 직접 호출할 수 없습니다. 지침은 이 문서 참조하세요.
주요 개념
Azure Digital Twins (애저 디지털 트윈즈)
Azure Digital Twins는 물리적 환경의 포괄적인 모델을 만드는 Azure IoT 서비스입니다. 공간 인텔리전스 그래프를 만들어 사람, 공간 및 디바이스 간의 관계 및 상호 작용을 모델링할 수 있습니다. Azure Digital Twins에 대한 자세한 내용은 Azure Digital Twins 설명서를 참조하세요.
DigitalTwinsClient
DigitalTwinsClient 는 이 라이브러리의 사용자가 Azure Digital Twins 인스턴스를 관리하는 데 사용하는 클라이언트 개체입니다.
예시
DigitalTwinsClient 만들기
새 DigitalTwinsClient를 만들려면 Azure Digital Twins 인스턴스 및 자격 증명에 대한 엔드포인트가 필요합니다.
여기에서는 패키지의 @azure/identity자격 증명에 사용합니다DefaultAzureCredential.
다양한 인증 메커니즘을 지원하고 실행 중인 환경에 따라 적절한 자격 증명 유형을 결정합니다.
사용할 수 있는 다양한 인증 옵션에 대한 자세한 내용은 를 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);
모델 생성, 나열, 가져오기, 서비스 해제 및 삭제
모델 만들기
모델을 만들기 위해 모델 createModels목록을 에 전달합니다.
여기서는 하나의 모델만 만듭니다.
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]);
모델 나열
우리는 모든 모델을 나열하는 데 사용합니다 listModels .
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}`);
}
모델 가져오기
모델 ID와 함께 사용하여 특정 모델을 getModel 가져올 수 있습니다.
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>");
서비스 해제 모델
모델 ID를 사용하여 decomissionModel 모델을 해제할 수 있습니다.
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>");
모델 삭제
모델 ID와 함께 사용하여 모델을 deleteModel 삭제할 수 있습니다.
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>");
디지털 트윈 만들기, 가져오기, 쿼리 및 삭제
디지털 트윈 생성
트윈을 만들려면 디지털 트윈에 대한 ID와 디지털 트윈 개체를 포함하는 JSON 문자열을 제공해야 합니다.
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);
디지털 트윈 활용
디지털 트윈 ID를 사용하여 getDigitalTwin 디지털 트윈을 얻을 수 있습니다.
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}`);
디지털 트윈 쿼리
Azure Digital Twins 쿼리 언어를 사용하여 Azure Digital Twins 인스턴스에서 디지털 트윈을 쿼리합니다. 다음은 디지털 트윈을 쿼리하는 방법과 결과를 반복하는 방법의 예입니다.
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}`);
}
디지털 트윈 삭제
디지털 트윈 ID를 사용하여 deleteDigitalTwin 디지털 트윈을 삭제할 수 있습니다.
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);
디지털 트윈 구성 요소 가져오기 및 업데이트
디지털 트윈 구성 요소 가져오기
디지털 트윈 ID와 구성 요소의 경로를 사용하여 getComponent 디지털 트윈 구성 요소를 얻을 수 있습니다.
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}`);
디지털 트윈 구성 요소 업데이트
디지털 트윈 구성 요소를 업데이트하려면(즉, 디지털 트윈 내에서 구성 요소 속성 또는 하위 속성을 교체, 제거 또는 추가) 디지털 트윈 ID, 구성 요소 경로 및 속성 op 및 path가 있는 패치 개체 목록을 제공해야 합니다.
의 op 값은 "replace", "remove" 또는 "add"이고 의 path 값은 업데이트되는 디지털 트윈 구성 요소의 경로입니다.
"replace" 및 "add" 작업의 경우 value 속성은 component 속성의 원하는 값에 포함되어야 합니다.
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,
]);
디지털 트윈 관계 생성 및 나열
디지털 트윈 관계 구축
upsertRelationship 디지털 트윈의 ID, 관계 이름(이 경우 "has"), 관계 ID(이 경우 "BuildingHasFloor") 및 생성할 관계를 나타내는 개체와 함께 제공되는 디지털 트윈에 대한 관계를 생성합니다.
개체에는 관계의 대상을 지정하기 위해 "$targetId" 키가 있는 속성이 포함되어야 합니다.
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,
);
디지털 트윈 관계 나열
디지털 트윈 listRelationshipslistIncomingRelationships 의 경우 모든 관계와 들어오는 모든 관계를 각각 나열합니다.
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}`);
}
이벤트 경로 만들기, 가져오기, 나열 및 삭제
이벤트 경로 만들기
이벤트 경로를 만들려면 이벤트 경로의 ID(이 경우 "myEventRouteId")와 엔드포인트 및 선택적 필터를 포함하는 이벤트 경로 데이터를 아래 예제와 같이 제공합니다. 이벤트 필터링에 대한 자세한 내용은 이 설명서를 참조하세요.
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);
이벤트 경로 가져오기
이벤트 경로 ID를 사용하여 getEventRoute 이벤트 경로를 가져올 수 있습니다.
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}`);
이벤트 경로 나열
를 사용하여 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}`);
}
일정 경로 삭제
이벤트 경로 ID와 함께 사용하여 이벤트 경로를 deleteEventRoute 삭제할 수 있습니다.
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);
디지털 트윈에 대한 텔레메트리 메시지 게시
디지털 트윈에 대한 원격 분석 메시지를 게시하려면 디지털 트윈 ID, 페이로드 및 메시지에 대한 고유 ID를 제공해야 합니다.
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>",
);
디지털 트윈의 특정 구성 요소에 대한 원격 측정 메시지를 게시할 수도 있습니다. 디지털 트윈 ID, 페이로드 및 고유 메시지 ID 외에도 대상 구성 요소 경로를 지정해야 합니다.
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>",
);
추가 예제
추가 예제는 samples 디렉토리에서 찾을 수 있습니다.
문제 해결
로깅 (로그 기록)
로깅을 사용하도록 설정하면 오류에 대한 유용한 정보를 파악하는 데 도움이 될 수 있습니다. HTTP 요청 및 응답 로그를 보려면 AZURE_LOG_LEVEL 환경 변수를 info설정합니다. 또는 setLogLevel@azure/logger 호출하여 런타임에 로깅을 사용하도록 설정할 수 있습니다.
import { setLogLevel } from "@azure/logger";
setLogLevel("info");
로그를 사용하는 방법에 대한 자세한 내용은 @azure/logger package docs를 참조하세요.
다음 단계
기여하기
이 라이브러리에 기여하려면 기여 가이드 읽어 코드를 빌드하고 테스트하는 방법에 대해 자세히 알아보세요.
관련 프로젝트
- Javascript용 Microsoft Azure SDK
Azure SDK for JavaScript