Řešení potíží v případě nezobrazování dat ze zařízení v Azure IoT Central

Tento dokument vám pomůže zjistit, proč se data, která vaše zařízení odesílají do IoT Central, nemusí v aplikaci zobrazovat.

Existují dvě hlavní oblasti, které je potřeba prozkoumat:

  • Problémy s připojením zařízení
    • Problémy s ověřováním, jako je například zařízení, má neplatné přihlašovací údaje
    • Problémy se síťovým připojením
    • Zařízení není schválené nebo blokované
  • Problémy s obrazcem datové části zařízení

Tento průvodce odstraňováním potíží se zaměřuje na problémy s připojením zařízení a problémy s tvarem datové části zařízení.

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

Tato část vám pomůže určit, jestli vaše data dosáhnou 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.

Rozšíření nainstalujeteazure-iot spuštěním následujícího příkazu:

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 zprávy, které odesílá, přesměrovávají 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 <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:

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é vaše 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 <app-id> --device-id <device-name>

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

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 z něj činí až do vaší aplikace IoT Central.

Pokud se po několika minutách nezobrazí žádná data, zkuste stisknout klávesu nebo return klávesu Enter na klávesnici, pokud je výstup zablokovaný.

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

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

Pokud se vaše data na monitoru nezobrazují, 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 <app-id> --device-id <device-name>

Následující výstup ukazuje příklad zařízení, které je blokované při připojování:

{
  "@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í Description Možné zmírnění rizik
Zřízené Žádný okamžitě rozpoznatelný problém.
Registrované Zařízení ještě není připojené k 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 blokuje 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álené Zařízení není schváleno. Zařízení není schválené 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í.
Unassigned Zařízení není přiřazené k šabloně zařízení. Přiřaďte zařízení k šabloně zařízení, aby IoT Central věděla, jak analyzovat data.

Přečtěte si další informace o hodnotách stavu zařízení.

Kódy chyb

Pokud stále nemůžete diagnostikovat, proč se vaše data nezobrazují monitor-events, je dalším krokem vyhledání kódů chyb hlášených 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é se mají zmírnit.

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

Kód chyby Description Možné zmírnění rizik
400 Text požadavku není platný. Nelze ho například analyzovat nebo nelze ověřit objekt. Ujistěte se, že odesíláte správný text požadavku jako součást toku ověření identity nebo používáte sadu SDK zařízení.
401 Autorizační token nelze 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 ETag s existujícím prostředkem, jak je uvedeno v dokumentu RFC7232. Vytvořte lístek se zákaznickou podporou.
429 Služba omezuje operace. Konkrétní limity služeb najdete v tématu IoT Hub omezení služby 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 zákaznické podpory a zjistěte, jestli vám může pomoct.

Podrobné kódy chyb autorizace

Chyba Kód dílčí chyby Poznámky
401 – Neautorizováno 401002 Zařízení používá neplatné nebo prošlé přihlašovací údaje. Tato chyba je hlášena službou DPS.
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í, jehož platnost vypršela. Tato chyba je hlášena IoT Hub.
401 IoTHubUnauthorized DEVICE_DISABLED Zařízení je v tomto centru IoT zakázané a přesunulo se do jiného centra IoT. Znovu zřiďte 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 Description 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ž jste nastavili, že vaše zařízení odesílá data do IoT Central, dalším krokem je zajistit, aby vaše zařízení odesílala data v platném formátu.

Pokud chcete zjistit, ve kterých kategorií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 <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 <app-id> --device-id <device-name>
    

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

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

  • Šablona zařízení s neshodou dat 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í pomocí šablony 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, ve které zařízení odesílá telemetrická hodnota, Temperaturekdyž by měla 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 všechny 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ý, zobrazí se například neshoda schématu, ale zařízení odešle řetězec. Následující výstup ukazuje ukázkovou chybovou zprávu, ve které zařízení používá řetězcovou hodnotu vlastnosti definované 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í IoT Plug and Play kompatibilní.

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 of Raw Data view

Když zjistíte problém, budete možná 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 nejsou hlášeny žádné chyby, ale hodnota se nezobrazuje, je pravděpodobně chybný JSON v datové části, kterou zařízení odešle. Další informace najdete v tématu Telemetrie, vlastnosti a datové části příkazů.

Pomocí příkazů ověření nebo zobrazení nezpracovaných dat v uživatelském rozhraní nemůžete zjistit, jestli zařízení odesílá poškozený kód JSON.

Verze služby IoT Edge

Pokud chcete zobrazit telemetrii ze součástí hostovaných v IoT Edge modulech 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.

Další kroky

Pokud potřebujete další pomoc, můžete kontaktovat odborníky na Azure na fórech Microsoft QA& a Stack Overflow. Případně můžete zadat lístek podpora Azure.

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