Řešení potíží v Azure IoT Central

Tento článek obsahuje pokyny pro řešení potíží s připojením zařízení a problémy s konfigurací exportu dat v aplikacích IoT Central.

Problémy s připojením zařízení

Tato část vám pomůže určit, jestli se vaše data dostanou do IoT Central.

Pokud jste to ještě neudělali, nainstalujte az cli nástroj a azure-iot rozšíření.

Informace o instalaci az clinajdete v tématu Instalace Azure CLI.

Pokud chcete rozšíření nainstalovatazure-iot, spusťte následující příkaz:

az extension add --name azure-iot

Poznámka:

Při prvním spuštění příkazu rozšíření se může zobrazit výzva k instalaci uamqp knihovny.

Po instalaci azure-iot rozšíření spusťte zařízení, abyste zjistili, jestli odesílané zprávy dělají cestu do IoT Central.

Pomocí následujících příkazů se přihlaste k předplatnému, ve kterém máte aplikaci IoT Central:

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

Pokud chcete monitorovat telemetrii, která zařízení odesílá, použijte následující příkaz:

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

Pokud se zařízení úspěšně připojilo ke službě IoT Central, zobrazí se výstup podobný následujícímu příkladu:

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

Pokud chcete monitorovat aktualizace vlastností, které zařízení vyměňuje se službou IoT Central, použijte následující příkaz preview:

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

Pokud zařízení úspěšně odesílá aktualizace vlastností, zobrazí se výstup podobný následujícímu příkladu:

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

Pokud se v terminálu zobrazí data, data se z ní dělají až do vaší aplikace IoT Central.

Pokud se po několika minutách nezobrazí žádná data, zkuste stisknout klávesu Enter nebo return klávesu na klávesnici pro případ, že se výstup zasekne.

Pokud se v terminálu stále nezobrazují žádná data, je pravděpodobné, že vaše zařízení má problémy s připojením k síti nebo že data do IoT Central neodesílá správně.

Kontrola stavu zřizování zařízení

Pokud se vaše data nezobrazují v monitorování rozhraní příkazového řádku, zkontrolujte stav zřizování zařízení spuštěním následujícího příkazu:

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

Následující výstup ukazuje příklad zařízení, které blokuje připojení:

{
  "@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
  }
}
Stav zřizování zařízení Popis Možné zmírnění rizik
Zřízené Žádný okamžitě rozpoznatelný problém.
Registrováno Zařízení se ještě nepřipojilo ke službě IoT Central. Zkontrolujte problémy s připojením v protokolech zařízení.
Blokované Zařízení se zablokuje v připojení k IoT Central. Zařízení se zablokuje v připojení k aplikaci IoT Central. Odblokujte zařízení v IoT Central a zkuste to znovu. Další informace najdete v tématu Hodnoty stavu zařízení.
Neschváleno Zařízení není schválené. Zařízení není schváleno pro připojení k aplikaci IoT Central. Schvalte zařízení v IoT Central a zkuste to znovu. Další informace najdete v tématu Hodnoty stavu zařízení.
Nepřiřazeno Zařízení není přiřazené k šabloně zařízení. Přiřaďte zařízení k šabloně zařízení, aby Služba IoT Central věděla, jak analyzovat data.

Přečtěte si další informace o hodnotách stavu zařízení v uživatelském rozhraní a stavových hodnotách zařízení v rozhraní REST API.

Kódy chyb

Pokud stále nemůžete diagnostikovat, proč se vaše data nezobrazují monitor-events, v dalším kroku najdete kódy chyb hlášené zařízením.

Spusťte na zařízení ladicí relaci nebo shromážděte protokoly z vašeho zařízení. Zkontrolujte všechny kódy chyb, které zařízení hlásí.

V následujících tabulkách jsou uvedené běžné kódy chyb a možné akce, které je možné zmírnit.

Pokud dochází k problémům souvisejícím s tokem ověřování:

