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 cli
i 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.
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:
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.