Rozwiązywanie problemów

Przykładowa aplikacja

Jeśli podczas korzystania z interfejsów Home API napotkasz problemy, możesz zebrać dzienniki, aby ułatwić debugowanie. Zbieranie dzienników z urządzenia mobilnego wymaga Xcode. Jeśli potrzebujesz pomocy od Google, zbierz logi z urządzenia z iOS i z huba, a następnie prześlij zgłoszenie w narzędziu Issue Tracker, podając odpowiednie informacje i dołączając powiązane logi.

Zbieranie logów z iOS

Podczas wykonywania wszystkich czynności związanych z Xcode urządzenie mobilne musi być połączone z komputerem lokalnym.

Dzienniki aplikacji i pakietu SDK są wyświetlane i zbierane bezpośrednio w konsoli Xcode. Gdy urządzenie mobilne jest połączone z komputerem lokalnym i uruchamiasz aplikację za pomocą Xcode, konsola automatycznie przechwytuje i przesyła strumieniowo standardowe strumienie wyjścia (stdout) i standardowe strumienie błędów (stderr) zarówno z warstwy aplikacji, jak i ze zintegrowanego pakietu Home SDK. Umożliwia to łatwe monitorowanie procesów inicjowania, interakcji z interfejsem API i zdarzeń pakietu SDK w czasie rzeczywistym podczas programowania i debugowania.

Zbieranie logów rozszerzenia z Xcode

Jeśli podczas korzystania z interfejsów Home API napotkasz problemy, możesz zebrać dzienniki, aby ułatwić dalsze debugowanie.

  1. W Xcode kliknij Debug (Debuguj) na górnym pasku menu, a następnie Attach to Process by PID or Name (Dołącz do procesu według identyfikatora PID lub nazwy).

    Debugowanie przykładowej aplikacji

  2. W sekcji PID or Process Name (Identyfikator PID lub nazwa procesu) wybierz MatterExtension i kliknij Attach (Dołącz).

    Przykładowe rozszerzenie dołączania aplikacji

  3. Jeśli klikniesz w prawym górnym rogu, zobaczysz komunikat Czekam na dołączenie do MatterAddDeviceExtension na iPhonie.

    Stan oczekiwania przykładowej aplikacji

  4. Kliknij kartę i wybierz MatterAddExtension.

    Przykładowa aplikacja dodająca rozszerzenie Matter

  5. Konsola zarejestruje log rozszerzenia.

Sherlog: śledzenie zdarzeń w różnych stosach

Sherlog to usługa śledzenia w czasie rzeczywistym, która zapewnia kompleksowy wgląd w interakcje między infrastrukturą Google a usługami w chmurze partnera.

Wymaganie wstępne: śledzenie wymaga użycia udostępnionego konta koordynowanego przez Google (np. konta zarejestrowanego w GReg lub konta demonstracyjnego).

Główny cel: debugowanie błędów funkcjonalnych i problemów z integracją między chmurami (np. niepowodzeń łączenia kont lub nieprawidłowych stanów urządzeń) bez konieczności wprowadzania zmian w kodzie produkcyjnym.

Możliwości: udostępnia pełne wykresy wywołań RPC, ładunki żądań/odpowiedzi oraz metadane dla intencji SYNC, EXECUTE, QUERY i Account Linking.

Dzienniki urządzenia Fuchsia Hub

Za pomocą tej metody możesz zbierać logi z tych urządzeń Fuchsia: * Google Nest Hub (2 generacji), * Google Nest Hub Max.

Aby włączyć koncentrator do pobierania logów lokalnych:

  1. Wyślij e-maila z numerem seryjnym i modelem urządzeń do technicznego menedżera konta Google. Znajdziesz je pod urządzeniem.
  2. Gdy Twoje konto zostanie dodane do listy dozwolonych, musisz włączyć tę funkcję, wykonując te czynności:
    • W centrum:
      1. Przesuń palcem z góry ekranu w dół
      2. Kliknij ikonę ustawień .
      3. Znajdź wersję systemu Fuchsia: na urządzeniu Nest Hub (2 generacji) kliknij Informacje o urządzeniu > Dane techniczne > Wersja systemu Fuchsia.
      4. Kliknij 7 razy „Wersja Fuchsia”. Spowoduje to włączenie opcji programisty.
      5. Wróć do menu najwyższego poziomu
      6. Kliknij „Opcje programisty”.
      7. Kliknij „Logowanie partnera”.
    • Funkcja będzie włączona przez 24 godziny. Następnie ponownie włącz funkcję logowania, wykonując czynności od kroku 5.
  3. Uzyskaj adres IP koncentratora:
    • Na urządzeniu centralnym, jeśli ma ekran:
      1. Przesuń palcem z góry ekranu w dół
      2. Kliknij ikonę ustawień .
      3. Znajdź adres IP urządzenia: na urządzeniu Nest Hub (2 generacji) kliknij Informacje o urządzeniu > Informacje techniczne > Adres IP.
    • W aplikacji Google Home na telefonie:
    • Kliknij urządzenie, aby wyświetlić stronę z informacjami na jego temat.
    • Kliknij ikonę Ustawienia , aby otworzyć stronę ustawień.
    • Znajdź adres IP urządzenia: kliknij Informacje o urządzeniu > Informacje techniczne > Adres IP.
  4. Aby pobrać dzienniki z koncentratora, wyślij do niego żądanie HTTP GET z komputera w tej samej sieci Wi-Fi.
    • Zanotuj port i ścieżkę punktu końcowego:
      curl -k -X GET https://ip-address:8443/setup/get_logs --output output-file
      
    • Połączenie może być otwarte tylko przez minutę, ale dane pobrane z bufora zwykle zawierają zdarzenia z ostatnich 20–30 minut.
      • Najlepiej jest wyodrębnić logi za pomocą tej metody natychmiast po zakończeniu procedury testowej, aby upewnić się, że bufor zawiera treści istotne dla testu (podobnie jak w przypadku raportów o błędach na Androidzie).

