Dela via


Felsökning i Azure IoT Central

Den här artikeln innehåller felsökningsvägledning för problem med enhetsanslutningar och konfigurationsproblem med dataexport i dina IoT Central-program.

Problem med enhetsanslutning

Det här avsnittet hjälper dig att avgöra om dina data når IoT Central.

Om du inte redan har gjort det installerar az cli du verktyget och azure-iot tillägget.

Information om hur du installerar finns az clii Installera Azure CLI.

Kör följande kommando för att installera azure-iot tillägget:

az extension add --name azure-iot

Kommentar

Du kan uppmanas att installera uamqp biblioteket första gången du kör ett tilläggskommando.

När du har installerat azure-iot tillägget startar du enheten för att se om meddelandena som skickas är på väg till IoT Central.

Använd följande kommandon för att logga in prenumerationen där du har ditt IoT Central-program:

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

Om du vill övervaka telemetrin som enheten skickar använder du följande kommando:

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

Om enheten har anslutits till IoT Central visas utdata som liknar följande exempel:

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

Om du vill övervaka de egenskapsuppdateringar som enheten utbyter med IoT Central använder du följande förhandsgranskningskommando:

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

Om enheten skickar egenskapsuppdateringar visas utdata som liknar följande exempel:

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

Om du ser att data visas i terminalen går data så långt som till ditt IoT Central-program.

Om du inte ser några data visas efter några minuter kan du prova att trycka på tangenten Enter eller return på tangentbordet om utdata fastnar.

Om du fortfarande inte ser några data på terminalen är det troligt att enheten har problem med nätverksanslutningen eller inte skickar data korrekt till IoT Central.

Kontrollera enhetens etableringsstatus

Om dina data inte visas i CLI-övervakaren kontrollerar du enhetens etableringsstatus genom att köra följande kommando:

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

Följande utdata visar ett exempel på en enhet som har blockerats från att ansluta:

{
  "@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
  }
}
Status för enhetsetablering beskrivning Möjlig åtgärd
Etablerad Inget omedelbart igenkännbart problem. Ej tillämpligt
Registrerat Enheten har ännu inte anslutit till IoT Central. Kontrollera om det finns anslutningsproblem i enhetsloggarna.
Spärrad Enheten blockeras från att ansluta till IoT Central. Enheten blockeras från att ansluta till IoT Central-programmet. Avblockera enheten i IoT Central och försök igen. Mer information finns i Enhetsstatusvärden.
Icke godkänd Enheten är inte godkänd. Enheten är inte godkänd för att ansluta till IoT Central-programmet. Godkänn enheten i IoT Central och försök igen. Mer information finns i Enhetsstatusvärden
Ej tilldelad Enheten är inte tilldelad till en enhetsmall. Tilldela enheten till en enhetsmall så att IoT Central vet hur du parsar data.

Läs mer om enhetsstatusvärden i UI - och enhetsstatusvärdena i REST-API:et.

Felkoder

Om du fortfarande inte kan diagnostisera varför dina data inte visas i monitor-eventsär nästa steg att leta efter felkoder som rapporterats av enheten.

Starta en felsökningssession på enheten eller samla in loggar från enheten. Sök efter eventuella felkoder som enheten rapporterar.

I följande tabeller visas vanliga felkoder och möjliga åtgärder för att minimera.

Om du ser problem som rör ditt autentiseringsflöde:

