Problembehandlung in Azure IoT Central

Dieser Artikel enthält Anleitungen zur Problembehandlung bei Problemen mit der Gerätekonnektivität und der Konfiguration des Datenexports in Ihren IoT Central-Anwendungen.

Probleme mit der Gerätekonnektivität

Dieser Abschnitt hilft Ihnen festzustellen, ob Ihre Daten IoT Central erreichen.

Sofern dies noch nicht erledigt ist, installieren Sie das Tool az cli und die Erweiterung azure-iot.

Informationen zur Installation von az cli finden Sie unter Installieren der Azure CLI.

Führen Sie zum Installieren der Erweiterung azure-iot den folgenden Befehl aus:

az extension add --name azure-iot

Hinweis

Wenn Sie zum ersten Mal einen Erweiterungsbefehl ausführen, werden Sie möglicherweise aufgefordert, die uamqp-Bibliothek zu installieren.

Wenn Sie die Erweiterung azure-iot installiert haben, starten Sie Ihr Gerät, um zu sehen, ob die von ihm gesendeten Nachrichten ihren Weg zu IoT Central finden.

Verwenden Sie die folgenden Befehle, um sich in dem Abonnement anzumelden, in dem sich Ihre IoT Central-Anwendung befindet:

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

Verwenden Sie den folgenden Befehl, um die vom Gerät gesendeten Telemetriedaten zu überwachen:

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

Wenn das Gerät erfolgreich mit IoT Central verbunden wurde, sehen Sie eine Ausgabe ähnlich dem folgenden Beispiel:

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

Um die Eigenschaftsaktualisierungen zu überwachen, die Ihr Gerät mit IoT Central austauscht, verwenden Sie den folgenden Vorschaubefehl:

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

Wenn das Gerät erfolgreich Eigenschaftsaktualisierungen sendet, wird eine Ausgabe ähnlich dem folgenden Beispiel angezeigt:

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

Wenn Sie sehen, dass Daten in Ihrem Terminal angezeigt werden, dann gelangen die Daten bis zu Ihrer IoT Central-Anwendung.

Wenn nach einigen Minuten keine Daten angezeigt werden, versuchen Sie, die Taste Enter oder return auf Ihrer Tastatur zu drücken, falls die Ausgabe blockiert ist.

Wenn auf Ihrem Terminal immer noch keine Daten angezeigt werden, ist es wahrscheinlich, dass Ihr Gerät Probleme mit der Netzwerkverbindung hat oder Daten nicht ordnungsgemäß an IoT Central sendet.

Überprüfen des Bereitstellungsstatus Ihres Geräts

Wenn Ihre Daten nicht auf dem CLI-Monitor angezeigt werden, überprüfen Sie den Bereitstellungsstatus Ihres Geräts, indem Sie den folgenden Befehl ausführen:

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

Die folgende Ausgabe zeigt ein Beispiel für ein Gerät, das für die Verbindung blockiert ist:

{
  "@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
  }
}
Gerätebereitstellungsstatus Beschreibung Mögliche Entschärfung
Bereitgestellt Kein sofort erkennbares Problem. N/V
Registriert Das Gerät hat noch keine Verbindung mit IoT Central hergestellt. Überprüfen Sie Ihre Geräteprotokolle auf Konnektivitätsprobleme.
Blockiert Das Gerät ist für die Verbindung mit IoT Central blockiert. Das Gerät kann sich nicht mit der IoT Central-Anwendung verbinden. Heben Sie die Blockierung des Geräts in IoT Central auf, und versuchen Sie es erneut. Weitere Informationen finden Sie unter Werte für den Gerätestatus.
Nicht genehmigt Das Gerät wurde nicht genehmigt. Das Gerät ist nicht für die Verbindung mit der IoT Central-Anwendung zugelassen. Genehmigen Sie das Gerät in IoT Central, und versuchen Sie es erneut. Weitere Informationen finden Sie unter Werte für den Gerätestatus.
Nicht zugewiesen Das Gerät ist keiner Gerätevorlage zugewiesen. Weisen Sie das Gerät einer Gerätevorlage zu, sodass IoT Central weiß, wie die Daten zu analysieren sind.

