Raadpleeg de handleiding voor het oplossen van problemen met apparaatcommunicatie

Voltooid

Met de volgende controlelijsten voor het oplossen van problemen kunt u een aantal dingen proberen voordat u een ondersteuningsticket indient.

Kan geen verbinding maken met uw Azure IoT-hub

Als uw apparaat geen verbinding kan maken met uw Azure IoT-hub, kunt u het volgende controleren:

  1. Zijn uw referenties juist?
    • Als u X.509-certificaten gebruikt, moeten de vingerafdrukken overeenkomen. Zorg ervoor dat de vingerafdruk in het register overeenkomt met de vingerafdruk van het certificaat dat u wilt gebruiken.
    • Als u een verbindingsreeks gebruikt met een gedeelde toegangssleutel, moet u ervoor zorgen dat deze overeenkomt met het apparaat of een beleid met de mogelijkheid apparaat Verbinding maken.
    • Als u een handtekening voor gedeelde toegang gebruikt, controleert u of de vervaldatum juist is en of u de juiste gedeelde toegangssleutel gebruikt om deze te ondertekenen.
  2. Controleer het apparaatregister (met behulp van Azure Portal) en controleer of uw apparaat is ingeschakeld.
  3. Kunt u de firewall doorlopen?
    • Het eenvoudigste om te proberen is het hulpprogramma iothub-diagnostics uit te voeren en te zien of het lukt om verbinding te maken met uw Azure IoT-hub met de referenties van uw apparaat. Het probeert alle ondersteunde protocollen en WebSockets en geeft de testresultaten weer.
    • Als u iothub-diagnostics niet kunt uitvoeren, kunt u proberen om dezelfde stappen handmatig uit te voeren:
      • Ping een bekende website om te controleren of naamomzetting en uitgaand verkeer werkt.
      • Wijzig het transport dat wordt gebruikt om de client te instantiĆ«ren (AMQP, AMQPWS, MQTT, MQTTWS en HTTP).
  4. Voer de standaardvoorbeelden uit.
    • Als de voorbeelden verbinding kunnen maken, kunt u proberen verschillen te vinden tussen de manier waarop uw programma en de voorbeelden de client instantiĆ«ren. Het probleem kan net zo eenvoudig zijn als een typefout.
    • Als de voorbeelden geen verbinding kunnen maken en geen van beide iothub-diagnostische gegevens, is het probleem waarschijnlijk een probleem met de referenties of uw netwerk.

Geen verbroken verbindingen detecteren

Het moeilijkste aan verbroken verbindingen is dat ze vaak willekeurig lijken. Als de SDK geen fout veroorzaakt, is er geen manier om te weten wat er aan de hand is. Of is er?

  1. Kan de logica voor opnieuw proberen dingen vertragen?
    • Wees standaard dat de logica voor opnieuw proberen vier minuten duurt. Heb je zo lang gewacht?
    • Als u niet wilt wachten, schakelt u de logica voor opnieuw proberen uit door aan te roepen client.setRetryPolicy(new NoRetry())
  2. Hebt u gedetailleerde logboeken nodig? De SDK maakt gebruik van de foutopsporingsbibliotheek voor logboekregistratie:
    • Stel de DEBUG omgevingsvariabele in en voer uw toepassing opnieuw uit. Hier volgen enkele goede waarden voor de DEBUG omgevingsvariabele om u op weg te helpen:
      • De azure* parameter registreert DE SDK-activiteit, maar niet de onderliggende transportbibliotheek.
      • De amqp10* parameter registreert de activiteit van de AMQP-bibliotheek op laag niveau.
      • De * parameter registreert alles.
    • De debug parameterlogboeken zijn standaard ingesteld stderr en kunnen uitgebreid zijn, met name als dit is ingesteld op *.
    • Als u deze logboeken opslaat om ze in een probleem te plaatsen, moet u voorzichtig zijn met het scrapen van vertrouwelijke informatie.

Sommige berichten kunnen niet worden verzonden

Berichtfouten zijn nog een lastige fout. Het lijkt erop dat sommige berichten worden verzonden, maar niet allemaal. Wat geeft dat? De eerste vraag die u moet stellen, is 'Hoe weet u dat sommige berichten niet worden verzonden?'

  1. Als de callback wordt aangeroepen met een fout, kan het foutobject u meer aanwijzingen geven dan alleen een bericht. Let op het type fout zelf:
    • Als het een aangepast SDK-type is, moet dit expliciet zijn. Als expliciet typen niet voldoende is, bekijkt u de eigenschappen van de fout en probeert u te zien of er een protocolspecifieke fout is.
    • Als het een algemeen Erroris, betekent dit dat de SDK die fout niet kan vertalen. Wanneer u een algemene fout krijgt, dient u een probleem in en geeft u ons zoveel mogelijk details, inclusief de waarden van de fouteigenschappen en de foutstack.
  2. Als dit komt omdat u de berichten niet ziet in uw cloudtoepassing, controleert u het volgende:
    • Aan de apparaatzijde worden de argumenten doorgegeven aan de callback van de send bewerking.
    • Gebruik de Azure IoT-extensie voor Azure CLI met de monitor-events subopdracht om te controleren of de berichten worden weergegeven op het met Event Hubs compatibele eindpunt van uw IoT Hub. Als dat het geval is, weet u tenminste dat het apparaat goed werkt. Als dat niet het geval is, is het onwaarschijnlijk dat het een serviceprobleem is en u problemen aan de apparaatzijde kunt opsporen.