Kód chyby Popis Možné zmírnění rizik
400 Text požadavku není platný. Nelze ho například analyzovat nebo objekt nelze ověřit. Ujistěte se, že odesíláte správný text požadavku jako součást toku ověření identity, nebo použijte sadu SDK zařízení.
401 Autorizační token nejde ověřit. Platnost vypršela nebo se nevztahuje na identifikátor URI požadavku. Tento kód chyby se také vrátí do zařízení jako součást toku ověření identity TPM. Ujistěte se, že vaše zařízení má správné přihlašovací údaje.
404 Instance služby Device Provisioning nebo prostředek, jako je například registrace, neexistuje. Vytvořte lístek se zákaznickou podporou.
412 V ETag požadavku se neshoduje s ETag existujícím prostředkem podle RFC7232. Vytvořte lístek se zákaznickou podporou.
429 Služba je operace omezování. Konkrétní limity služeb najdete v tématu Omezení služby IoT Hub Device Provisioning. Snižte frekvenci zpráv a rozdělte zodpovědnosti mezi více zařízení.
500 Došlo k vnitřní chybě. Vytvořte lístek se zákaznickou podporou a zjistěte, jestli vám může pomoct dál.

Podrobné kódy chyb autorizace

Chyba Kód dílčí chyby Notes
401 – Neautorizováno 401002 Zařízení používá neplatné nebo prošlé přihlašovací údaje. DpS hlásí tuto chybu.
401 – Neautorizováno 400209 Zařízení buď čeká na schválení operátorem, nebo ho operátor zablokoval.
401 IoTHubUnauthorized Zařízení používá token zabezpečení s vypršenou platností. IoT Hub hlásí tuto chybu.
401 IoTHubUnauthorized DEVICE_DISABLED Zařízení je v tomto centru IoT zakázané a přesunulo se do jiného centra IoT. Znovu zřízení zařízení.
401 IoTHubUnauthorized DEVICE_BLOCKED Operátor toto zařízení zablokoval.

Kódy chyb nahrávání souborů

Tady je seznam běžných kódů chyb, které se můžou zobrazit, když se zařízení pokusí nahrát soubor do cloudu. Nezapomeňte, že než zařízení může nahrát soubor, musíte nakonfigurovat nahrávání souborů zařízení ve vaší aplikaci.

Kód chyby Popis Možné zmírnění rizik
403006 Překročili jste počet souběžných operací nahrávání souborů. Každý klient zařízení je omezený na 10 souběžných nahrávání souborů. Ujistěte se, že zařízení okamžitě upozorní IoT Central, že se dokončila operace nahrávání souborů. Pokud to nepomůže, zkuste zkrátit časový limit požadavku.

Problémy s nemodelovanými daty

Když zjistíte, že vaše zařízení odesílá data do IoT Central, dalším krokem je zajistit, aby vaše zařízení odesílal data v platném formátu.

Pokud chcete zjistit kategorie, ve kterých se váš problém nachází, spusťte nejvhodnější příkaz Azure CLI pro váš scénář:

  • K ověření telemetrie použijte příkaz Preview:

    az iot central diagnostics validate-messages --app-id <iot-central-app-id> --device-id <device-name>
    
  • Pokud chcete ověřit aktualizace vlastností, použijte příkaz Preview:

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

Při prvním spuštění validate příkazu se může zobrazit výzva k instalaci uamqp knihovny.

Mezi tři běžné typy problémů, které způsobují, že se data zařízení ve službě IoT Central nezobrazují, jsou:

  • Neshoda dat zařízení v šabloně zařízení.
  • Data jsou neplatná ve formátu JSON.
  • Staré verze IoT Edge způsobují nesprávné zobrazení telemetrie ze součástí jako nemodelovaná data.

Neshoda dat zařízení v šabloně zařízení

Zařízení musí používat stejný název a velikost písmen jako v šabloně zařízení pro všechny názvy polí telemetrie v datové části, které odesílá. Následující výstup ukazuje ukázkovou zprávu s upozorněním, kdy zařízení odesílá hodnotu telemetrie, Temperaturekdy má být 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']}'. 

Zařízení musí používat stejný název a velikost písmen jako v šabloně zařízení pro názvy vlastností v datové části, které odesílá. Následující výstup ukazuje ukázkovou zprávu upozornění, ve které není vlastnost osVersion definovaná v šabloně zařízení:

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

Zařízení musí používat datové typy definované v šabloně zařízení pro všechny hodnoty telemetrie nebo vlastností. Pokud je například typ definovaný v šabloně zařízení logický, ale zařízení odešle řetězec. Následující výstup ukazuje ukázkovou chybovou zprávu, kdy zařízení používá řetězcovou hodnotu pro vlastnost definovanou jako double:

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

