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 az cli aracını ve azure-iot uzantısını yükleyin.

uygulamasının nasıl yükleneceğini az cliöğrenmek için bkz. Azure CLI'yi yükleme.

Uzantıyı yüklemekazure-iotaşağıdaki komutu çalıştırın:

az extension add --name azure-iot

Not

İlk kez bir uzantı komutu çalıştırdığınızda, uamqp kitaplığını yüklemeniz 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 takılmış olabileceği durumda klavyenizdeki Enter 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 ve REST API'deki cihaz durumu değerleri hakkında daha fazla bilgi için bkz . Cihaz durumu değerleri ve Cihaz alma.

Hata kodları

Verilerinizin neden monitor-events'da görünmediğini hâlâ teşhis edemiyorsanız, bir 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 logları 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.
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 mevcut değil. Müşteri desteğine bir talep oluşturun.
412 İstek ETag, mevcut kaynak ETag ile RFC7232 uyarınca eşleşmiyor. Müşteri desteğine bir talep oluşturun.
429 Hizmet, işlemleri kısıtlıyor. Belirli hizmet sınırları için bkz. Azure 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 olamayacaklarını görmek için müşteri desteğine bir bilet oluşturun ve iletin.

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 - IoT Hub yetkilendirme hatası Cihaz süresi dolmuş güvenlik belirtecini kullanıyor. IoT Hub bu hatayı bildirir.
401 IoTHubUnauthorized - IoT Hub yetkilendirme hatası CİHAZ DEVRE DIŞI 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 - IoT Hub yetkilendirme hatası CİHAZ BLOKE EDİLDİ 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, dosya yükleme işleminin tamamlandığını IoT Central'a hemen bildirdiğinden emin olun. 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 oluşturduktan sonra, 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 uamqp komut çalıştırdığınızda validate 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ının, cihaz şablonunda kullanılanla aynı ada ve aynı büyük/küçük harf kullanımına sahip olmasını sağlamalıdır. Aşağıdaki çıkışta, cihazın Temperature olması gerekirken temperature adlı bir telemetri değeri gönderdiği bir uyarı iletisi örneği gösterilmektedir.

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ında, cihaz şablonunda kullanılan ile aynı adı ve büyük/küçük harf kullanımını kullanmalıdır. 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 çıktıda, 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

Aynı telemetri adı birden fazla arabirimde tanımlıysa ve cihaz IoT Tak Çalıştır uyumlu değilse, doğrulama komutları 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.

IoT Central uygulamasında ham veri görünümünü gösteren ekran görüntüsü.

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 tek tek 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 aktarma sırasında yönetilen kimlik ile ilgili 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ın.az 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 edinmek için bkz. IoT verilerini Blob Depolama'ya 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:

Örnek dışarı aktarma hatalarını gösteren ekran görüntüsü.

Web kancası hedefi: "Web kancası ulaşılamadı"

Bir Webhook hedefi yapılandırıyorsanız ve "Webhook'a ulaşılamadı. Lütfen webhook'un çevrimiçi ve erişilebilir olduğundan emin olun" hatasını görüyorsanız, IoT Central hedefi kaydederken geri çağırma URL'sini doğrulamaya çalıştı ancak başarılı bir bağlantı kuramadı.

Yaygın nedenler:

  • Uç noktaya genel İnternet'ten ulaşılamıyor. IoT Central yalnızca genel DNS adı ve IP adresi olan uç noktalara teslim edebilir.
  • Sunucu sertifikası güvenilir değil. IoT Central, kendinden imzalı sertifikaları ve özel Sertifika Yetkilisi tarafından verilen sertifikaları reddeder. Sertifika, genel olarak güvenilen bir CA tarafından imzalanmalıdır ve sertifikanın konu veya konu alternatif adı geri çağırma URL'si ana bilgisayar adıyla eşleşmelidir.
  • Sertifikanın süresi doldu veya ana bilgisayar adı URL ile eşleşmiyor.
  • Uç nokta, hedefi kaydettiğinizde IoT Central'ın gönderdiği doğrulama isteğine 2xx olmayan bir yanıt döndürür.

Web kancası uç noktaları için TLS gereksinimleri hakkında daha fazla bilgi için bkz. HTTPS uç noktası ve TLS gereksinimleri.

Veri dışa aktarma eksik veri 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ışa aktarma geçici olarak kapalıyken kaçırılan tarihi verileri veya diğer verileri dışa 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 destek talebi de oluşturabilirsiniz.

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