Automatyzacja

Wykrywanie krawędzi

Automatyzacje w ekosystemie Google Home obejmują wykrywanie krawędzi, czyli logikę, która sprawdza, czy starter aktywuje się tylko wtedy, gdy następuje rzeczywista zmiana stanu, a nie aktualizacja stanu, która jedynie powtarza poprzedni stan urządzenia.

Jeśli na przykład elementem inicjującym jest włączenie światła, wykrywanie krawędzi sprawdza, czy element inicjujący aktywuje się tylko wtedy, gdy urządzenie oświetleniowe przechodzi ze stanu wyłączenia do stanu włączenia, a nie ze stanu włączenia do stanu włączenia (brak zmiany).

Automatyzacja nie działa zgodnie z oczekiwaniami

Jeśli po uwzględnieniu wykrywania krawędzi automatyzacja nie działa zgodnie z oczekiwaniami:

  1. Sprawdź, czy każde urządzenie działa prawidłowo niezależnie od automatyzacji.

  2. Sprawdź wykres automatyzacji i porównaj go z językiem DSL automatyzacji, aby wykryć potencjalne nieprawidłowe założenia.

  3. Podczas wykonywania automatyzacji obserwuj stan urządzenia w aplikacji Google Home.

  4. Sprawdź, czy wszystkie urządzenia, do których odwołuje się automatyzacja, znajdują się w oczekiwanej strukturze. Usunięcie urządzenia, od którego zależy automatyzacja, może mieć niezamierzone konsekwencje. Zobacz Wpływ usunięcia urządzenia na automatyzacje.

Automatyzacja uruchamia się, gdy nie powinna

Jeśli automatyzacja uruchamia się, gdy nie powinna, sprawdź kryteria zdarzenia inicjującego. Może być konieczne dodanie dodatkowej logiki, aby zmiana stanu była rejestrowana tylko raz i tylko raz uruchamiała automatyzację.

Automatyzacja nie kompiluje się

Upewnij się, że aplikacja zawiera wszystkie niezbędne importy, w tym każdą klasę odpowiadającą różnym typom węzłów oraz cechy, do których się odwołujesz.

Tworzenie automatyzacji nie przechodzi weryfikacji

Jeśli utworzenie automatyzacji nie przejdzie weryfikacji, pojawi się komunikat z ostrzeżeniem lub komunikat o błędzie zawierający informacje o problemie. Więcej informacji znajdziesz w dokumentacji ValidationIssueType.

OAuth

Jeśli masz już klienta OAuth

Jeśli masz już zweryfikowanego klienta OAuth dla opublikowanej aplikacji, możesz go użyć do przetestowania interfejsów Home API.

Rejestracja w Google Home Developer Console nie jest wymagana do testowania i używania interfejsów Home API. Nadal jednak musisz mieć zatwierdzoną rejestrację Developer Console, aby opublikować aplikację, nawet jeśli masz zweryfikowanego klienta OAuth z innej integracji.

Pamiętaj o tych kwestiach:

  • W przypadku korzystania z dotychczasowego klienta OAuth obowiązuje limit 100 użytkowników. Informacje o dodawaniu użytkowników testowych znajdziesz w sekcjiGenerowanie identyfikatora klienta OAuth. Niezależnie od weryfikacji OAuth interfejsy Home API nakładają limit 100 użytkowników, którzy mogą przyznać uprawnienia Twojej aplikacji. To ograniczenie zostanie zniesione po zakończeniu rejestracji w Developer Console.

  • Developer Console registration should be sent for approval when you are ready to restrict device-type grants through OAuth in preparation for updating your app with the Home APIs.

W przypadku aplikacji Google Cloud, które nadal oczekują na weryfikację OAuth, użytkownicy nie mogą ukończyć procesu OAuth, dopóki weryfikacja nie zostanie zakończona. Próby przyznania uprawnień zakończą się niepowodzeniem i wyświetli się ten błąd:

Access blocked: <Project Name> has not completed the Google verification process.