Pemecahan masalah di Azure IoT Central

Artikel ini mencakup panduan pemecahan masalah untuk masalah konektivitas perangkat dan masalah konfigurasi ekspor data di aplikasi IoT Central Anda.

Masalah konektivitas perangkat

Bagian ini membantu Anda menentukan apakah data Anda mencapai IoT Central.

Jika Anda belum melakukannya, instal alat az cli dan ekstensi azure-iot.

Untuk mempelajari cara menginstal az cli, lihat Menginstal Azure CLI.

Untuk menginstal ekstensi azure-iot, jalankan perintah berikut:

az extension add --name azure-iot

Catatan

Anda mungkin diminta untuk menginstal pustaka uamqp saat pertama kali menjalankan perintah ekstensi.

Setelah Anda menginstal ekstensi azure-iot, mulai perangkat Anda untuk melihat apakah pesan yang dikirimnya sedang menuju ke IoT Central.

Gunakan perintah berikut untuk masuk ke langganan tempat Anda memiliki aplikasi IoT Central Anda:

az login
az account set --subscription <your-subscription-id>

Untuk memantau telemetri yang dikirim perangkat Anda, gunakan perintah berikut:

az iot central diagnostics monitor-events --app-id <iot-central-app-id> --device-id <device-name>

Jika perangkat berhasil tersambung ke IoT Central, Anda akan melihat output yang mirip dengan contoh berikut:

Monitoring telemetry.
Filtering on device: device-001
{
    "event": {
        "origin": "device-001",
        "module": "",
        "interface": "",
        "component": "",
        "payload": {
            "temp": 65.57910343679293,
            "humid": 36.16224660107426
        }
    }
}

Untuk memantau pembaruan properti, perangkat Anda bertukar dengan IoT Central, gunakan perintah pratinjau berikut:

az iot central diagnostics monitor-properties --app-id <iot-central-app-id> --device-id <device-name>

Jika perangkat berhasil mengirim pembaruan properti, Anda akan melihat output yang mirip dengan contoh berikut:

