Azure IoT Central'da sorun giderme

Bu makale, IoT Central uygulamalarınızdaki cihaz bağlantı sorunları ve veri dışarı aktarma yapılandırma sorunları için sorun giderme kılavuzlarını içerir.

Cihaz bağlantı sorunları

Bu bölüm, verilerinizin IoT Central'a ulaşıp ulaşmadığını belirlemenize yardımcı olur.

Henüz yapmadıysanız aracı ve azure-iot uzantıyı az cli yükleyin.

yüklemesini az cliöğrenmek için bkz . Azure CLI'yi yükleme.

Uzantıyı azure-iot yüklemek için aşağıdaki komutu çalıştırın:

az extension add --name azure-iot

Not

İlk kez bir uzantı komutu çalıştırdığınızda kitaplığı yüklemeniz uamqp istenebilir.

Uzantıyı yükledikten sonra, gönderdiği iletilerin azure-iot IoT Central'a doğru yollayıp göndermediğini görmek için cihazınızı başlatın.

IoT Central uygulamanızın bulunduğu abonelikte oturum açmak için aşağıdaki komutları kullanın:

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

Cihazınızın gönderdiği telemetriyi izlemek için aşağıdaki komutu kullanın:

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

Cihaz IoT Central'a başarıyla bağlandıysa aşağıdaki örneğe benzer bir çıkış görürsünüz:

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

Cihazınızın IoT Central ile alışverişte olduğu özellik güncelleştirmelerini izlemek için aşağıdaki önizleme komutunu kullanın:

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

Cihaz özellik güncelleştirmelerini başarıyla gönderirse aşağıdaki örneğe benzer bir çıkış görürsünüz:

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'}

Terminalinizde verilerin göründüğünü görürseniz veriler IoT Central uygulamanıza kadar gelir.

Birkaç dakika sonra herhangi bir veri görünmüyorsa, çıktının Enter takılması durumunda klavyenizdeki veya return tuşuna basmayı deneyin.

Terminalinizde hala herhangi bir veri görünmüyorsa cihazınızda ağ bağlantısı sorunları yaşanıyor veya IoT Central'a doğru veri göndermiyor olabilir.

Cihazınızın sağlama durumunu denetleyin

Verileriniz CLI izleyicisinde görünmüyorsa aşağıdaki komutu çalıştırarak cihazınızın sağlama durumunu denetleyin:

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

Aşağıdaki çıkışta, bağlanması engellenen bir cihaz örneği gösterilmektedir:

{
  "@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
  }
}
Cihaz sağlama durumu Açıklama Olası risk azaltma
Sağlanan Hemen tanınabilir bir sorun yok. Yok
Kayıtlı Cihaz henüz IoT Central'a bağlanmadı. Cihaz günlüklerinizde bağlantı sorunları olup olmadığını denetleyin.
Engellendi Cihazın IoT Central'a bağlanması engellendi. Cihazın IoT Central uygulamasına bağlanması engellendi. IoT Central'da cihazın engelini kaldırın ve yeniden deneyin. Daha fazla bilgi edinmek için bkz . Cihaz durumu değerleri.
Onaylanmamış Cihaz onaylanmadı. Cihaz IoT Central uygulamasına bağlanmak için onaylanmamıştır. IoT Central'da cihazı onaylayın ve yeniden deneyin. Daha fazla bilgi edinmek için bkz . Cihaz durumu değerleri
Atanmamış Cihaz bir cihaz şablonuna atanmamış. IoT Central'ın verilerin nasıl ayrıştırıldığını bilmesi için cihazı bir cihaz şablonuna atayın.

Kullanıcı arabirimindeki Cihaz durumu değerleri ve REST API'deki Cihaz durumu değerleri hakkında daha fazla bilgi edinin.

Hata kodları

Verilerinizin uygulamasında neden gösterilmediğini monitor-eventshala tanılayamıyorsanız, sonraki adım cihazınız tarafından bildirilen hata kodlarını aramaktır.

Cihazınızda bir hata ayıklama oturumu başlatın veya cihazınızdan günlükleri toplayın. Cihazın bildirdiğini hata kodlarını denetleyin.

Aşağıdaki tablolarda yaygın hata kodları ve azaltmaya yönelik olası eylemler gösterilmektedir.

Kimlik doğrulama akışınızla ilgili sorunlar görüyorsanız:

