Mulai menggunakan manajemen perangkat (Node.js)
Aplikasi back-end dapat menggunakan primitif Azure IoT Hub, seperti kembar perangkat dan metode langsung, untuk memulai dan memantau tindakan manajemen perangkat dari jarak jauh pada perangkat. Artikel ini menunjukkan kepada Anda bagaimana aplikasi back-end dan aplikasi perangkat dapat bekerja sama untuk memulai dan memantau boot ulang perangkat jarak jauh menggunakan IoT Hub.
Catatan
Fitur yang dijelaskan dalam artikel ini hanya tersedia di tingkat standar IoT Hub. Untuk informasi selengkapnya tentang tingkat IoT Hub dasar dan standar/gratis, lihat Memilih tingkat IoT Hub yang tepat untuk solusi Anda.
Gunakan metode langsung untuk memulai tindakan manajemen perangkat (seperti reboot, reset pabrik, dan pembaruan firmware) dari aplikasi back-end di cloud. Layanan bertanggung jawab untuk:
Menangani permintaan metode yang dikirim dari IoT Hub.
Memulai tindakan spesifik perangkat yang sesuai pada perangkat.
Menyediakan pembaruan status melalui properti yang dilaporkan ke IoT Hub.
Anda dapat menggunakan aplikasi back-end di cloud untuk menjalankan kueri kembar perangkat untuk melaporkan kemajuan tindakan manajemen perangkat Anda.
Artikel ini menunjukkan kepada Anda cara membuatnya:
dmpatterns_getstarted_device.js: aplikasi perangkat yang disimulasikan dengan metode langsung yang me-reboot perangkat dan melaporkan waktu reboot terakhir. Metode langsung dipanggil dari cloud.
dmpatterns_getstarted_service.js: aplikasi konsol .NET yang memanggil metode langsung di aplikasi perangkat yang disimulasikan melalui hub IoT Anda. Ini menampilkan respons dan properti yang dilaporkan yang diperbarui.
Prasyarat
IoT Hub di langganan Azure Anda. Jika belum memiliki hub, Anda dapat mengikuti langkah-langkah di Membuat IoT hub.
Perangkat yang terdaftar di hub IoT Anda. Jika Anda tidak memiliki perangkat di hub IoT Anda, ikuti langkah-langkah di Mendaftarkan perangkat.
Node.js versi 10.0.x atau yang lebih baru. Mempersiapkan lingkungan pengembangan Anda mendeskripsikan cara menginstal Node.js untuk artikel ini pada Windows ataupun Linux.
Pastikan port 8883 terbuka di firewall Anda. Sampel perangkat dalam artikel ini menggunakan protokol MQTT, yang berkomunikasi melalui port 8883. Port ini dapat diblokir di beberapa lingkungan jaringan perusahaan dan pendidikan. Untuk informasi selengkapnya dan cara mengatasi masalah ini, lihat Menyambungkan ke Azure IoT Hub (MQTT).
Membuat aplikasi perangkat dengan metode langsung
Di bagian ini, Anda:
Membuat aplikasi konsol Node.js yang merespons metode langsung yang dipanggil oleh cloud.
Memicu boot ulang perangkat simulasi.
Menggunakan properti yang dilaporkan untuk mengaktifkan kueri kembar perangkat untuk mengidentifikasi perangkat dan kapan terakhir kali di-boot ulang.
Penting
Artikel ini menyertakan langkah-langkah untuk menyambungkan perangkat menggunakan tanda tangan akses bersama, juga disebut autentikasi kunci konten. Metode autentikasi ini mudah untuk pengujian dan evaluasi, tetapi mengautentikasi perangkat menggunakan sertifikat X.509 adalah pendekatan yang lebih aman. Untuk mempelajari lebih lanjut, lihat Keamanan koneksi praktik > terbaik keamanan.
Buat folder kosong yang disebut perangkat terkelola. Di folder perangkat terkelola, buat file package.json menggunakan perintah berikut di prompt perintah Anda. Terima semua defaultnya:
npm init
Pada perintah Anda di folder perangkat terkelola, jalankan perintah berikut untuk menginstal paket SDK Perangkat azure-iot-device dan paket azure-iot-device-mqtt:
npm install azure-iot-device azure-iot-device-mqtt --save
Menggunakan editor teks, buat file dmpatterns_getstarted_device.js di folder perangkat terkelola.
Tambahkan pernyataan 'wajib' berikut di awal file dmpatterns_getstarted_device.js:
'use strict'; var Client = require('azure-iot-device').Client; var Protocol = require('azure-iot-device-mqtt').Mqtt;
Tambahkan variabel connectionString dan gunakan untuk membuat instans Klien. Ganti nilai tempat penampung
{yourdeviceconnectionstring}
dengan string koneksi perangkat yang Anda lihat ketika mendaftarkan perangkat di IoT Hub:var connectionString = '{yourdeviceconnectionstring}'; var client = Client.fromConnectionString(connectionString, Protocol);
Tambahkan fungsi berikut untuk mengimplementasikan metode langsung pada perangkat
var onReboot = function(request, response) { // Respond the cloud app for the direct method response.send(200, 'Reboot started', function(err) { if (err) { console.error('An error occurred when sending a method response:\n' + err.toString()); } else { console.log('Response to method \'' + request.methodName + '\' sent successfully.'); } }); // Report the reboot before the physical restart var date = new Date(); var patch = { iothubDM : { reboot : { lastReboot : date.toISOString(), } } }; // Get device Twin client.getTwin(function(err, twin) { if (err) { console.error('could not get twin'); } else { console.log('twin acquired'); twin.properties.reported.update(patch, function(err) { if (err) throw err; console.log('Device reboot twin state reported') }); } }); // Add your device's reboot API for physical restart. console.log('Rebooting!'); };
Buka koneksi ke hub IoT Anda dan mulai pendengar metode langsung:
client.open(function(err) { if (err) { console.error('Could not open IotHub client'); } else { console.log('Client opened. Waiting for reboot method.'); client.onDeviceMethod('reboot', onReboot); } });
Simpan dan tutup file dmpatterns_getstarted_device.js ini.
Catatan
Untuk mempermudah, artikel ini tidak menerapkan kebijakan coba lagi. Dalam kode produksi, Anda harus menerapkan kebijakan percobaan kembali (seperti backoff eksponensial), seperti yang disarankan dalam artikel, Penanganan Kesalahan Sementara.
Mendapatkan string koneksi IoT hub
Dalam artikel ini, Anda membuat layanan backend yang memanggil metode langsung pada perangkat. Untuk memanggil metode langsung pada perangkat melalui Azure IoT Hub, layanan Anda memerlukan izin koneksi layanan. Secara default, setiap IoT Hub dibuat dengan kebijakan akses bersama bernama layanan yang memberikan izin ini.
Untuk mendapatkan string koneksi Azure IoT Hub untuk kebijakan layanan, ikuti langkah-langkah berikut:
Di portal Azure, pilih Grup sumber daya. Pilih grup sumber daya tempat hub Anda berada, lalu pilih hub Anda dari daftar sumber daya.
Di panel sisi kiri hub IoT Anda, pilih Kebijakan akses bersama.
Dari daftar kebijakan, pilih kebijakan layanan.
Salin String koneksi utama dan simpan nilainya.
Untuk mengetahui informasi selengkapnya tentang kebijakan dan izin akses bersama IoT Hub, lihat Kontrol akses dan izin.
Membuat aplikasi layanan guna memicu boot ulang
Di bagian ini, Anda membuat aplikasi konsol Node.js yang memulai boot ulang jarak jauh pada perangkat menggunakan metode langsung. Aplikasi ini menggunakan kueri kembar perangkat untuk menemukan waktu boot ulang terakhir untuk perangkat tersebut.
Penting
Artikel ini menyertakan langkah-langkah untuk menyambungkan ke layanan menggunakan tanda tangan akses bersama. Metode autentikasi ini mudah untuk pengujian dan evaluasi, tetapi mengautentikasi ke layanan dengan ID Microsoft Entra atau identitas terkelola adalah pendekatan yang lebih aman. Untuk mempelajari selengkapnya, lihat Keamanan praktik > terbaik Keamanan cloud.
Buat folder kosong yang disebut trigger-reboot-on-device. Di folder trigger-reboot-on-device, buat file package.json menggunakan perintah berikut di prompt perintah Anda. Terima semua defaultnya:
npm init
Pada prompt perintah Anda di folder trigger-reboot-on-device , jalankan perintah berikut untuk menginstal paket Azure-iothub Device SDK dan paket azure-iot-device-mqtt :
npm install azure-iothub --save
Menggunakan editor teks, buat file dmpatterns_getstarted_service.js di folder trigger-reboot-on-device .
Tambahkan pernyataan 'wajib' berikut di awal file dmpatterns_getstarted_service.js:
'use strict'; var Registry = require('azure-iothub').Registry; var Client = require('azure-iothub').Client;
Tambahkan deklarasi variabel berikut dan ganti nilai tempat penampung
{iothubconnectionstring}
dengan string koneksi hub IoT yang Anda salin sebelumnya di Dapatkan string koneksi hub IoT:var connectionString = '{iothubconnectionstring}'; var registry = Registry.fromConnectionString(connectionString); var client = Client.fromConnectionString(connectionString); var deviceToReboot = 'myDeviceId';
Tambahkan fungsi berikut untuk memanggil metode perangkat untuk melakukan boot ulang perangkat target:
var startRebootDevice = function(twin) { var methodName = "reboot"; var methodParams = { methodName: methodName, payload: null, timeoutInSeconds: 30 }; client.invokeDeviceMethod(deviceToReboot, methodParams, function(err, result) { if (err) { console.error("Direct method error: "+err.message); } else { console.log("Successfully invoked the device to reboot."); } }); };
Tambahkan fungsi berikut ke kueri untuk perangkat dan dapatkan waktu boot ulang terakhir:
var queryTwinLastReboot = function() { registry.getTwin(deviceToReboot, function(err, twin){ if (twin.properties.reported.iothubDM != null) { if (err) { console.error('Could not query twins: ' + err.constructor.name + ': ' + err.message); } else { var lastRebootTime = twin.properties.reported.iothubDM.reboot.lastReboot; console.log('Last reboot time: ' + JSON.stringify(lastRebootTime, null, 2)); } } else console.log('Waiting for device to report last reboot time.'); }); };
Tambahkan kode berikut untuk memanggil fungsi yang memicu metode langsung boot ulang dan kueri untuk boot ulang terakhir kalinya:
startRebootDevice(); setInterval(queryTwinLastReboot, 2000);
Simpan dan tutup file dmpatterns_getstarted_device.js.
Menjalankan aplikasi
Anda sekarang siap untuk menjalankan aplikasi.
Pada perintah di folder perangkat terkelola, jalankan perintah berikut untuk mulai mendengarkan metode langsung reboot.
node dmpatterns_getstarted_device.js
Pada prompt perintah di folder trigger-reboot-on-device , jalankan perintah berikut untuk memicu boot ulang jarak jauh dan kueri untuk perangkat kembar untuk menemukan waktu reboot terakhir.
node dmpatterns_getstarted_service.js
Anda melihat respons perangkat terhadap metode langsung boot ulang dan status boot ulang di konsol.
Hal berikut ini menunjukkan respons perangkat terhadap metode langsung boot ulang yang dikirim oleh layanan:
Hal berikut ini menunjukkan layanan yang memicu boot ulang dan polling kembaran perangkat untuk boot ulang terakhir kalinya:
Menyesuaikan dan memperluas tindakan manajemen perangkat
Solusi IoT Anda dapat memperluas kumpulan pola manajemen perangkat yang ditentukan atau mengaktifkan pola kustom dengan menggunakan primitif perangkat kembar dan metode cloud-ke-perangkat. Contoh lain dari tindakan manajemen perangkat termasuk pengaturan ulang pabrik, pembaruan firmware, pembaruan perangkat lunak, manajemen daya, manajemen jaringan dan konektivitas, dan enkripsi data.
Jangka waktu pemeliharaan perangkat
Biasanya, Anda mengonfigurasi perangkat untuk melakukan tindakan pada waktu yang meminimalkan gangguan dan waktu henti. Jangka waktu pemeliharaan perangkat adalah pola yang umum digunakan untuk menentukan waktu ketika perangkat harus memperbarui konfigurasinya. Solusi ujung belakang Anda dapat menggunakan properti yang diinginkan dari kembaran perangkat untuk menentukan dan mengaktifkan kebijakan pada perangkat Anda yang mengaktifkan jangka waktu pemeliharaan. Ketika perangkat menerima kebijakan jangka waktu pemeliharaan, perangkat dapat menggunakan properti yang dilaporkan dari kembaran perangkat untuk melaporkan status kebijakan. Aplikasi ujung belakang dapat kemudian menggunakan kueri kembar perangkat untuk membuktikan kepatuhan perangkat dan setiap kebijakan.
Langkah berikutnya
Dalam artikel ini, Anda menggunakan metode langsung untuk memicu boot ulang jarak jauh pada perangkat. Anda menggunakan properti yang dilaporkan untuk melaporkan waktu boot ulang terakhir dari perangkat, dan meminta kembaran perangkat untuk menemukan waktu boot ulang terakhir perangkat dari cloud.
Untuk terus memulai dengan IoT Hub dan pola manajemen perangkat seperti pembaruan berbasis gambar end-to-end di artikel Pembaruan Perangkat untuk Azure IoT Hub menggunakan Gambar Referensi Raspberry Pi 3 B+.
Untuk mempelajari cara memperluas solusi IoT dan menjadwalkan panggilan metode di beberapa perangkat, lihat Menjadwalkan dan menyiarkan pekerjaan.