Erfahren Sie mehr über Gerätestatuswerte in der Benutzeroberfläche und Gerätestatuswerte in der REST API.

Fehlercodes

Wenn Sie immer noch nicht diagnostizieren können, warum Ihre Daten nicht in monitor-events angezeigt werden, besteht der nächste Schritt darin, nach Fehlercodes zu suchen, die von Ihrem Gerät gemeldet werden.

Starten Sie eine Debugsitzung auf Ihrem Gerät, oder erfassen Sie Protokolle von Ihrem Gerät. Prüfen Sie auf alle Fehlercodes, die das Gerät meldet.

Die folgenden Tabellen zeigen die häufigsten Fehlercodes und mögliche Maßnahmen zur Entschärfung.

Wenn Sie Probleme in Bezug auf Ihren Authentifizierungsfluss feststellen:

Fehlercode BESCHREIBUNG Mögliche Entschärfung
400 Der Text der Anforderung ist nicht gültig. Er kann z. B. nicht analysiert oder das Objekt nicht überprüft werden. Stellen Sie sicher, dass Sie die richtigen Anforderungen im Rahmen des Nachweisflusses senden, oder verwenden Sie ein Geräte-SDK.
401 Das Autorisierungstoken kann nicht überprüft werden. Es ist z. B. abgelaufen oder gilt nicht für die URI der Anforderung. Dieser Fehlercode wird auch im Rahmen des TPM-Nachweisvorgangs an Geräte zurückgegeben. Stellen Sie sicher, dass Ihr Gerät über die richtigen Anmeldeinformationen verfügt.
404 Die Device Provisioning Service-Instanz oder eine Ressource (z. B. eine Registrierung) ist nicht vorhanden. Beantragen Sie ein Ticket beim Kundensupport.
412 Gemäß RFC7232 entspricht das ETag in der Anforderung nicht dem ETag der vorhandenen Ressource. Beantragen Sie ein Ticket beim Kundensupport.
429 Der Dienst drosselt die Vorgänge. Informationen zu bestimmten Dienstgrenzwerten finden Sie unter Grenzwerte für den IoT Hub Device Provisioning-Dienst. Verringern Sie die Nachrichtenhäufigkeit, teilen Sie die Verantwortlichkeiten auf mehrere Geräte auf.
500 Interner Fehler. Beantragen Sie ein Ticket beim Kundensupport, um zu sehen, ob dieser Ihnen weiterhelfen kann.

Detaillierte Autorisierungsfehlercodes

Fehler Sub-Fehlercode Hinweise
401 – Nicht autorisiert 401002 Das Gerät verwendet ungültige oder abgelaufene Anmeldedaten. DPS meldet diesen Fehler.
401 – Nicht autorisiert 400209 Das Gerät wartet entweder auf die Genehmigung durch einen Betreiber oder wurde von einem Betreiber gesperrt.
401 IoTHubUnauthorized Das Gerät verwendet ein abgelaufenes Sicherheitstoken. IoT Hub meldet diesen Fehler.
401 IoTHubUnauthorized GERÄT_AUSGESCHALTET Das Gerät ist in diesem IoT-Hub deaktiviert und wurde zu einem anderen IoT-Hub verschoben. Stellen Sie das Gerät erneut bereit.
401 IoTHubUnauthorized GERÄT_GESPERRT Ein Betreiber hat dieses Gerät gesperrt.

Fehlercodes bei Dateiupload

Hier ist eine Liste allgemeiner Fehlercodes, die möglicherweise angezeigt werden, wenn ein Gerät versucht, eine Datei in die Cloud hochzuladen. Denken Sie daran, dass Sie Gerätedateiuploads in Ihrer Anwendung konfigurieren müssen, bevor Ihr Gerät eine Datei hochladen kann.