Hata kodu Açıklama Olası Risk Azaltma
400 İsteğin gövdesi geçerli değil. Örneğin, ayrıştırılamaz veya nesne doğrulanamaz. Kanıtlama akışının bir parçası olarak doğru istek gövdesini gönderdiğinizden emin olun veya bir cihaz SDK'sı kullanın.
Kategori 401 Yetkilendirme belirteci doğrulanamıyor. Örneğin, süresi doldu veya isteğin URI'sine uygulanmaz. Bu hata kodu, TPM kanıtlama akışının bir parçası olarak cihazlara da döndürülür. Cihazınızın doğru kimlik bilgilerine sahip olduğundan emin olun.
404 Cihaz Sağlama Hizmeti örneği veya kayıt gibi bir kaynak yok. Müşteri desteğine bir bilet oluşturun.
412 ETag İstekteki , RFC7232 göre mevcut kaynağınkiyle eşleşmiyorETag. Müşteri desteğine bir bilet oluşturun.
Kategori 429 Hizmet, işlemleri azaltıyor. Belirli hizmet sınırları için bkz . IoT Hub Cihaz Sağlama Hizmeti sınırları. İleti sıklığını azaltın, sorumlulukları daha fazla cihaz arasında bölün.
500 bir iç hata oluştu. Daha fazla yardımcı olup olmadığını görmek için müşteri desteğine bir bilet oluşturun.

Ayrıntılı yetkilendirme hata kodları

Hata Alt hata kodu Notlar
401 Yetkisiz 401002 Cihaz geçersiz veya süresi dolmuş kimlik bilgileri kullanıyor. DPS bu hatayı bildirir.
401 Yetkisiz 400209 Cihaz bir operatör tarafından onay bekliyor veya bir operatör tarafından engellendi.
401 IoTHubUnauthorized Cihaz süresi dolmuş güvenlik belirtecini kullanıyor. IoT Hub bu hatayı bildirir.
401 IoTHubUnauthorized DEVICE_DISABLED Cihaz bu IoT hub'ında devre dışı bırakıldı ve başka bir IoT hub'ına taşındı. Cihazı yeniden sağlama.
401 IoTHubUnauthorized DEVICE_BLOCKED Operatör bu cihazı engelledi.

Dosya yükleme hata kodları

Cihaz bir dosyayı buluta yüklemeye çalıştığında görebileceğiniz yaygın hata kodlarının listesi aşağıdadır. Cihazınızın bir dosyayı karşıya yükleyebilmesi için önce uygulamanızda cihaz dosyası yüklemelerini yapılandırmanız gerektiğini unutmayın.

Hata kodu Açıklama Olası Risk Azaltma
403006 Eşzamanlı dosya yükleme işlemlerinin sayısını aştınız. Her cihaz istemcisi 10 eşzamanlı dosya yükleme işlemiyle sınırlıdır. Cihazın ioT Central'a dosya yükleme işleminin tamamlandığını hemen bildirir. Bu işe yaramazsa istek zaman aşımını azaltmayı deneyin.

Modellenmemiş veri sorunları

Cihazınızın IoT Central'a veri gönderdiğini belirttiğinizde, bir sonraki adım cihazınızın geçerli bir biçimde veri gönderdiğinden emin olmaktır.

Sorununuzun hangi kategorilerde olduğunu algılamak için senaryonuz için en uygun Azure CLI komutunu çalıştırın:

  • Telemetriyi doğrulamak için önizleme komutunu kullanın:

    az iot central diagnostics validate-messages --app-id <iot-central-app-id> --device-id <device-name>
    
  • Özellik güncelleştirmelerini doğrulamak için önizleme komutunu kullanın:

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

İlk kez bir validate komut çalıştırdığınızda uamqp kitaplığı yüklemeniz istenebilir.

Cihaz verilerinin IoT Central'da görünmemasına neden olan üç yaygın sorun türü şunlardır:

  • Cihaz şablonu ile cihaz veri uyuşmazlığı.
  • Veriler geçersiz JSON.
  • IoT Edge'in eski sürümleri, bileşenlerden gelen telemetri verilerinin hatalı şekilde modellenmemiş veri olarak görüntülenmesine neden olur.

Cihaz şablonu ile cihaz veri uyuşmazlığı

Bir cihaz, gönderdiği yükteki telemetri alanı adları için cihaz şablonunda kullanılanla aynı adı ve büyük/küçük harf kullanımını kullanmalıdır. Aşağıdaki çıkışta, cihazın olması gerektiğinde adlı Temperaturebir telemetri değeri gönderdiği örnek bir uyarı iletisi gösterilmektedir 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']}'. 

Bir cihaz, gönderdiği yükteki tüm özellik adları için cihaz şablonunda kullanılanla aynı adı ve büyük/küçük harf kullanımını içermelidir. Aşağıdaki çıkışta, özelliğin osVersion cihaz şablonunda tanımlanmadığı örnek bir uyarı iletisi gösterilmektedir:

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']}'.

Bir cihaz, telemetri veya özellik değerleri için cihaz şablonunda tanımlanan veri türlerini kullanmalıdır. Örneğin, cihaz şablonunda tanımlanan tür boole ise ancak cihaz bir dize gönderiyorsa şema uyuşmazlığı görürsünüz. Aşağıdaki çıkışta, cihazın çift olarak tanımlanan bir özellik için dize değeri kullandığı örnek bir hata iletisi gösterilmektedir:

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

