このパッケージには、ツイン、モデル、リレーションシップなどを管理するための Azure Digital Twins サービスへのアクセスを提供する Azure Digital Twins API のアイソモーフィック SDK が含まれています。
作業の開始
現在サポートされている環境
- Node.js の LTS バージョン
- Safari、Chrome、Edge、Firefox の最新バージョン。
詳細については、サポート ポリシーの を参照してください。
[前提条件]
@azure/digital-twins-core
パッケージをインストールする
JavaScript 用の Digital Twins Core クライアント ライブラリを npm
でインストールします。
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
に渡します。
ここでは、1つのモデルのみを作成します。
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
プロパティをコンポーネント プロパティの目的の値に含める必要があります。
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,
);
デジタルツインの関係を一覧表示する
デジタル ツインの場合、 listRelationships
と listIncomingRelationships
には、それぞれすべてのリレーションシップとすべての受信リレーションシップが一覧表示されます。
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}`);
}
イベントルートの削除
イベントルートを削除するには、 deleteEventRoute
とイベントルート 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 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 パッケージに関するドキュメントを参照してください。
次のステップ
投稿
このライブラリに投稿する場合は、コードをビルドしてテストする方法の詳細については、 投稿ガイド をお読みください。
関連プロジェクト
Azure SDK for JavaScript