Fehlercode BESCHREIBUNG Mögliche Entschärfung
403006 Sie haben die Anzahl gleichzeitiger Dateiuploadvorgänge überschritten. Jeder Geräteclient ist auf 10 gleichzeitige Dateiuploads beschränkt. Sorgen Sie dafür, dass das Gerät IoT Central umgehend benachrichtigt, sobald der Dateiuploadvorgang abgeschlossen wurde. Wenn das nicht funktioniert, versuchen Sie, das Anforderungstimeout zu reduzieren.

Probleme mit nicht modellierten Daten

Wenn Sie festgestellt haben, dass Ihr Gerät Daten an IoT Central sendet, besteht der nächste Schritt darin, sicherzustellen, dass Ihr Gerät Daten in einem gültigen Format sendet.

Um zu ermitteln, welchen Kategorien Ihr Problem zuzuordnen ist, führen Sie den für Ihr Szenario am besten geeigneten Azure CLI-Befehl aus:

  • Verwenden Sie den Vorschaubefehl, um die Telemetrie zu überprüfen

    az iot central diagnostics validate-messages --app-id <iot-central-app-id> --device-id <device-name>
    
  • Verwenden Sie zur Überprüfung von Eigenschaftsaktualisierungen den Vorschaubefehl:

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

Wenn Sie zum ersten Mal einen validate-Befehl ausführen, werden Sie möglicherweise aufgefordert, die uamqp-Bibliothek zu installieren.

Die drei gängigen Problemtypen, die dazu führen, dass Gerätedaten nicht in IoT Central angezeigt werden:

  • Nicht übereinstimmende Gerätevorlage für Gerätedaten
  • Ungültige JSON-Daten
  • Alte Versionen von IoT Edge verursachen, dass die Telemetrie von Komponenten falsche Daten als nicht modellierte anzeigt.

Nicht übereinstimmende Gerätevorlage für Gerätedaten

Ein Gerät muss für alle Telemetriefeldnamen in den gesendeten Nutzdaten den gleichen Namen und die gleiche Schreibweise wie in der Gerätevorlage verwenden. Die folgende Ausgabe zeigt eine Beispielwarnmeldung, bei der das Gerät einen Telemetriewert namens Temperature sendet, wenn er temperature lauten sollte:

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

Ein Gerät muss für alle Eigenschaftsnamen in den gesendeten Nutzdaten den gleichen Namen und die gleiche Schreibweise wie in der Gerätevorlage verwenden. Die folgende Ausgabe zeigt eine Beispielwarnmeldung, bei der die Eigenschaft osVersion nicht in der Gerätevorlage definiert ist:

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

Ein Gerät muss die in der Gerätevorlage definierten Datentypen für alle Telemetrie- oder Eigenschaftswerte verwenden. Beispielsweise wird ein Schemakonflikt angezeigt, wenn der in der Gerätevorlage definierte Typ boolesch ist, das Gerät jedoch eine Zeichenfolge sendet. Die folgende Ausgabe zeigt eine Beispielfehlermeldung, bei der das Gerät einen Zeichenfolgenwert für eine Eigenschaft verwendet, die als double definiert ist:

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

Von den Überprüfungsbefehlen wird ebenfalls ein Fehler ausgegeben, wenn derselbe Telemetriename in mehreren Schnittstellen definiert ist, das Gerät aber nicht mit IoT Plug & Play konform ist.

Wenn Sie die Verwendung einer grafischen Benutzeroberfläche (GUI) vorziehen, verwenden Sie die Ansicht Rohdaten von IoT Central, um zu prüfen, ob etwas nicht modelliert wird.

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

Wenn Sie das Problem erkannt haben, müssen Sie möglicherweise die Gerätefirmware aktualisieren oder eine neue Gerätevorlage erstellen, die bisher nicht modellierte Daten modelliert.

Wenn Sie sich dafür entschieden haben, eine neue Vorlage zu erstellen, die die Daten ordnungsgemäß modelliert, migrieren Sie Geräte von Ihrer alten Vorlage zu der neuen Vorlage. Weitere Informationen finden Sie unter Verwalten von Geräten in Ihrer Azure IoT Central-Anwendung.

Ungültiges JSON

