Bagikan melalui


Pustaka klien Azure Digital Twins Core untuk JavaScript - versi 1.1.0

Paket ini berisi SDK isomorfik untuk Azure Digital Twins API untuk menyediakan akses ke layanan Azure Digital Twins untuk mengelola kembar, model, hubungan, dll.

Memulai

Lingkungan yang didukung saat ini

Lihat kebijakan dukungan kami untuk detail selengkapnya.

Prasyarat

Pasang paket @azure/digital-twins-core

Instal pustaka klien Digital Twins Core untuk JavaScript dengan npm:

npm install @azure/digital-twins-core

Dukungan browser

Bundel JavaScript

Untuk menggunakan pustaka klien ini di browser, pertama-tama Anda perlu menggunakan bunder. Untuk detail tentang cara melakukan ini, silakan lihat dokumentasi bundling kami.

CORS

Azure Digital Twins saat ini tidak mendukung Berbagi Sumber Daya Lintas Asal (CORS) . Akibatnya, pustaka ini tidak dapat digunakan untuk melakukan panggilan langsung ke layanan templat dari browser. Silakan lihat dokumen ini untuk panduan.

Konsep utama

Azure Digital Twins

Azure Digital Twins adalah layanan Azure IoT yang menciptakan model lingkungan fisik yang komprehensif. Ini dapat membuat grafik kecerdasan spasial untuk memodelkan hubungan dan interaksi antara orang, spasi, dan perangkat. Anda dapat mempelajari selengkapnya tentang Azure Digital Twins dengan mengunjungi Dokumentasi Azure Digital Twins.

DigitalTwinsClient

DigitalTwinsClient adalah objek klien yang digunakan pengguna pustaka ini untuk mengelola instans Azure Digital Twins mereka.

Contoh

Membuat DigitalTwinsClient

Untuk membuat baru DigitalTwinsClient, Anda memerlukan titik akhir ke instans dan kredensial Azure Digital Twins. Di sini, kami menggunakan DefaultAzureCredential untuk kredensial dari paket @azure/identity. Ini mendukung mekanisme autentikasi yang berbeda dan menentukan jenis kredensial yang sesuai berdasarkan lingkungan tempatnya dijalankan. readme for @azure/identity Lihat untuk informasi selengkapnya tentang berbagai opsi autentikasi yang dapat Anda gunakan.

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);

Membuat, mencantumkan, mendapatkan, menonaktifkan, dan menghapus model

Membuat model

Untuk membuat model, kami meneruskan daftar model ke createModels. Di sini, kami hanya membuat satu model.

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]);

Mencantumkan model

Kami menggunakan listModels untuk mencantumkan semua model.

const models = await serviceClient.listModels();
for await (const model of models) {
  console.log(`Model ID: ${model.id}`);
}

Dapatkan model

Kita bisa mendapatkan model tertentu menggunakan getModel dengan ID model.

const model = await serviceClient.getModel("<model ID>");

Model penonaktifan

Kita dapat menonaktifkan model menggunakan decomissionModel dengan ID model.

await serviceClient.decomissionModel("<model ID>");

Menghapus model

Kita dapat menghapus model menggunakan deleteModel dengan ID model.

await serviceClient.deleteModel("<model ID>");

Membuat, mendapatkan, mengkueri, dan menghapus kembar digital

Membuat kembar digital

Untuk membuat kembar, Anda harus memberikan ID untuk kembar digital dan string JSON yang berisi objek kembar digital.

const digitalTwinId = "myTwin";
const newTwin = "<JSON containing the digitalTwin object>";
const createdTwin = await serviceClient.upsertDigitalTwin(digitalTwinId, newTwin);

Dapatkan kembar digital

Kita bisa mendapatkan kembar digital menggunakan getDigitalTwin dengan ID kembar digital.

const digitalTwinId = "myTwin";
const twin = await serviceClient.getDigitalTwin(digitalTwinId);
console.log(`DigitalTwin's etag: ${twin.eTag}`);
console.log(`DigitalTwin: ${twin.body}`);

Kueri kembar digital

Kueri instans Azure Digital Twins untuk kembar digital menggunakan bahasa kueri Azure Digital Twins. Berikut adalah contoh cara mengkueri kembar digital dan cara melakukan iterasi atas hasilnya.

const query = "SELECT * FROM digitaltwins";
const queryResult = serviceClient.queryTwins(query);
for await (const item of queryResult) {
  console.log(`DigitalTwin: ${item}`);
}

Menghapus kembar digital

Kita dapat menghapus kembar digital menggunakan deleteDigitalTwin dengan ID kembar digital.

const digitalTwinId = "myTwin";
await serviceClient.deleteDigitalTwin(digitalTwinId);

Mendapatkan dan memperbarui komponen kembar digital

Mendapatkan komponen kembar digital

Kita bisa mendapatkan komponen kembar digital menggunakan getComponent dengan ID kembar digital dan jalur komponen.

const digitalTwinId = "myTwin";
const componentPath = "Component1";
const component = await serviceClient.getComponent(digitalTwinId, componentPath);
console.log(`Component: ${component}`);

Memperbarui komponen kembar digital