Felkod beskrivning Möjlig åtgärd
400 Brödtexten i begäran är inte giltig. Det kan till exempel inte parsas eller så kan objektet inte verifieras. Kontrollera att du skickar rätt begärandetext som en del av attesteringsflödet eller använd en enhets-SDK.
401 Det går inte att verifiera auktoriseringstoken. Den har till exempel upphört att gälla eller gäller inte för begärans URI. Den här felkoden returneras också till enheter som en del av TPM-attesteringsflödet. Kontrollera att enheten har rätt autentiseringsuppgifter.
404 Instansen av enhetsetableringstjänsten eller en resurs som en registrering finns inte. Skicka in ett ärende till kundsupporten.
412 I ETag begäran matchar inte den befintliga resursen ETag enligt RFC7232. Skicka in ett ärende till kundsupporten.
429 Tjänsten är begränsningsåtgärder. Specifika tjänstbegränsningar finns i IoT Hub Enhetsetableringstjänstbegränsningar. Minska meddelandefrekvensen, dela upp ansvarsområden mellan fler enheter.
500 Ett internt fel uppstod. Skicka ett ärende till kundsupporten för att se om de kan hjälpa dig ytterligare.

Detaljerade felkoder för auktorisering

Fel Kod för underfel Kommentar
401 – Ej behörig 401002 Enheten använder ogiltiga eller utgångna autentiseringsuppgifter. DPS rapporterar det här felet.
401 – Ej behörig 400209 Enheten väntar antingen på godkännande av en operatör eller så har en operatör blockerat den.
401 IoTHub Obehörig Enheten använder en säkerhetstoken som har upphört att gälla. IoT Hub rapporterar det här felet.
401 IoTHub Obehörig DEVICE_DISABLED Enheten är inaktiverad i den här IoT-hubben och har flyttats till en annan IoT-hubb. Återskapa enheten.
401 IoTHub Obehörig DEVICE_BLOCKED En operatör har blockerat den här enheten.

Felkoder för filuppladdning

Här är en lista över vanliga felkoder som du kan se när en enhet försöker ladda upp en fil till molnet. Kom ihåg att innan enheten kan ladda upp en fil måste du konfigurera uppladdningar av enhetsfiler i programmet.

Felkod beskrivning Möjlig åtgärd
403006 Du har överskridit antalet samtidiga filuppladdningsåtgärder. Varje enhetsklient är begränsad till 10 samtidiga filuppladdningar. Kontrollera att enheten omedelbart meddelar IoT Central att filuppladdningsåtgärden har slutförts. Om det inte fungerar kan du försöka minska tidsgränsen för begäran.

Problem med odefinierade data

När du har fastställt att enheten skickar data till IoT Central är nästa steg att se till att enheten skickar data i ett giltigt format.

Om du vill identifiera vilka kategorier problemet finns i kör du det lämpligaste Azure CLI-kommandot för ditt scenario:

  • Om du vill verifiera telemetri använder du förhandsgranskningskommandot:

    az iot central diagnostics validate-messages --app-id <iot-central-app-id> --device-id <device-name>
    
  • Om du vill verifiera egenskapsuppdateringar använder du förhandsgranskningskommandot:

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

Du kan uppmanas att installera uamqp biblioteket första gången du kör ett validate kommando.

De tre vanliga typerna av problem som gör att enhetsdata inte visas i IoT Central är:

  • Enhetsmall till matchningsfel för enhetsdata.
  • Data är ogiltiga JSON.
  • Gamla versioner av IoT Edge gör att telemetri från komponenter visas felaktigt som odefinierade data.

Felmatchning av enhetsmall till enhetsdata

En enhet måste använda samma namn och hölje som används i enhetsmallen för alla telemetrifältnamn i nyttolasten som den skickar. Följande utdata visar ett exempel på ett varningsmeddelande där enheten skickar ett telemetrivärde med namnet Temperature, när det ska vara 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']}'. 

En enhet måste använda samma namn och hölje som används i enhetsmallen för alla egenskapsnamn i nyttolasten som den skickar. Följande utdata visar ett exempel på ett varningsmeddelande där egenskapen osVersion inte har definierats i enhetsmallen:

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

En enhet måste använda de datatyper som definierats i enhetsmallen för telemetri- eller egenskapsvärden. Du ser till exempel ett schemafel om den typ som definierats i enhetsmallen är boolesk, men enheten skickar en sträng. Följande utdata visar ett exempel på ett felmeddelande där enheten använder ett strängvärde för en egenskap som definieras som en dubbel:

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

