다음을 통해 공유


JavaScript용 Azure Azure Digital Twins Core 클라이언트 라이브러리 - 버전 2.0.0

이 패키지에는 트윈, 모델, 관계 등을 관리하기 위해 Azure Digital Twins 서비스에 대한 액세스를 제공하는 Azure Digital Twins API용 동형 SDK가 포함되어 있습니다.

시작하기

현재 지원되는 환경

자세한 내용은 지원 정책 참조하세요.

필수 조건

@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, 구성 요소 경로 및 속성 oppath가 있는 패치 개체 목록을 제공해야 합니다. 의 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를 참조하세요.

다음 단계

  • 클라이언트 라이브러리를 사용하는 방법을 보여 주는 자세한 예제에 대한 samples 디렉터리를 살펴보세요.
  • Azure Digital Twins 설명서 살펴보기

기여하기

이 라이브러리에 기여하려면 기여 가이드 읽어 코드를 빌드하고 테스트하는 방법에 대해 자세히 알아보세요.

  • Javascript용 Microsoft Azure SDK