Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Jembatan perangkat IoT Central adalah solusi sumber terbuka yang menghubungkan cloud IoT lainnya seperti Sigfox, Particle Device Cloud, dan The Things Network ke aplikasi IoT Central Anda. Penghubung perangkat bekerja dengan meneruskan data dari perangkat yang terhubung ke cloud IoT lainnya ke aplikasi IoT Central Anda. Jembatan perangkat hanya meneruskan data ke IoT Central, tidak mengirim perintah atau pembaruan properti dari IoT Central kembali ke perangkat.
Jembatan perangkat memungkinkan Anda menggabungkan kekuatan IoT Central dengan perangkat seperti:
- Perangkat pelacakan aset yang terhubung ke jaringan area luas berdaya rendah Sigfox.
- Perangkat pemantauan kualitas udara di Particle Device Cloud.
- Perangkat pemantauan kelembaban tanah di The Things Network.
Anda dapat menggunakan fitur aplikasi IoT Central seperti aturan dan analitik pada data, membuat alur kerja di Aplikasi Power Automate dan Azure Logic, atau mengekspor data.
Solusi jembatan perangkat menyediakan beberapa sumber daya Azure ke dalam langganan Azure Anda yang bekerja sama untuk mengubah dan meneruskan pesan perangkat ke IoT Central.
Prasyarat
Untuk menyelesaikan langkah-langkah dalam panduan ini, Anda memerlukan:
Langganan Azure aktif. Jika Anda tidak memiliki langganan Azure, buatlah akun gratis sebelum Anda memulai.
Aplikasi IoT Central yang dibuat dari templat aplikasi Kustom . Untuk mempelajari selengkapnya, lihat Membuat aplikasi IoT Central dan Bagaimana cara mendapatkan informasi tentang aplikasi saya?.
Gambaran Umum
Jembatan perangkat IoT Central adalah solusi sumber terbuka di GitHub. Ini menggunakan templat Azure Resource Manager kustom untuk menyebarkan beberapa sumber daya ke langganan Azure Anda, termasuk aplikasi fungsi di Azure Functions.
Aplikasi fungsi adalah bagian inti dari jembatan perangkat. Ini menerima permintaan HTTP POST dari platform IoT lainnya melalui webhook sederhana. Repositori Azure IoT Central Device Bridge menyertakan contoh yang menunjukkan cara menyambungkan cloud Sigfox, Particle, dan The Things Network. Anda dapat memperluas solusi ini untuk terhubung ke cloud IoT kustom Anda jika platform Anda dapat mengirim permintaan HTTP POST ke aplikasi fungsi Anda.
Aplikasi fungsi mengubah data menjadi format yang diterima oleh IoT Central dan meneruskannya menggunakan layanan provisi perangkat dan API klien perangkat:
Jika aplikasi IoT Central Anda mengenali ID perangkat dalam pesan yang diteruskan, telemetri dari perangkat muncul di IoT Central. Jika aplikasi IoT Central Anda tidak mengenali ID perangkat, aplikasi fungsi mencoba mendaftarkan perangkat baru dengan ID perangkat. Perangkat baru muncul sebagai perangkat Yang Tidak Ditetapkan di halaman Perangkat di aplikasi IoT Central Anda. Dari halaman Perangkat , Anda dapat menetapkan perangkat baru ke templat perangkat lalu melihat telemetri.
Mengimplementasikan jembatan perangkat
Untuk mengimplementasikan jembatan perangkat dalam langganan Anda:
Di aplikasi IoT Central Anda, navigasilah ke halaman Grup Koneksi Perangkat dengan Izin>.
Catat Cakupan ID. Anda menggunakan nilai ini saat mengimplementasikan jembatan perangkat.
Di halaman yang sama, buka grup pendaftaran SAS-IoT-Devices . Pada halaman grup SAS-IoT-Devices , salin Kunci primer. Anda menggunakan nilai ini saat mengimplementasikan jembatan perangkat.
Gunakan tombol Sebarkan ke Azure berikut untuk membuka templat Resource Manager kustom yang menyebarkan aplikasi fungsi ke langganan Anda. Gunakan Cakupan ID dan Kunci primer dari langkah sebelumnya:
Setelah penyebaran selesai, Anda perlu menginstal paket npm yang diperlukan fungsi:
Di portal Microsoft Azure, buka aplikasi fungsi yang disebarkan ke langganan Anda. Kemudian, bukaAlat Pengembangan>Konsol. Di konsol, jalankan perintah berikut untuk menginstal paket:
cd IoTCIntegration npm installPerintah ini mungkin memerlukan waktu beberapa menit untuk dijalankan. Anda dapat mengabaikan pesan peringatan dengan aman.
Setelah penginstalan paket selesai, Pilih Mulai Ulang di halaman Gambaran Umum aplikasi fungsi:
Fungsi ini sekarang siap digunakan. Sistem eksternal dapat menggunakan permintaan HTTP POST untuk mengirim data perangkat melalui jembatan perangkat ke aplikasi IoT Central Anda. Untuk mendapatkan URL fungsi, navigasi ke Functions > IoTCIntegration > Code + Test > Get function URL:
Isi pesan yang dikirim ke jembatan perangkat harus memiliki format berikut:
"device": {
"deviceId": "my-cloud-device"
},
"measurements": {
"temp": 20.31,
"pressure": 50,
"humidity": 8.5,
"ledColor": "blue"
}
Setiap kunci dalam measurements objek harus cocok dengan nama jenis telemetri dalam templat perangkat di aplikasi IoT Central. Solusi ini tidak mendukung menentukan ID antarmuka dalam isi pesan. Jadi, jika dua antarmuka yang berbeda memiliki jenis telemetri dengan nama yang sama, pengukuran muncul di kedua aliran telemetri di aplikasi IoT Central Anda.
Anda dapat menyertakan timestamp bidang dalam isi untuk menentukan tanggal dan waktu UTC pesan. Bidang ini harus dalam format ISO 8601. Contohnya, 2020-06-08T20:16:54.602Z. Jika Anda tidak menyertakan tanda waktu, tanggal dan waktu saat ini akan digunakan.
Anda dapat menyertakan modelId bidang dalam isi. Gunakan bidang ini untuk menetapkan perangkat ke templat perangkat saat penyediaan.
deviceId harus alfanumerik, huruf kecil, dan dapat berisi tanda hubung.
Jika Anda tidak menyertakan bidang modelId, atau jika IoT Central tidak mengenali ID model, maka pesan dengan deviceId yang tidak dikenali akan membuat perangkat baru yang belum ditetapkan di IoT Central. Operator dapat memigrasikan perangkat secara manual ke templat perangkat yang benar. Untuk mempelajari selengkapnya, lihat Mengelola perangkat dalam aplikasi Azure IoT Central Anda > Memindahkan perangkat ke templat.
Nota
Hingga perangkat ditetapkan ke templat, semua panggilan HTTP ke fungsi mengembalikan status kesalahan 403.
Untuk mengaktifkan pengelogan untuk aplikasi fungsi dengan Application Insights, navigasikan ke Log Pemantauan > di aplikasi fungsi Anda di portal Microsoft Azure. Pilih Aktifkan Application Insights.
Sumber daya yang disediakan
Templat Resource Manager menyediakan sumber daya berikut di langganan Azure Anda:
- Aplikasi Fungsi
- Paket App Service
- Akun penyimpanan
- Penyimpanan kunci
Brankas kunci menyimpan kunci grup SAS untuk aplikasi IoT Central Anda.
Aplikasi fungsi berjalan pada paket konsumsi. Meskipun opsi ini tidak menawarkan sumber daya komputasi khusus, opsi ini memungkinkan jembatan perangkat untuk menangani ratusan pesan perangkat per menit, cocok untuk armada perangkat atau perangkat yang lebih kecil yang lebih jarang mengirim pesan. Jika aplikasi Anda bergantung pada streaming sejumlah besar pesan perangkat, ganti paket konsumsi dengan paket layanan Aplikasi khusus. Paket ini menawarkan sumber daya komputasi khusus, yang memberikan waktu respons server yang lebih cepat. Dengan Paket App Service standar, performa maksimum fungsi yang diamati dari Azure di repositori ini adalah sekitar 1.500 pesan perangkat per menit. Untuk mempelajari selengkapnya, lihat Opsi hosting Azure Functions.
Untuk menggunakan paket App Service yang didedikasikan alih-alih paket konsumsi, edit templat khusus sebelum menyebarkannya. Pilih Edit template.
Ganti segmen berikut:
{
"type": "Microsoft.Web/serverfarms",
"apiVersion": "2015-04-01",
"name": "[variables('planName')]",
"location": "[resourceGroup().location]",
"properties": {
"name": "[variables('planName')]",
"computeMode": "Dynamic",
"sku": "Dynamic"
}
},
Dengan:
{
"type": "Microsoft.Web/serverfarms",
"sku": {
"name": "S1",
"tier": "Standard",
"size": "S1",
"family": "S",
"capacity": 1
},
"kind": "app",
"name": "[variables('planName')]",
"apiVersion": "2016-09-01",
"location": "[resourceGroup().location]",
"tags": {
"iotCentral": "device-bridge",
"iotCentralDeviceBridge": "app-service-plan"
},
"properties": {
"name": "[variables('planName')]"
}
},
Selanjutnya, edit templat untuk menyertakan "alwaysOn": true dalam konfigurasi untuk functionapp sumber daya di bawah "properties": {"SiteConfig": {...}}Konfigurasi alwaysOn memastikan aplikasi fungsi selalu berjalan.
Examples
Contoh berikut menguraikan cara mengonfigurasi jembatan perangkat untuk berbagai cloud IoT:
Contoh 1: Menyambungkan perangkat Partikel melalui jembatan perangkat
Untuk menyambungkan perangkat Partikel melalui jembatan perangkat ke IoT Central, buka konsol Partikel dan buat integrasi webhook baru. Atur Format Permintaan ke JSON. Di bawah Pengaturan Tingkat Lanjut, gunakan format isi kustom berikut:
{
"device": {
"deviceId": "{{{PARTICLE_DEVICE_ID}}}"
},
"measurements": {
"{{{PARTICLE_EVENT_NAME}}}": "{{{PARTICLE_EVENT_VALUE}}}"
}
}
Tempelkan URL fungsi dari aplikasi fungsi Anda, dan Anda akan melihat perangkat Particle muncul sebagai perangkat yang tidak ditetapkan di IoT Central. Untuk mempelajari lebih lanjut, lihat posting blog Berikut cara mengintegrasikan proyek yang didukung Partikel Anda dengan Azure IoT Central .
Contoh 2: Menyambungkan perangkat Sigfox melalui jembatan perangkat
Beberapa platform mungkin tidak mengizinkan Anda menentukan format pesan perangkat yang dikirim melalui webhook. Untuk sistem tersebut, Anda harus mengonversi payload pesan ke format isi yang diharapkan sebelum jembatan perangkat memprosesnya. Anda dapat melakukan konversi dalam fungsi yang sama yang menjalankan jembatan perangkat.
Bagian ini menunjukkan cara mengonversi payload integrasi webhook Sigfox ke format isi yang diharapkan oleh jembatan perangkat. Cloud Sigfox mengirimkan data perangkat dalam format string heksadesimal. Untuk kenyamanan, jembatan perangkat mencakup fungsi konversi untuk format ini, yang menerima subset dari jenis bidang yang mungkin dalam payload perangkat Sigfox: int dan uint 8, 16, 32, atau 64 bit; float 32 bit atau 64 bit; little-endian dan big-endian. Untuk memproses pesan dari integrasi webhook Sigfox, buat perubahan berikut pada file IoTCIntegration/index.js di aplikasi fungsi.
Untuk mengonversi payload pesan, tambahkan kode berikut sebelum panggilan ke handleMessage pada baris 21, ganti payloadDefinition dengan definisi payload Sigfox Anda:
const payloadDefinition = 'gforce::uint:8 lat::uint:8 lon::uint:16'; // Replace this with your payload definition
req.body = {
device: {
deviceId: req.body.device
},
measurements: require('./converters/sigfox')(payloadDefinition, req.body.data)
};
Perangkat Sigfox mengharapkan kode respons 204. Tambahkan kode berikut setelah panggilan ke handleMessage di baris 21:
context.res = {
status: 204
};
Contoh 3: Menyambungkan perangkat dari The Things Network melalui jembatan perangkat
Untuk menyambungkan perangkat The Things Network ke IoT Central:
- Tambahkan integrasi HTTP baru ke aplikasi Anda di The Things Network: Aplikasi > Integrasi > tambahkan integrasi > HTTP Integration.
- Pastikan aplikasi Anda menyertakan fungsi dekoder yang secara otomatis mengonversi payload pesan perangkat Anda ke JSON sebelum mengirimkannya ke fungsi: Application > Payload Functions > decoder.
Contoh berikut menunjukkan fungsi dekoder JavaScript yang dapat Anda gunakan untuk mendekode jenis numerik umum dari data biner:
function Decoder(bytes, port) {
function bytesToFloat(bytes, decimalPlaces) {
var bits = (bytes[3] << 24) | (bytes[2] << 16) | (bytes[1] << 8) | bytes[0];
var sign = (bits >>> 31 === 0) ? 1.0 : -1.0;
var e = bits >>> 23 & 0xff;
var m = (e === 0) ? (bits & 0x7fffff) << 1 : (bits & 0x7fffff) | 0x800000;
var f = Math.round((sign * m * Math.pow(2, e - 150)) * Math.pow(10, decimalPlaces)) / Math.pow(10, decimalPlaces);
return f;
}
function bytesToInt32(bytes, signed) {
var bits = bytes[0] | (bytes[1] << 8) | (bytes[2] << 16) | (bytes[3] << 24);
var sign = 1;
if (signed && bits >>> 31 === 1) {
sign = -1;
bits = bits & 0x7FFFFFFF;
}
return bits * sign;
}
function bytesToShort(bytes, signed) {
var bits = bytes[0] | (bytes[1] << 8);
var sign = 1;
if (signed && bits >>> 15 === 1) {
sign = -1;
bits = bits & 0x7FFF;
}
return bits * sign;
}
return {
temperature: bytesToFloat(bytes.slice(0, 4), 2),
presscounter: bytesToInt32(bytes.slice(4, 8), true),
blueLux: bytesToShort(bytes.slice(8, 10), false)
};
}
Setelah Anda menentukan integrasi, tambahkan kode berikut sebelum panggilan ke handleMessage di baris 21 file IoTCIntegration/index.js aplikasi fungsi Anda. Kode ini menerjemahkan isi integrasi HTTP Anda ke format yang diharapkan.
req.body = {
device: {
deviceId: req.body.end_device_ids.device_id.toLowerCase()
},
measurements: req.body.uplink_message.decoded_payload
};
Nota
Cuplikan sebelumnya menggunakan ID perangkat yang mudah dipahami oleh manusia. Pesan Things Network juga menyertakan ID teknis yang dapat Anda akses menggunakan req.body.dev_eui.toLowerCase(). Untuk mempelajari selengkapnya, lihat The Things Network - Format Data.
Keterbatasan
Jembatan perangkat hanya meneruskan pesan ke IoT Central, dan tidak mengirim pesan kembali ke perangkat. Batasan inilah sebabnya mengapa properti dan perintah tidak berfungsi untuk perangkat yang terhubung ke IoT Central melalui jembatan perangkat ini. Karena operasi 'device twin' tidak didukung, tidak bisa memperbarui properti perangkat melalui jembatan perangkat. Untuk menggunakan fitur-fitur ini, perangkat harus terhubung langsung ke IoT Central menggunakan salah satu SDK perangkat Azure IoT.