Doğrulama komutları aynı telemetri adı birden çok arabirimde tanımlanıyorsa ancak cihaz IoT Tak Çalıştır uyumlu değilse de bir hata bildirir.

GUI kullanmayı tercih ediyorsanız, bir şeyin modellenip modellenmediğini görmek için IoT Central Raw veri görünümünü kullanın.

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

Sorunu algıladığınızda cihaz üretici yazılımını güncelleştirmeniz veya daha önce modellenmemiş verileri modelleyen yeni bir cihaz şablonu oluşturmanız gerekebilir.

Verileri doğru modelleyen yeni bir şablon oluşturmayı seçtiyseniz cihazları eski şablondan yeni şablona geçirin. Daha fazla bilgi edinmek için bkz . Azure IoT Central uygulamanızda cihazları yönetme.

Geçersiz JSON

Herhangi bir hata bildirilmemişse ancak bir değer görünmüyorsa, büyük olasılıkla cihazın gönderdiği yükte hatalı biçimlendirilmiş JSON'dır. Daha fazla bilgi için bkz . Telemetri, özellik ve komut yükleri.

Cihazın hatalı biçimlendirilmiş JSON gönderip göndermediğini algılamak için kullanıcı arabiriminde validate komutlarını veya Raw veri görünümünü kullanamazsınız.

IoT Edge sürümü

IoT Edge modüllerinde barındırılan bileşenlerden gelen telemetri verilerini doğru görüntülemek için IoT Edge sürüm 1.2.4 veya üzerini kullanın. Önceki bir sürümü kullanıyorsanız IoT Edge modüllerindeki bileşenlerden telemetri _unmodeleddata olarak görüntülenir.

Veri dışarı aktarma yönetilen kimlik sorunları

Dışarı aktarma hedefine bağlantıyı yetkilendirmek için yönetilen kimlik kullanıyorsunuz. Veriler dışarı aktarma hedefine ulaşmıyor.

Dışarı aktarma hedefini yapılandırmadan veya etkinleştirmeden önce aşağıdaki adımları tamamladığınızdan emin olun:

  • IoT Central uygulaması için yönetilen kimliği etkinleştirin. Yönetilen kimliğin etkinleştirildiğini doğrulamak için Azure portalında uygulamanızın Kimlik sayfasına gidin veya aşağıdaki CLI komutunu kullanın:

    az iot central app identity show --name {your app name} --resource-group {your resource group name}
    
  • Yönetilen kimlik için izinleri yapılandırın. Atanan izinleri görüntülemek için Azure portalında uygulamanızın Kimlik sayfasında Azure rol atamaları'nı seçin veya CLI komutunu kullanınaz role assignment list. Gerekli izinler şunlardır:

    Hedef İzin
    Azure Blob Depolama Depolama Blobu Veri Katılımcısı
    Azure Service Bus Azure Service Bus Veri Göndereni
    Azure Event Hubs Azure Event Hubs Veri Göndereni
    Azure Veri Gezgini Yönetici

    IoT Central uygulamanızda hedefi oluşturmadan önce izinler doğru ayarlanmadıysa hedefi kaldırmayı ve sonra yeniden eklemeyi deneyin.

  • Tüm sanal ağları, özel uç noktaları ve güvenlik duvarı ilkelerini yapılandırın.

Not

Dışarı aktarma hedefine bağlantıyı yetkilendirmek için yönetilen kimlik kullanıyorsanız IoT Central, simülasyon cihazlarından veri dışarı aktarmaz.

Daha fazla bilgi için bkz . Verileri dışarı aktarma.

Veri dışarı aktarma hedef bağlantı sorunları

Dışarı aktarma tanımı sayfasında, dışarı aktarma hedefine başarısız olan bağlantılar hakkında bilgiler gösterilir:

Screenshot that shows an example export error.

Eksik veri dışarı aktarma sorunları

Veri dışarı aktarma yalnızca siz veri dışarı aktarmayı etkinleştirdikten sonra uygulamanıza ulaşan verileri dışarı aktarır. Veri dışarı aktarma geçici olarak kapatılırken kaçırılan geçmiş verileri veya verileri dışarı aktarmanız gerekiyorsa, cihaz telemetrisini sorgulamak için IoT Central REST API'sini kullanabilirsiniz. Eksik verileri almak için bir sorgu kullanın ve ardından verileri dışarı aktarma hedefinize ekleyin. Daha fazla bilgi edinmek için bkz . Cihazları sorgulamak için IoT Central REST API'sini kullanma.

Sonraki adımlar

Daha fazla yardıma ihtiyacınız varsa Microsoft Soru-Cevap ve Stack Overflow forumlarında Azure uzmanlarına başvurabilirsiniz. Alternatif olarak, bir Azure desteği bileti de oluşturabilirsiniz.

Daha fazla bilgi için bkz . Azure IoT desteği ve yardım seçenekleri.