Problemen oplossen in Azure IoT Central
Dit artikel bevat richtlijnen voor het oplossen van problemen met apparaatconnectiviteit en configuratieproblemen met gegevensexport in uw IoT Central-toepassingen.
Problemen met apparaatconnectiviteit
In deze sectie kunt u bepalen of uw gegevens IoT Central bereiken.
Als u dit nog niet hebt gedaan, installeert u het hulpprogramma en azure-iot
de az cli
extensie.
Zie De Azure CLI installeren voor meer informatie over het installeren az cli
van de azure-CLI.
Voer de volgende opdracht uit om de azure-iot
extensie te installeren:
az extension add --name azure-iot
Notitie
U wordt mogelijk gevraagd om de bibliotheek te installeren wanneer u voor het uamqp
eerst een extensieopdracht uitvoert.
Wanneer u de azure-iot
extensie hebt geïnstalleerd, start u uw apparaat om te zien of de berichten die worden verzonden, naar IoT Central gaan.
Gebruik de volgende opdrachten om u aan te melden bij het abonnement waar u uw IoT Central-toepassing hebt:
az login
az account set --subscription <your-subscription-id>
Gebruik de volgende opdracht om de telemetrie te controleren die uw apparaat verzendt:
az iot central diagnostics monitor-events --app-id <iot-central-app-id> --device-id <device-name>
Als het apparaat is verbonden met IoT Central, ziet u uitvoer die vergelijkbaar is met het volgende voorbeeld:
Monitoring telemetry.
Filtering on device: device-001
{
"event": {
"origin": "device-001",
"module": "",
"interface": "",
"component": "",
"payload": {
"temp": 65.57910343679293,
"humid": 36.16224660107426
}
}
}
Gebruik de volgende preview-opdracht om de updates van de eigenschap te controleren die uw apparaat uitwisselt met IoT Central:
az iot central diagnostics monitor-properties --app-id <iot-central-app-id> --device-id <device-name>
Als het apparaat eigenschappenupdates heeft verzonden, ziet u uitvoer die vergelijkbaar is met het volgende voorbeeld:
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'}
Als er gegevens worden weergegeven in uw terminal, worden de gegevens tot uw IoT Central-toepassing gemaakt.
Als er na een paar minuten geen gegevens worden weergegeven, drukt u op de Enter
toets of return
toets op het toetsenbord als de uitvoer vastloopt.
Als er nog steeds geen gegevens worden weergegeven in uw terminal, is het waarschijnlijk dat uw apparaat problemen ondervindt met de netwerkverbinding of dat er geen gegevens correct naar IoT Central worden verzonden.
De inrichtingsstatus van uw apparaat controleren
Als uw gegevens niet worden weergegeven in de CLI-monitor, controleert u de inrichtingsstatus van uw apparaat door de volgende opdracht uit te voeren:
az iot central device registration-info --app-id <iot-central-app-id> --device-id <device-name>
In de volgende uitvoer ziet u een voorbeeld van een apparaat dat geen verbinding kan maken:
{
"@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
}
}
Inrichtingsstatus van apparaat | Beschrijving | Mogelijke risicobeperking |
---|---|---|
Ingericht | Geen onmiddellijk herkenbaar probleem. | N.v.t. |
Geregistreerd | Het apparaat is nog niet verbonden met IoT Central. | Controleer de apparaatlogboeken op connectiviteitsproblemen. |
Geblokkeerd | Het apparaat kan geen verbinding maken met IoT Central. | Het apparaat kan geen verbinding maken met de IoT Central-toepassing. Deblokker het apparaat in IoT Central en probeer het opnieuw. Zie Apparaatstatuswaarden voor meer informatie. |
Niet-goedgekeurd | Het apparaat is niet goedgekeurd. | Het apparaat is niet goedgekeurd om verbinding te maken met de IoT Central-toepassing. Keur het apparaat in IoT Central goed en probeer het opnieuw. Zie Apparaatstatuswaarden voor meer informatie |
Niet-toegewezen | Het apparaat is niet toegewezen aan een apparaatsjabloon. | Wijs het apparaat toe aan een apparaatsjabloon, zodat IoT Central weet hoe de gegevens moeten worden geparseerd. |
Meer informatie over apparaatstatuswaarden in de gebruikersinterface en apparaatstatuswaarden in de REST API.
Foutcodes
Als u nog steeds geen diagnose kunt stellen waarom uw gegevens niet worden weergegeven monitor-events
, zoekt u in de volgende stap naar foutcodes die door uw apparaat zijn gerapporteerd.
Start een foutopsporingssessie op uw apparaat of verzamel logboeken van uw apparaat. Controleer op eventuele foutcodes die door het apparaat worden gerapporteerd.
In de volgende tabellen worden de algemene foutcodes en mogelijke acties weergegeven die u kunt beperken.
Als u problemen ondervindt met betrekking tot uw verificatiestroom:
Foutcode | Beschrijving | Mogelijke beperking |
---|---|---|
400 | De hoofdtekst van de aanvraag is niet geldig. Het kan bijvoorbeeld niet worden geparseerd of het object kan niet worden gevalideerd. | Zorg ervoor dat u de juiste aanvraagbody verzendt als onderdeel van de attestation-stroom of gebruik een apparaat-SDK. |
401 | Het autorisatietoken kan niet worden gevalideerd. Het is bijvoorbeeld verlopen of is niet van toepassing op de URI van de aanvraag. Deze foutcode wordt ook geretourneerd naar apparaten als onderdeel van de TPM-attestation-stroom. | Zorg ervoor dat uw apparaat de juiste referenties heeft. |
404 | Het Device Provisioning Service-exemplaar of een resource zoals een inschrijving bestaat niet. | Dien een ticket in bij de klantondersteuning. |
412 | De ETag in de aanvraag komt niet overeen met de ETag bestaande resource, volgens RFC7232. |
Dien een ticket in bij de klantondersteuning. |
429 | De service beperkt bewerkingen. Zie IoT Hub Device Provisioning Service-limieten voor specifieke servicelimieten. | Beperk de berichtfrequentie, splits verantwoordelijkheden tussen meer apparaten. |
500 | Er is een interne fout opgetreden. | Dien een ticket in bij de klantondersteuning om te zien of ze u verder kunnen helpen. |
Gedetailleerde autorisatiefoutcodes
Error | Subfoutcode | Opmerkingen |
---|---|---|
401 Onbevoegd | 401002 | Het apparaat gebruikt ongeldige of verlopen referenties. DPS rapporteert deze fout. |
401 Onbevoegd | 400209 | Het apparaat wacht op goedkeuring door een operator of een operator heeft het geblokkeerd. |
401 IoTHubUnauthorized | Het apparaat gebruikt verlopen beveiligingstoken. IoT Hub rapporteert deze fout. | |
401 IoTHubUnauthorized | DEVICE_DISABLED | Het apparaat is uitgeschakeld in deze IoT-hub en is verplaatst naar een andere IoT-hub. Het apparaat opnieuw inrichten. |
401 IoTHubUnauthorized | DEVICE_BLOCKED | Een operator heeft dit apparaat geblokkeerd. |
Foutcodes voor het uploaden van bestanden
Hier volgt een lijst met veelvoorkomende foutcodes die u kunt zien wanneer een apparaat probeert een bestand te uploaden naar de cloud. Houd er rekening mee dat u voordat uw apparaat een bestand kan uploaden, het uploaden van apparaatbestanden in uw toepassing moet configureren.
Foutcode | Beschrijving | Mogelijke beperking |
---|---|---|
403006 | U hebt het aantal gelijktijdige bestandsuploadbewerkingen overschreden. Elke apparaatclient is beperkt tot 10 gelijktijdige bestandsuploads. | Zorg ervoor dat het apparaat ioT Central prompt informeert dat de bestandsuploadbewerking is voltooid. Als dat niet werkt, vermindert u de time-out van de aanvraag. |
Problemen met niet-gemodellereerde gegevens
Wanneer u hebt vastgesteld dat uw apparaat gegevens naar IoT Central verzendt, is de volgende stap ervoor te zorgen dat uw apparaat gegevens in een geldige indeling verzendt.
Als u wilt detecteren in welke categorieën uw probleem zich bevindt, voert u de meest geschikte Azure CLI-opdracht uit voor uw scenario:
Gebruik de preview-opdracht om telemetrie te valideren:
az iot central diagnostics validate-messages --app-id <iot-central-app-id> --device-id <device-name>
Gebruik de preview-opdracht om eigenschapsupdates te valideren:
az iot central diagnostics validate-properties --app-id <iot-central-app-id> --device-id <device-name>
Mogelijk wordt u gevraagd om de bibliotheek te installeren wanneer u een validate
opdracht voor het uamqp
eerst uitvoert.
De drie veelvoorkomende typen problemen die ervoor zorgen dat apparaatgegevens niet worden weergegeven in IoT Central, zijn:
- Apparaatsjabloon voor niet-overeenkomende apparaatgegevens.
- Gegevens zijn ongeldige JSON.
- Oude versies van IoT Edge zorgen ervoor dat telemetrie van onderdelen onjuist wordt weergegeven als niet-gemodelleerde gegevens.
Apparaatsjabloon voor niet-overeenkomende apparaatgegevens
Een apparaat moet dezelfde naam en behuizing gebruiken als in de apparaatsjabloon voor alle namen van telemetrievelden in de nettolading die het verzendt. In de volgende uitvoer ziet u een voorbeeld van een waarschuwingsbericht waarin het apparaat een telemetriewaarde verzendt met de naam Temperature
, wanneer het moet zijn 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']}'.
Een apparaat moet dezelfde naam en behuizing gebruiken als in de apparaatsjabloon voor alle eigenschapsnamen in de nettolading die het verzendt. In de volgende uitvoer ziet u een voorbeeld van een waarschuwingsbericht waarin de eigenschap osVersion
niet is gedefinieerd in de apparaatsjabloon:
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']}'.
Een apparaat moet de gegevenstypen gebruiken die in de apparaatsjabloon zijn gedefinieerd voor telemetrie- of eigenschapswaarden. U ziet bijvoorbeeld dat een schema niet overeenkomt als het type dat is gedefinieerd in de apparaatsjabloon booleaanse waarde is, maar het apparaat een tekenreeks verzendt. In de volgende uitvoer ziet u een voorbeeld van een foutbericht waarbij het apparaat een tekenreekswaarde gebruikt voor een eigenschap die is gedefinieerd als een dubbele waarde:
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
Met de validatieopdrachten wordt ook een fout gerapporteerd als dezelfde telemetrienaam is gedefinieerd in meerdere interfaces, maar het apparaat niet compatibel is met IoT Plug en Play.
Als u liever een GUI gebruikt, gebruikt u de Gegevensweergave van IoT Central Raw om te zien of er iets niet wordt gemodelleerd.
Wanneer u het probleem hebt gedetecteerd, moet u mogelijk de firmware van het apparaat bijwerken of een nieuwe apparaatsjabloon maken die eerder niet-gemodelleerde gegevens modelleerde.
Als u ervoor kiest om een nieuwe sjabloon te maken waarmee de gegevens correct worden gemodelleerd, migreert u apparaten van uw oude sjabloon naar de nieuwe sjabloon. Zie Apparaten beheren in uw Azure IoT Central-toepassing voor meer informatie.
Ongeldige JSON
Als er geen fouten worden gerapporteerd, maar er geen waarde wordt weergegeven, is het waarschijnlijk onjuist ingedeelde JSON in de nettolading die het apparaat verzendt. Zie Voor meer informatie telemetrie, eigenschap en opdracht nettoladingen.
U kunt de validatieopdrachten of de weergave Onbewerkte gegevens in de gebruikersinterface niet gebruiken om te detecteren of het apparaat ongeldige JSON verzendt.
IoT Edge-versie
Als u telemetrie wilt weergeven van onderdelen die worden gehost in IoT Edge-modules, gebruikt u IoT Edge versie 1.2.4 of hoger. Als u een eerdere versie gebruikt, wordt telemetrie van onderdelen in IoT Edge-modules weergegeven als _unmodeleddata.
Problemen met beheerde identiteiten voor gegevensexport
U gebruikt een beheerde identiteit om de verbinding met een exportbestemming te autoriseren. Gegevens komen niet aan op de exportbestemming.
Voordat u de exportbestemming configureert of inschakelt, moet u de volgende stappen uitvoeren:
Schakel de beheerde identiteit in voor de IoT Central-toepassing. Als u wilt controleren of de beheerde identiteit is ingeschakeld, gaat u naar de pagina Identiteit voor uw toepassing in Azure Portal of gebruikt u de volgende CLI-opdracht:
az iot central app identity show --name {your app name} --resource-group {your resource group name}
Configureer de machtigingen voor de beheerde identiteit. Als u de toegewezen machtigingen wilt weergeven, selecteert u Azure-roltoewijzingen op de pagina Identiteit voor uw app in Azure Portal of gebruikt u de
az role assignment list
CLI-opdracht. De vereiste machtigingen zijn:Doel Machtiging Azure Blob Storage Inzender voor opslagblobgegevens Azure Service Bus Afzender van Azure Service Bus-gegevens Azure Event Hubs Azure Event Hubs-gegevenszender Azure Data Explorer Beheerder Als de machtigingen niet juist zijn ingesteld voordat u de bestemming in uw IoT Central-toepassing hebt gemaakt, verwijdert u de bestemming en voegt u deze opnieuw toe.
Configureer virtuele netwerken, privé-eindpunten en firewallbeleid.
Notitie
Als u een beheerde identiteit gebruikt om de verbinding met een exportbestemming te autoriseren, exporteert IoT Central geen gegevens van gesimuleerde apparaten.
Zie Gegevens exporteren voor meer informatie.
Verbindingsproblemen met doel van gegevensexport
Op de pagina exportdefinitie ziet u informatie over mislukte verbindingen met de exportbestemming:
Problemen met ontbrekende gegevensexport
Gegevensexport exporteert alleen gegevens die in uw toepassing binnenkomen nadat u gegevensexport hebt ingeschakeld. Als u historische gegevens of gegevens wilt exporteren die zijn gemist terwijl uw gegevensexport tijdelijk is uitgeschakeld, kunt u de REST API van IoT Central gebruiken om een query uit te voeren op telemetriegegevens van apparaten. Gebruik een query om de ontbrekende gegevens op te halen en voeg vervolgens de gegevens toe aan uw exportbestemming. Zie Voor meer informatie de IoT Central REST API gebruiken om query's uit te voeren op apparaten.
Volgende stappen
Als u meer hulp nodig hebt, kunt u contact opnemen met de Azure-experts op de Microsoft Q&A- en Stack Overflow-forums. U kunt ook een ondersteuning voor Azure ticket indienen.
Zie de ondersteunings- en helpopties van Azure IoT voor meer informatie.