Valideringskommandona rapporterar också ett fel om samma telemetrinamn definieras i flera gränssnitt, men enheten inte är IoT Plug and Play-kompatibel.

Om du föredrar att använda ett GUI använder du IoT Central Raw-datavyn för att se om något inte modelleras.

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

När du har identifierat problemet kan du behöva uppdatera enhetens inbyggda programvara eller skapa en ny enhetsmall som modellerar tidigare odefinierade data.

Om du väljer att skapa en ny mall som modellerar data korrekt migrerar du enheter från den gamla mallen till den nya mallen. Mer information finns i Hantera enheter i ditt Azure IoT Central-program.

Ogiltig JSON

Om inga fel rapporteras, men ett värde inte visas, är det förmodligen felaktigt JSON i nyttolasten som enheten skickar. Mer information finns i Telemetri, egenskap och kommandonyttolaster.

Du kan inte använda verifieringskommandona eller vyn Rådata i användargränssnittet för att identifiera om enheten skickar felaktigt JSON.

IoT Edge-version

Om du vill visa telemetri från komponenter som finns i IoT Edge-moduler korrekt använder du IoT Edge version 1.2.4 eller senare. Om du använder en tidigare version visas telemetri från komponenter i IoT Edge-moduler som _unmodeleddata.

Problem med hanterad identitet för dataexport

Du använder en hanterad identitet för att auktorisera anslutningen till ett exportmål. Data kommer inte till exportmålet.

Innan du konfigurerar eller aktiverar exportmålet kontrollerar du att du slutför följande steg:

  • Aktivera den hanterade identiteten för IoT Central-programmet. Om du vill kontrollera att den hanterade identiteten är aktiverad går du till identitetssidan för ditt program i Azure-portalen eller använder följande CLI-kommando:

    az iot central app identity show --name {your app name} --resource-group {your resource group name}
    
  • Konfigurera behörigheterna för den hanterade identiteten. Om du vill visa de tilldelade behörigheterna väljer du Azure-rolltilldelningar på identitetssidan för din app i Azure-portalen eller använder az role assignment list CLI-kommandot. De behörigheter som krävs är:

    Mål Behörighet
    Azure Blob Storage Storage Blob datadeltagare
    Azure Service Bus Azure Service Bus Data Sender
    Azure Event Hubs Azure Event Hubs Data Sender
    Öppna Azure-datautforskaren Administratör

    Om behörigheterna inte har angetts korrekt innan du skapade målet i ditt IoT Central-program kan du prova att ta bort målet och sedan lägga till det igen.

  • Konfigurera virtuella nätverk, privata slutpunkter och brandväggsprinciper.

Kommentar

Om du använder en hanterad identitet för att auktorisera anslutningen till ett exportmål exporterar inte IoT Central data från simulerade enheter.

Mer information finns i Exportera data.

Problem med dataexportmålanslutning

Sidan exportdefinition visar information om misslyckade anslutningar till exportmålet:

Screenshot that shows an example export error.

Problem med dataexport som saknas

Dataexport exporterar endast data som tas emot i ditt program när du har aktiverat dataexport. Om du behöver exportera historiska data eller data som missades när dataexporten tillfälligt stängdes av kan du använda REST-API:et för IoT Central för att fråga efter enhetstelemetri. Använd en fråga för att hämta saknade data och lägg sedan till data i exportmålet. Mer information finns i Så här använder du REST-API:et för IoT Central för att fråga enheter.

Nästa steg

Om du behöver mer hjälp kan du kontakta Azure-experterna på Microsoft Q&A- och Stack Overflow-forumen. Du kan också skicka in ett Azure-supportärende.

Mer information finns i Support- och hjälpalternativ för Azure IoT.