Untuk memperbarui komponen kembar digital (yaitu, mengganti, menghapus, atau menambahkan properti komponen atau sub-properti dalam kembar digital), Anda perlu menyediakan ID kembar digital, jalur komponen, dan daftar objek patch dengan properti op dan path. Nilainya op adalah "replace", "remove", atau "add", dan nilainya path adalah jalur ke komponen kembar digital yang sedang diperbarui. Untuk operasi "ganti" dan "tambahkan", value properti harus disertakan dengan nilai properti komponen yang Anda inginkan.

const digitalTwinId = "myTwin";
const componentPath = "Component1";
const patch = {
  op: "replace",
  path: "/ComponentProp1",
  value: "value2"
};
const updateComponentResponse = await serviceClient.updateComponent(digitalTwinId, componentPath, [
  patch
]);

Membuat dan mencantumkan hubungan kembar digital

Membuat hubungan kembar digital

upsertRelationship menciptakan hubungan pada kembar digital yang disediakan dengan ID kembar digital, nama hubungan (dalam hal ini, "has"), ID hubungan (dalam hal ini "BuildingHasFloor") dan objek yang mewakili hubungan yang akan dibuat. Objek harus berisi properti dengan kunci "$targetId" untuk menentukan target hubungan.

const relationship = {
  $relationshipId: "BuildingHasFloor",
  $sourceId: "BuildingTwin",
  $relationshipName: "has",
  $targetId: "FloorTwin",
  isAccessRestricted: false
};

await serviceClient.upsertRelationship(
  relationship["$sourceId"],
  relationship["$relationshipId"],
  relationship
);

Mencantumkan hubungan kembar digital

Untuk kembar digital, listRelationships dan listIncomingRelationships mencantumkan semua hubungan dan semua hubungan masuk, masing-masing.

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}`);
}

Membuat, mendapatkan, mencantumkan, dan menghapus rute peristiwa

Membuat rute peristiwa

Untuk membuat rute peristiwa, berikan ID rute peristiwa (dalam hal ini, "myEventRouteId") dan data rute peristiwa yang berisi titik akhir dan filter opsional seperti contoh yang ditunjukkan di bawah ini. Untuk informasi selengkapnya tentang memfilter peristiwa, lihat dokumentasi ini.

const eventHubEndpointName = "myEventHubEndpointName";
const eventRouteId = "myEventRouteId";
const eventFilter =
  "$eventType = 'DigitalTwinTelemetryMessages' or $eventType = 'DigitalTwinLifecycleNotification'";
await serviceClient.upsertEventRoute(eventRouteId, eventHubEndpointName, eventFilter);

Mendapatkan rute peristiwa

Kita bisa mendapatkan rute peristiwa menggunakan getEventRoute dengan ID rute peristiwa.

const eventRouteId = "myEventRouteId";
const eventRoute = serviceClient.getEventRoute(eventRouteId);
console.log(`EventRoute: ${eventRoute}`);

Mencantumkan rute peristiwa

Kita dapat mencantumkan rute peristiwa menggunakan listEventRoutes.

const eventRoutes = serviceClient.listEventRoutes();
for await (const eventRoute of eventRoutes) {
  console.log(`EventRoute: ${eventRoute}`);
}

Menghapus rute peristiwa

Kita dapat menghapus rute peristiwa menggunakan deleteEventRoute dengan ID rute peristiwa.

const eventRouteId = "myEventRouteId";
await serviceClient.deleteEventRoute(eventRouteId);

Menerbitkan pesan telemetri untuk kembar digital

Untuk menerbitkan pesan telemetri untuk kembar digital, Anda perlu memberikan ID kembar digital, payload, dan ID unik untuk pesan tersebut.

const digitalTwinId = "<digital twin ID>";
const telemetryPayload = '{"Telemetry1": 5}';
const response = await serviceClient.publishTelemetry(
  digitalTwinId,
  telemetryPayload,
  "<unique message ID>"
);

Anda juga dapat menerbitkan pesan telemetri untuk komponen tertentu dalam kembar digital. Selain ID kembar digital, payload, dan ID pesan unik, Anda perlu menentukan jalur komponen target.

const digitalTwinId = "<digital twin ID>";
const componentPath = "<component path>";
const telemetryPayload = '{"Telemetry1": 5}';
const response = await serviceClient.publishComponentTelemetry(
  digitalTwinId,
  componentPath,
  telemetryPayload,
  "<unique message ID>"
);

Contoh tambahan

Contoh tambahan dapat ditemukan di direktori sampel.

Pemecahan Masalah

Pencatatan

Mengaktifkan pengelogan dapat membantu menemukan informasi yang berguna tentang kegagalan. Untuk melihat log permintaan dan respons HTTP, atur variabel lingkungan AZURE_LOG_LEVEL ke info. Atau, pengelogan dapat diaktifkan saat runtime dengan memanggil setLogLevel di @azure/logger:

const { setlogLevel } = require("@azure/logger");

setLogLevel("info");

Untuk instruksi lebih rinci tentang cara mengaktifkan log, Anda dapat melihat dokumen paket @azure/pencatat.

Langkah berikutnya

  • Lihat direktori sampel untuk contoh terperinci yang menunjukkan cara menggunakan pustaka klien.
  • Menjelajahi dokumentasi Azure Digital Twins

Berkontribusi

Jika Anda ingin berkontribusi pada pustaka ini, baca panduan berkontribusi untuk mempelajari selengkapnya tentang cara membuat dan menguji kode.