Rozwiązywanie problemów w usłudze Azure IoT Central
Ten artykuł zawiera wskazówki dotyczące rozwiązywania problemów z łącznością urządzeń i problemów z konfiguracją eksportu danych w aplikacjach usługi IoT Central.
Problemy z łącznością urządzeń
Ta sekcja ułatwia określenie, czy dane docierają do usługi IoT Central.
Jeśli jeszcze tego nie zrobiono, zainstaluj az cli
narzędzie i azure-iot
rozszerzenie.
Aby dowiedzieć się, jak zainstalować program , zobacz Instalowanie interfejsu az cli
wiersza polecenia platformy Azure.
Aby zainstalować azure-iot
rozszerzenie, uruchom następujące polecenie:
az extension add --name azure-iot
Uwaga
Może zostać wyświetlony monit o zainstalowanie uamqp
biblioteki przy pierwszym uruchomieniu polecenia rozszerzenia.
Po zainstalowaniu azure-iot
rozszerzenia uruchom urządzenie, aby sprawdzić, czy wysyłane komunikaty docierają do usługi IoT Central.
Użyj następujących poleceń, aby zalogować się do subskrypcji, w której masz aplikację usługi IoT Central:
az login
az account set --subscription <your-subscription-id>
Aby monitorować dane telemetryczne wysyłane przez urządzenie, użyj następującego polecenia:
az iot central diagnostics monitor-events --app-id <iot-central-app-id> --device-id <device-name>
Jeśli urządzenie pomyślnie nawiązało połączenie z usługą IoT Central, zobaczysz dane wyjściowe podobne do następującego przykładu:
Monitoring telemetry.
Filtering on device: device-001
{
"event": {
"origin": "device-001",
"module": "",
"interface": "",
"component": "",
"payload": {
"temp": 65.57910343679293,
"humid": 36.16224660107426
}
}
}
Aby monitorować aktualizacje właściwości, które urządzenie wymienia się z usługą IoT Central, użyj następującego polecenia w wersji zapoznawczej:
az iot central diagnostics monitor-properties --app-id <iot-central-app-id> --device-id <device-name>
Jeśli urządzenie pomyślnie wyśle aktualizacje właściwości, zobaczysz dane wyjściowe podobne do następującego przykładu:
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'}
Jeśli dane są wyświetlane w terminalu, dane sprawiają, że są wyświetlane tak samo jak aplikacja usługi IoT Central.
Jeśli nie widzisz żadnych danych wyświetlanych po kilku minutach, spróbuj nacisnąć Enter
klawisz lub return
na klawiaturze, jeśli dane wyjściowe będą zablokowane.
Jeśli nadal nie widzisz żadnych danych wyświetlanych w terminalu, prawdopodobnie urządzenie ma problemy z łącznością sieciową lub nie wysyła danych poprawnie do usługi IoT Central.
Sprawdzanie stanu aprowizacji urządzenia
Jeśli dane nie są wyświetlane w monitorze interfejsu wiersza polecenia, sprawdź stan aprowizacji urządzenia, uruchamiając następujące polecenie:
az iot central device registration-info --app-id <iot-central-app-id> --device-id <device-name>
W poniższych danych wyjściowych przedstawiono przykład urządzenia, które nie może nawiązać połączenia:
{
"@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
}
}
Stan aprowizacji urządzeń | opis | Możliwe środki zaradcze |
---|---|---|
Zaaprowizowane | Nie można od razu rozpoznać problemu. | Nie dotyczy |
Zarejestrowano | Urządzenie nie nawiązało jeszcze połączenia z usługą IoT Central. | Sprawdź dzienniki urządzeń pod kątem problemów z łącznością. |
Zablokowano | Połączenie urządzenia z usługą IoT Central jest zablokowane. | Połączenie urządzenia z aplikacją usługi IoT Central jest zablokowane. Odblokuj urządzenie w usłudze IoT Central i ponów próbę. Aby dowiedzieć się więcej, zobacz Wartości stanu urządzenia. |
Niezatwierdzone | Urządzenie nie jest zatwierdzone. | Urządzenie nie zostało zatwierdzone do nawiązania połączenia z aplikacją usługi IoT Central. Zatwierdź urządzenie w usłudze IoT Central i ponów próbę. Aby dowiedzieć się więcej, zobacz Wartości stanu urządzenia |
Nieprzypisane | Urządzenie nie jest przypisane do szablonu urządzenia. | Przypisz urządzenie do szablonu urządzenia, aby usługa IoT Central wiedziała, jak analizować dane. |
Dowiedz się więcej o wartościach stanu urządzenia w interfejsie użytkownika i wartościach stanu urządzenia w interfejsie API REST.
Kody błędów
Jeśli nadal nie możesz zdiagnozować, dlaczego dane nie są wyświetlane w programie monitor-events
, następnym krokiem jest wyszukanie kodów błędów zgłoszonych przez urządzenie.
Rozpocznij sesję debugowania na urządzeniu lub zbierz dzienniki z urządzenia. Sprawdź, czy nie ma kodów błędów zgłaszanych przez urządzenie.
W poniższych tabelach przedstawiono typowe kody błędów i możliwe akcje w celu ograniczenia ryzyka.
Jeśli występują problemy związane z przepływem uwierzytelniania:
Kod błędu | opis | Możliwe środki zaradcze |
---|---|---|
400 | Treść żądania jest nieprawidłowa. Na przykład nie można go przeanalizować lub nie można zweryfikować obiektu. | Upewnij się, że wysyłasz poprawną treść żądania w ramach przepływu zaświadczania lub użyj zestawu SDK urządzenia. |
401 | Nie można zweryfikować tokenu autoryzacji. Na przykład wygasła lub nie ma zastosowania do identyfikatora URI żądania. Ten kod błędu jest również zwracany do urządzeń w ramach przepływu zaświadczania modułu TPM. | Upewnij się, że urządzenie ma poprawne poświadczenia. |
404 | Wystąpienie usługi Device Provisioning Service lub zasób, taki jak rejestracja, nie istnieje. | Utwórz bilet z pomocą techniczną. |
412 | Element ETag w żądaniu nie jest zgodny ETag z istniejącym zasobem zgodnie z RFC7232. |
Utwórz bilet z pomocą techniczną. |
429 | Usługa ogranicza przepływności. Aby uzyskać informacje o określonych limitach usług, zobacz IoT Hub Device Provisioning Service limits (Limity usługi IoT Hub Device Provisioning). | Zmniejsz częstotliwość komunikatów, podziel obowiązki między więcej urządzeń. |
500 | Wystąpił błąd wewnętrzny. | Utwórz bilet z pomocą techniczną , aby sprawdzić, czy mogą ci pomóc w dalszym ciągu. |
Szczegółowe kody błędów autoryzacji
Błąd | Kod błędu podrzędnego | Uwagi |
---|---|---|
401 Brak autoryzacji | 401002 | Urządzenie używa nieprawidłowych lub wygasłych poświadczeń. Usługa DPS zgłasza ten błąd. |
401 Brak autoryzacji | 400209 | Urządzenie oczekuje na zatwierdzenie przez operatora lub operator go zablokował. |
401 IoTHubUnauthorized | Urządzenie używa wygasłego tokenu zabezpieczającego. Usługa IoT Hub zgłasza ten błąd. | |
401 IoTHubUnauthorized | DEVICE_DISABLED | Urządzenie jest wyłączone w tym centrum IoT Hub i zostało przeniesione do innego centrum IoT. Ponowne aprowizywanie urządzenia. |
401 IoTHubUnauthorized | DEVICE_BLOCKED | Operator zablokował to urządzenie. |
Kody błędów przekazywania plików
Oto lista typowych kodów błędów, które mogą być widoczne, gdy urządzenie próbuje przekazać plik do chmury. Pamiętaj, że zanim urządzenie będzie mogło przekazać plik, należy skonfigurować przekazywanie plików urządzenia w aplikacji.
Kod błędu | opis | Możliwe środki zaradcze |
---|---|---|
403006 | Przekroczono liczbę współbieżnych operacji przekazywania plików. Każdy klient urządzenia jest ograniczony do 10 współbieżnych przekazywania plików. | Upewnij się, że urządzenie natychmiast powiadamia aplikację IoT Central o zakończeniu operacji przekazywania plików. Jeśli to nie zadziała, spróbuj zmniejszyć limit czasu żądania. |
Problemy z danymi bez modelu
Po ustaleniu, że urządzenie wysyła dane do usługi IoT Central, następnym krokiem jest upewnienie się, że urządzenie wysyła dane w prawidłowym formacie.
Aby wykryć kategorie, w których znajduje się problem, uruchom najbardziej odpowiednie polecenie interfejsu wiersza polecenia platformy Azure dla danego scenariusza:
Aby zweryfikować dane telemetryczne, użyj polecenia w wersji zapoznawczej:
az iot central diagnostics validate-messages --app-id <iot-central-app-id> --device-id <device-name>
Aby zweryfikować aktualizacje właściwości, użyj polecenia w wersji zapoznawczej:
az iot central diagnostics validate-properties --app-id <iot-central-app-id> --device-id <device-name>
Może zostać wyświetlony monit o zainstalowanie uamqp
biblioteki przy pierwszym uruchomieniu validate
polecenia.
Trzy typowe typy problemów, które powodują, że dane urządzenia nie są wyświetlane w usłudze IoT Central, to:
- Niezgodność danych urządzenia z szablonem urządzenia.
- Dane są nieprawidłowe w formacie JSON.
- Stare wersje usługi IoT Edge powodują, że dane telemetryczne ze składników są wyświetlane niepoprawnie jako niemodelowane dane.
Niezgodność szablonu urządzenia z danymi urządzenia
Urządzenie musi używać tej samej nazwy i wielkości liter, co jest używane w szablonie urządzenia dla wszystkich nazw pól telemetrii w ładunku, który wysyła. W poniższych danych wyjściowych przedstawiono przykładowy komunikat ostrzegawczy, w którym urządzenie wysyła wartość telemetrii o nazwie Temperature
, gdy powinno to być 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']}'.
Urządzenie musi używać tej samej nazwy i wielkości liter, co jest używane w szablonie urządzenia dla wszystkich nazw właściwości w ładunku, który wysyła. Następujące dane wyjściowe przedstawiają przykładowy komunikat ostrzegawczy, w którym właściwość osVersion
nie jest zdefiniowana w szablonie urządzenia:
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']}'.
Urządzenie musi używać typów danych zdefiniowanych w szablonie urządzenia dla dowolnych wartości telemetrii lub właściwości. Na przykład zobaczysz niezgodność schematu, jeśli typ zdefiniowany w szablonie urządzenia jest wartością logiczną, ale urządzenie wysyła ciąg. Następujące dane wyjściowe przedstawiają przykładowy komunikat o błędzie, w którym urządzenie używające wartości ciągu dla właściwości zdefiniowanej jako podwójna:
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
Polecenia weryfikacji również zgłaszają błąd, jeśli ta sama nazwa telemetrii jest zdefiniowana w wielu interfejsach, ale urządzenie nie jest zgodne z usługą IoT Plug and Play.
Jeśli wolisz użyć graficznego interfejsu użytkownika, użyj widoku danych raw usługi IoT Central, aby sprawdzić, czy coś nie jest modelowane.
Po wykryciu problemu może być konieczne zaktualizowanie oprogramowania układowego urządzenia lub utworzenie nowego szablonu urządzenia, który modeluje wcześniej niemodelowane dane.
Jeśli zdecydujesz się utworzyć nowy szablon, który prawidłowo modeluje dane, zmigruj urządzenia ze starego szablonu do nowego szablonu. Aby dowiedzieć się więcej, zobacz Zarządzanie urządzeniami w aplikacji usługi Azure IoT Central.
Nieprawidłowy kod JSON
Jeśli nie ma żadnych zgłoszonych błędów, ale wartość nie jest wyświetlana, prawdopodobnie jest to źle sformułowany kod JSON w ładunku wysyłanym przez urządzenie. Aby dowiedzieć się więcej, zobacz Telemetria, właściwość i ładunki poleceń.
Nie można użyć poleceń weryfikacji ani widoku nieprzetworzonych danych w interfejsie użytkownika, aby wykryć, czy urządzenie wysyła nieprawidłowo sformułowany kod JSON.
Wersja usługi IoT Edge
Aby poprawnie wyświetlić dane telemetryczne ze składników hostowanych w modułach usługi IoT Edge, użyj usługi IoT Edge w wersji 1.2.4 lub nowszej. Jeśli używasz starszej wersji, dane telemetryczne ze składników w modułach usługi IoT Edge są wyświetlane jako _unmodeleddata.
Problemy z tożsamością zarządzaną eksportu danych
Używasz tożsamości zarządzanej do autoryzowania połączenia z miejscem docelowym eksportu. Dane nie docierają do miejsca docelowego eksportu.
Przed skonfigurowaniem lub włączeniem miejsca docelowego eksportu upewnij się, że wykonasz następujące czynności:
Włącz tożsamość zarządzaną dla aplikacji usługi IoT Central. Aby sprawdzić, czy tożsamość zarządzana jest włączona, przejdź do strony Tożsamość aplikacji w witrynie Azure Portal lub użyj następującego polecenia interfejsu wiersza polecenia:
az iot central app identity show --name {your app name} --resource-group {your resource group name}
Skonfiguruj uprawnienia dla tożsamości zarządzanej. Aby wyświetlić przypisane uprawnienia, wybierz pozycję Przypisania ról platformy Azure na stronie Tożsamość aplikacji w witrynie Azure Portal lub użyj polecenia interfejsu
az role assignment list
wiersza polecenia. Wymagane uprawnienia to:Element docelowy Uprawnienie Azure Blob Storage Współautor danych w usłudze Blob Storage Azure Service Bus Nadawca danych usługi Azure Service Bus Azure Event Hubs Nadawca danych usługi Azure Event Hubs Azure Data Explorer Administrator Jeśli uprawnienia nie zostały ustawione poprawnie przed utworzeniem miejsca docelowego w aplikacji usługi IoT Central, spróbuj usunąć miejsce docelowe, a następnie dodać je ponownie.
Skonfiguruj wszystkie sieci wirtualne, prywatne punkty końcowe i zasady zapory.
Uwaga
Jeśli używasz tożsamości zarządzanej do autoryzowania połączenia z miejscem docelowym eksportu, usługa IoT Central nie eksportuje danych z symulowanych urządzeń.
Aby dowiedzieć się więcej, zobacz Eksportowanie danych.
Problemy z połączeniem docelowym eksportu danych
Na stronie definicji eksportu są wyświetlane informacje o nieudanych połączeniach z miejscem docelowym eksportu:
Problemy z brakami danych eksportu danych
Eksport danych eksportuje tylko dane, które docierają do aplikacji po włączeniu eksportu danych. Jeśli musisz wyeksportować dane historyczne lub dane, które zostały pominięte podczas eksportowania danych zostało tymczasowo wyłączone, możesz użyć interfejsu API REST usługi IoT Central do wykonywania zapytań dotyczących telemetrii urządzenia. Użyj zapytania, aby pobrać brakujące dane, a następnie dodać dane do miejsca docelowego eksportu. Aby dowiedzieć się więcej, zobacz Jak używać interfejsu API REST usługi IoT Central do wykonywania zapytań dotyczących urządzeń.
Następne kroki
Jeśli potrzebujesz dodatkowej pomocy, możesz skontaktować się z ekspertami platformy Azure na forach microsoft Q&A i Stack Overflow. Alternatywnie możesz zgłosić bilet pomoc techniczna platformy Azure.
Aby uzyskać więcej informacji, zobacz Azure IoT support and help options (Pomoc techniczna i opcje pomocy usługi Azure IoT).