Wenn keine Fehler gemeldet werden, aber kein Wert angezeigt wird, handelt es sich wahrscheinlich um falsch formatierten JSON-Code in den vom Gerät gesendeten Nutzdaten. Weitere Informationen finden Sie unter Telemetrie-, Eigenschaften- und Befehlsnutzlasten.

Sie können die Überprüfungsbefehle oder die Ansicht Rohdaten auf der Benutzeroberfläche nicht verwenden, um zu ermitteln, ob das Gerät falsch formatierten JSON-Code sendet.

IoT Edge-Version

Verwenden Sie IoT Edge Version 1.2.4 oder höher, um Telemetrie von Komponenten, die in IoT Edge Modulen gehostet werden, ordnungsgemäß anzuzeigen. Wenn Sie eine frühere Version verwenden, werden Telemetrie von Komponenten in IoT Edge Modulen als _unmodeleddata angezeigt.

Probleme mit dem Datenexport der verwalteten Identität

Sie verwenden eine verwaltete Identität zum Autorisieren der Verbindung mit einem Exportziel. Die Daten kommen nicht am Exportziel an.

Führen Sie vor dem Konfigurieren oder Aktivieren des Exportziels unbedingt die folgenden Schritte aus:

  • Aktivieren Sie die verwaltete Identität für die IoT Central-Anwendung. Um zu überprüfen, ob die verwaltete Identität aktiviert ist, rufen Sie die Seite Identität für Ihre Anwendung im Azure-Portal auf oder verwenden Sie den folgenden CLI-Befehl:

    az iot central app identity show --name {your app name} --resource-group {your resource group name}
    
  • Konfigurieren Sie die Berechtigungen für die verwaltete Identität. Um die zugewiesenen Berechtigungen anzuzeigen, wählen Sie Azure-Rollenzuweisungen auf der Seite Identität für Ihre App im Azure-Portal oder verwenden Sie den CLI-Befehl az role assignment list. Die erforderlichen Berechtigungen sind:

    Destination Berechtigung
    Azure Blob Storage Mitwirkender an Speicherblobdaten
    Azure Service Bus Azure Service Bus-Datensender
    Azure Event Hubs Azure Event Hubs-Datensender
    Azure-Daten-Explorer Administrator

    Wenn die Berechtigungen nicht korrekt festgelegt wurden, bevor Sie das Ziel in Ihrer IoT Central-Anwendung erstellt haben, versuchen Sie, das Ziel zu entfernen und dann erneut hinzuzufügen.

  • Konfigurieren Sie alle virtuellen Netzwerke, privaten Endpunkte und Firewallrichtlinien.

Hinweis

Wenn Sie eine verwaltete Identität verwenden, um die Verbindung zu einem Exportziel zu autorisieren, exportiert IoT Central keine Daten von simulierten Geräten.

Weitere Informationen finden Sie unter Exportieren von IoT-Daten zu Cloudzielen mithilfe des Datenexports.

Zielverbindungsprobleme beim Datenexport

Die Exportdefinitionsseite zeigt Informationen über fehlgeschlagene Verbindungen zum Exportziel an:

Screenshot that shows an example export error.

Probleme mit fehlenden Daten beim Datenexport

Der Datenexport exportiert nur Daten, die in Ihrer Anwendung ankommen, nachdem Sie den Datenexport aktiviert haben. Wenn Sie historische Daten oder Daten exportieren müssen, die verpasst wurden, während Ihr Datenexport vorübergehend deaktiviert war, können Sie die IoT Central REST API verwenden, um die Gerätetelemetrie abzufragen. Verwenden Sie eine Abfrage, um die fehlenden Daten abzurufen und fügen Sie die Daten dann zu Ihrem Exportziel hinzu. Weitere Informationen finden Sie unter Verwenden der REST-API in IoT Central zum Abfragen von Geräten.

Nächste Schritte

Wenn Sie weitere Hilfe benötigen, können Sie sich über das Microsoft Q&A-Forum oder das Stack Overflow-Forum mit Azure-Experten in Verbindung setzen. Alternativ können Sie ein Azure-Supportticket erstellen.

Weitere Informationen finden Sie unter Support- und Hilfeoptionen für Azure IoT.