Changes in reported properties:
version : 32
{'state': 'true', 'name': {'value': {'value': 'Contoso'}, 'status': 'completed', 'desiredVersion': 7, 'ad': 'completed', 'av': 7, 'ac
': 200}, 'brightness': {'value': {'value': 2}, 'status': 'completed', 'desiredVersion': 7, 'ad': 'completed', 'av': 7, 'ac': 200}, 'p
rocessorArchitecture': 'ARM', 'swVersion': '1.0.0'}

Jika Anda melihat data muncul di terminal, data membuatnya sejauh aplikasi IoT Central Anda.

Jika Anda tidak melihat data apa pun muncul setelah beberapa menit, coba tekan tombol Enter atau return pada keyboard Anda, jika output macet.

Jika Anda masih tidak melihat data apa pun muncul di terminal Anda, kemungkinan perangkat Anda mengalami masalah konektivitas jaringan, atau tidak mengirim data dengan benar ke IoT Central.

Periksa status provisi perangkat Anda

Jika data Anda tidak muncul di monitor CLI, periksa status provisi perangkat Anda dengan menjalankan perintah berikut:

az iot central device registration-info --app-id <iot-central-app-id> --device-id <device-name>

Output berikut menunjukkan contoh perangkat yang diblokir agar tidak tersambung:

{
  "@device_id": "v22upeoqx6",
  "device_registration_info": {
    "device_status": "blocked",
    "display_name": "Environmental Sensor - v22upeoqx6",
    "id": "v22upeoqx6",
    "instance_of": "urn:krhsi_k0u:modelDefinition:w53jukkazs",
    "simulated": false
  },
  "dps_state": {
    "error": "Device is blocked from connecting to IoT Central application. Unblock the device in IoT Central and retry. Learn more:
https://aka.ms/iotcentral-docs-dps-SAS",
    "status": null
  }
}
Status provisi situs Deskripsi Kemungkinan mitigasi
Tersedia Tidak ada masalah yang segera dikenali. T/A
Terdaftar Perangkat belum tersambung ke IoT Central. Periksa log perangkat Anda untuk masalah konektivitas.
Terblokir Perangkat diblokir agar tidak tersambung ke IoT Central. Perangkat diblokir agar tidak tersambung ke aplikasi IoT Central. Buka blokir perangkat di IoT Central dan coba lagi. Untuk mempelajari selengkapnya, lihat Nilai status perangkat.
Tidak disetujui Perangkat tidak disetujui. Perangkat tidak disetujui untuk tersambung ke aplikasi IoT Central. Setujui perangkat di IoT Central dan coba lagi. Untuk mempelajari selengkapnya, lihat Nilai status perangkat
Tidak ditetapkan Perangkat tidak ditetapkan ke templat perangkat. Tetapkan perangkat ke templat perangkat sehingga IoT Central tahu cara mengurai data.

Pelajari selengkapnya tentang Nilai status perangkat di nilai status UI dan Perangkat di REST API.

Kode kesalahan

Jika Anda masih tidak dapat mendiagnosis alasan data Anda tidak muncul di monitor-events, langkah berikutnya adalah mencari kode kesalahan yang dilaporkan oleh perangkat Anda.

Mulai sesi penelusuran kesalahan di perangkat Anda, atau kumpulkan log dari perangkat Anda. Periksa kode kesalahan apa pun yang dilaporkan perangkat.

Tabel berikut ini menunjukkan kode kesalahan umum dan kemungkinan tindakan untuk mitigasi.

Jika Anda melihat masalah yang terkait dengan alur autentikasi Anda:

Kode kesalahan Deskripsi Kemungkinan Mitigasi
400 Isi permintaan tidak valid. Misalnya, objek tidak dapat diurai, atau objek tidak dapat divalidasi. Pastikan Anda mengirim isi permintaan yang benar sebagai bagian dari alur pengesahan, atau gunakan SDK perangkat.
401 Token otorisasi tidak dapat divalidasi. Misalnya, telah kedaluwarsa atau tidak berlaku untuk URI permintaan. Kode kesalahan ini juga ditampilkan ke perangkat sebagai bagian dari alur pengesahan TPM. Pastikan perangkat Anda memiliki info masuk yang benar.
404 Instans Device Provisioning Service, atau sumber daya seperti pendaftaran tidak ada. Ajukan tiket dengan dukungan pelanggan.
412 ETag dalam permintaan tidak cocok dengan ETag sumber daya yang ada, sesuai RFC7232. Ajukan tiket dengan dukungan pelanggan.
429 Layanan ini adalah operasi pembatasan. Untuk batas layanan tertentu, lihat batas IoT Hub Device Provisioning Service. Kurangi frekuensi pesan, pisahkan tanggung jawab di antara lebih banyak perangkat.
500 Terjadi kesalahan internal. Ajukan tiket dengan dukungan pelanggan untuk melihat apakah mereka dapat membantu Anda lebih lanjut.

Kode kesalahan otorisasi terperinci

Error Kode subgalat Catatan
401 Tidak Sah 401002 Perangkat menggunakan kredensial yang tidak valid atau kedaluwarsa. DPS melaporkan kesalahan ini.
401 Tidak Sah 400209 Perangkat sedang menunggu persetujuan oleh operator atau operator telah memblokirnya.
401 IoTHubUnauthorized Perangkat ini menggunakan token keamanan yang kedaluwarsa. IoT Hub melaporkan kesalahan ini.
401 IoTHubUnauthorized DEVICE_DISABLED Perangkat ini dinonaktifkan di IoT Hub ini dan telah pindah ke IoT Hub lain. Provisi ulang perangkat.
401 IoTHubUnauthorized DEVICE_BLOCKED Operator telah memblokir perangkat ini.

Kode kesalahan pengunggahan file

Berikut adalah daftar kode kesalahan umum yang mungkin Anda lihat saat perangkat mencoba mengunggah file ke cloud. Ingat bahwa sebelum perangkat Anda dapat mengunggah file, Anda harus mengonfigurasi unggahan file perangkat di aplikasi Anda.

Kode kesalahan Deskripsi Kemungkinan Mitigasi
403006 Anda telah melampaui jumlah operasi pengunggahan file bersamaan. Setiap klien perangkat dibatasi hingga 10 pengunggahan file bersamaan. Pastikan perangkat segera memberi tahu IoT Central bahwa operasi pengunggahan file telah selesai. Jika tidak berhasil, coba kurangi batas waktu permintaan.

Masalah data yang tidak dimodelkan

Saat Anda telah menetapkan bahwa perangkat Anda mengirim data ke IoT Central, langkah selanjutnya adalah memastikan bahwa perangkat Anda mengirim data dalam format yang valid.

Untuk mendeteksi kategori mana masalah Anda berada, jalankan perintah Azure CLI yang paling tepat untuk skenario Anda:

  • Untuk memvalidasi telemetri, gunakan perintah pratinjau:

    az iot central diagnostics validate-messages --app-id <iot-central-app-id> --device-id <device-name>
    
  • Untuk memvalidasi pembaruan properti, gunakan perintah pratinjau:

    az iot central diagnostics validate-properties --app-id <iot-central-app-id> --device-id <device-name>
    

Anda mungkin diminta untuk menginstal pustaka uamqp saat pertama kali menjalankan perintah validate.

Tiga jenis masalah umum yang menyebabkan data perangkat tidak muncul di IoT Central adalah:

  • Templat perangkat untuk ketidakcocokan data perangkat.
  • Data tidak valid JSON.
  • Versi lama IoT Edge menyebabkan telemetri dari komponen ditampilkan dengan tidak benar sebagai data yang tidak dimodelkan.

Templat perangkat untuk ketidakcocokan data perangkat

Perangkat harus menggunakan nama dan casing yang sama seperti yang digunakan dalam templat perangkat untuk nama bidang telemetri apa pun dalam payload yang dikirimnya. Output berikut menunjukkan contoh pesan peringatan di mana perangkat mengirim nilai telemetri yang disebut Temperature, kapan seharusnya temperature:

Validating telemetry.
Filtering on device: sample-device-01.
Exiting after 300 second(s), or 10 message(s) have been parsed (whichever happens first).
[WARNING] [DeviceId: sample-device-01] [TemplateId: urn:modelDefinition:ofhmazgddj:vmjwwjuvdzg] Device is sending data that has not been defined in the device template. Following capabilities have NOT been defined in the device template '['Temperature']'. Following capabilities have been defined in the device template (grouped by components) '{'thermostat1': ['temperature', 'targetTemperature', 'maxTempSinceLastReboot', 'getMaxMinReport'], 'thermostat2': ['temperature', 'targetTemperature', 'maxTempSinceLastReboot', 'getMaxMinReport'], 'deviceInformation': ['manufacturer', 'model', 'swVersion', 'osName', 'processorArchitecture', 'processorManufacturer', 'totalStorage', 'totalMemory']}'. 

Perangkat harus menggunakan nama dan casing yang sama seperti yang digunakan dalam templat perangkat untuk nama properti apa pun dalam payload yang dikirimnya. Output berikut menunjukkan contoh pesan peringatan di mana properti osVersion tidak ditentukan dalam templat perangkat:

Command group 'iot central diagnostics' is in preview and under development. Reference and support levels: https://aka.ms/CLI_refstatus
[WARNING]  [DeviceId: sample-device-01] [TemplateId: urn:modelDefinition:ofhmazgddj:vmjwwjuvdzg] Device is sending data that has not been defined in the device template. Following capabilities have NOT been defined in the device template '['osVersion']'. Following capabilities have been defined in the device template (grouped by components) '{'thermostat1': ['temperature', 'targetTemperature', 'maxTempSinceLastReboot', 'getMaxMinReport', 'rundiagnostics'], 'thermostat2': ['temperature', 'targetTemperature', 'maxTempSinceLastReboot', 'getMaxMinReport', 'rundiagnostics'], 'deviceInformation': ['manufacturer', 'model', 'swVersion', 'osName', 'processorArchitecture', 'processorManufacturer', 'totalStorage', 'totalMemory']}'.

Perangkat harus menggunakan jenis data yang ditentukan dalam templat perangkat untuk nilai telemetri atau properti apa pun. Misalnya, Anda melihat ketidakcocokan skema jika jenis yang ditentukan dalam templat perangkat boolean, tetapi perangkat mengirim string. Output berikut menunjukkan contoh pesan kesalahan di mana perangkat menggunakan nilai string untuk properti yang didefinisikan sebagai ganda:

Command group 'iot central diagnostics' is in preview and under development. Reference and support levels: https://aka.ms/CLI_refstatus
Validating telemetry.
Filtering on device: sample-device-01.
Exiting after 300 second(s), or 10 message(s) have been parsed (whichever happens first).
[ERROR] [DeviceId: sample-device-01] [TemplateId: urn:modelDefinition:ofhmazgddj:vmjwwjuvdzg]  Datatype of telemetry field 'temperature' does not match the datatype double. Data sent by the device : curr_temp. For more information, see: https://aka.ms/iotcentral-payloads

Perintah validasi juga melaporkan kesalahan jika nama telemetri yang sama ditentukan dalam beberapa antarmuka, tetapi perangkat tidak sesuai dengan IoT Plug and Play.

Jika Anda lebih suka menggunakan GUI, gunakan tampilan Data mentah IoT Central untuk melihat apakah ada sesuatu yang tidak dimodelkan.

Screenshot that shows the raw data view in an IoT Central application.

Saat mendeteksi masalah, Anda mungkin perlu memperbarui firmware perangkat, atau membuat templat perangkat baru yang memodelkan data yang sebelumnya tidak dimodelkan.

Jika Anda memilih untuk membuat template baru yang memodelkan data dengan benar, migrasi perangkat dari templat lama Anda ke templat baru. Untuk mempelajari lebih lanjut, lihat Mengelola perangkat di aplikasi Azure IoT Central Anda.

JSON tidak valid

Jika tidak ada kesalahan yang dilaporkan, tetapi nilai tidak muncul, maka mungkin JSON cacat dalam payload yang dikirim perangkat. Untuk mempelajari selengkapnya, lihat Payload telemetri, properti, dan perintah.

Anda tidak dapat menggunakan perintah validasi atau tampilan Data mentah di UI untuk mendeteksi apakah perangkat mengirim JSON yang salah bentuk.

Versi IoT Edge

Untuk menampilkan telemetri dari komponen yang dihosting di modul IoT Edge dengan benar, gunakan IoT Edge versi 1.2.4 atau yang lebih baru. Jika Anda menggunakan versi yang lebih lama, telemetri dari komponen dalam modul IoT Edge ditampilkan sebagai _unmodeleddata.

Masalah identitas terkelola ekspor data

Anda menggunakan identitas terkelola untuk mengotorisasi koneksi ke tujuan ekspor. Data tidak tiba di tujuan ekspor.

Sebelum Anda mengonfigurasi atau mengaktifkan tujuan ekspor, pastikan Anda menyelesaikan langkah-langkah berikut:

  • Aktifkan identitas terkelola untuk aplikasi IoT Central. Untuk memverifikasi bahwa identitas terkelola diaktifkan, buka halaman Identitas untuk aplikasi Anda di portal Azure atau gunakan perintah CLI berikut:

    az iot central app identity show --name {your app name} --resource-group {your resource group name}
    
  • Konfigurasikan izin untuk identitas terkelola. Untuk melihat izin yang ditetapkan, pilih Penetapan peran Azure di halaman Identitas untuk aplikasi Anda di portal Azure atau gunakan az role assignment list perintah CLI. Izin yang diperlukan adalah:

    Tujuan Izin
    Azure Blob Storage Data blob penyimpanan kontributor
    Azure Service Bus Azure Service Bus Data Sender
    Azure Event Hubs Azure Service Bus Data Sender
    Azure Data Explorer Admin

    Jika izin tidak diatur dengan benar sebelum Anda membuat tujuan di aplikasi IoT Central Anda, coba hapus tujuan lalu tambahkan lagi.

  • Konfigurasikan setiap jaringan virtual, titik akhir privat, dan kebijakan firewall.

Catatan

Jika Anda menggunakan identitas terkelola untuk mengotorisasi koneksi ke tujuan ekspor, IoT Central tidak mengekspor data dari perangkat yang disimulasikan.

Untuk mempelajari selengkapnya, lihat Data ekspor.

Masalah koneksi tujuan ekspor data

Halaman definisi ekspor memperlihatkan informasi tentang koneksi yang gagal ke tujuan ekspor:

Screenshot that shows an example export error.

Masalah data yang hilang dalam ekspor data

Ekspor data hanya mengekspor data yang tiba di aplikasi Anda setelah Anda mengaktifkan ekspor data. Jika Anda perlu mengekspor data historis atau data yang terlewat saat ekspor data Anda dinonaktifkan sementara, Anda dapat menggunakan REST API IoT Central untuk mengkueri telemetri perangkat. Gunakan kueri untuk mengambil data yang hilang lalu tambahkan data ke tujuan ekspor Anda. Untuk mempelajari selengkapnya, lihat Cara menggunakan IoT Central REST API untuk mengkueri perangkat.

Langkah berikutnya

Jika Anda memerlukan bantuan lebih lanjut, Anda dapat menghubungi pakar Azure di forum Tanya Jawab Microsoft dan Stack Overflow. Atau, Anda dapat mengajukan tiket dukungan Azure.

Untuk mengetahui informasi selengkapnya, lihat Opsi dukungan dan bantuan Azure IoT.