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-events
hala 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ı Temperature
bir 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.
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ı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 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:
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.