Raadpleeg de handleiding voor het oplossen van problemen met apparaatcommunicatie
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:
- 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.
- Controleer het apparaatregister (met behulp van Azure Portal) en controleer of uw apparaat is ingeschakeld.
- 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).
- 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?
- 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())
- 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 deDEBUG
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
- De
debug
parameterlogboeken zijn standaard ingesteldstderr
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.
- Stel de
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?'
- 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
Error
is, 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.
- 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.
- Aan de apparaatzijde worden de argumenten doorgegeven aan de callback van de