Share via


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 clivan 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.

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

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:

Screenshot that shows an example export error.

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.