Ověřovací příkazy také hlásí chybu, pokud je stejný název telemetrie definovaný ve více rozhraních, ale zařízení není kompatibilní s IoT technologie Plug and Play.

Pokud dáváte přednost použití grafického uživatelského rozhraní, pomocí zobrazení dat IoT Central Raw zjistěte, jestli se něco nemodeluje.

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

Když zjistíte problém, možná budete muset aktualizovat firmware zařízení nebo vytvořit novou šablonu zařízení, která modeluje dříve nemodelovaná data.

Pokud jste se rozhodli vytvořit novou šablonu, která modeluje data správně, migrujte zařízení ze staré šablony do nové šablony. Další informace najdete v tématu Správa zařízení v aplikaci Azure IoT Central.

Neplatný kód JSON

Pokud se neoznamují žádné chyby, ale nezobrazuje se hodnota, je pravděpodobně chybný JSON v datové části, kterou zařízení odesílá. Další informace najdete v tématu Telemetrie, vlastnost a datové části příkazů.

Příkazy ověření ani nezpracované zobrazení dat v uživatelském rozhraní nemůžete použít ke zjištění, jestli zařízení odesílá poškozený formát JSON.

Verze služby IoT Edge

Pokud chcete zobrazit telemetrii ze součástí hostovaných v modulech IoT Edge správně, použijte IoT Edge verze 1.2.4 nebo novější. Pokud používáte starší verzi, telemetrie ze součástí v modulech IoT Edge se zobrazí jako _unmodeleddata.

Problémy se spravovanou identitou exportu dat

Ke autorizaci připojení k cíli exportu používáte spravovanou identitu. Data nepřicházejí do cíle exportu.

Před konfigurací nebo povolením cíle exportu se ujistěte, že jste dokončili následující kroky:

  • Povolte spravovanou identitu pro aplikaci IoT Central. Pokud chcete ověřit, že je spravovaná identita povolená, přejděte na stránku Identita vaší aplikace na webu Azure Portal nebo použijte následující příkaz rozhraní příkazového řádku:

    az iot central app identity show --name {your app name} --resource-group {your resource group name}
    
  • Nakonfigurujte oprávnění pro spravovanou identitu. Pokud chcete zobrazit přiřazená oprávnění, vyberte přiřazení rolí Azure na stránce Identita vaší aplikace na webu Azure Portal nebo použijte příkaz rozhraní příkazového az role assignment list řádku. Požadovaná oprávnění jsou:

    Cíl Oprávnění
    Azure Blob Storage Přispěvatel dat objektů blob úložiště
    Azure Service Bus Odesílatel dat Azure Service Bus
    Azure Event Hubs Odesílatel dat služby Azure Event Hubs
    Průzkumník dat Azure správce

    Pokud se oprávnění před vytvořením cíle v aplikaci IoT Central nenastavila správně, zkuste cíl odebrat a pak ho znovu přidat.

  • Nakonfigurujte všechny virtuální sítě, privátní koncové body a zásady brány firewall.

Poznámka:

Pokud ke autorizaci připojení k cíli exportu používáte spravovanou identitu, IoT Central neexportuje data ze simulovaných zařízení.

Další informace najdete v tématu Export dat.

Problémy s cílovým připojením k exportu dat

Stránka definice exportu zobrazuje informace o neúspěšných připojeních k cíli exportu:

Screenshot that shows an example export error.

Problémy s chybějícími daty exportu dat

Export dat exportuje jenom data, která dorazí do vaší aplikace po povolení exportu dat. Pokud potřebujete exportovat historická data nebo data, která se vynechala, když byl export dat dočasně vypnutý, můžete k dotazování na telemetrii zařízení použít rozhraní IOT Central REST API. Pomocí dotazu načtěte chybějící data a pak přidejte data do cíle exportu. Další informace najdete v tématu Použití rozhraní IoT Central REST API k dotazování zařízení.

Další kroky

Pokud potřebujete další pomoc, můžete kontaktovat odborníky na Azure na fórech Microsoft Q&A a Stack Overflow. Alternativně můžete podat lístek podpora Azure.

Další informace najdete v tématu Podpora Azure IoT a možnosti nápovědy.