Najczęstsze pytania dotyczące inteligentnego domu

Ogólne

P: Gdzie i w jakim języku powinniśmy wdrożyć infrastrukturę realizacji zamówień w chmurze?

O: Jeśli tylko obsługuje nowoczesny protokół SSL (TLS) i OAuth 2.0, możesz wdrożyć infrastrukturę na dowolnej platformie i w dowolnym języku. Zalecamy wdrożenie jak najbliżej pozostałej części infrastruktury, aby zwiększyć niezawodność i skrócić czas oczekiwania na wykonanie na urządzeniach użytkowników.


P: Czy identyfikatory urządzeń muszą być unikalne?

O: Identyfikatory powinny być unikalne. Jeśli nie masz unikalnych identyfikatorów w całej usłudze, muszą one być unikalne przynajmniej na poziomie użytkownika. Wyobraź sobie użytkownika, który ma kilka domów, a w każdym z nich ma integrację z tym samym użytkownikiem. Prośba o włączenie światła w jednym domu nie powinna włączać światła o tym samym identyfikatorze w innym domu.


P: Czy nazwy urządzeń muszą być niepowtarzalne?

O: Nazwy nie muszą być niepowtarzalne, ale z czasem możemy zachęcać użytkowników do poprawiania nieodpowiednich nazw po skonfigurowaniu urządzenia, aby zapewnić lepsze wrażenia.

Oto krótki przewodnik po nazwach:

  • Nazwy powinny być takie, aby ludzie mogli je wypowiedzieć.
  • Rozpoznajemy podzbiory ciągów znaków, więc jeśli masz ciąg „acme color light”, odpowiemy też na zapytanie „acme light”.
  • Zachęcamy do podania zarówno nazwy opisowej produktu, jak i co najmniej jednej nazwy zdefiniowanej przez użytkownika.
  • Użytkownicy nie muszą nadawać światłom nazw pomieszczeń, ponieważ mamy już pomieszczenia. Każde światło powinno mieć unikalną nazwę w danym pomieszczeniu, ale zawsze można użyć liczby mnogiej, aby wydać polecenie wszystkim światłom (np. 2 żarówki w kinkietach w biurze to „światło północne” i „światło wschodnie”, ale można nimi sterować, używając po prostu słowa „światła”).

P: Jak często aktualizowany jest stan urządzenia?

O: Stan tymczasowy jest pobierany w przypadku zapytań QUERY lub EXECUTE, które są działaniami inicjowanymi przez użytkownika. Jeśli użytkownik zapyta „czy światło jest włączone?” lub będzie chciał rozjaśnić światło, musimy wysłać zapytanie, aby określić bieżący stan.


P: Czy można bezpośrednio aktualizować Home Graph o bieżący stan urządzenia?

O: tak, użyj wywołania interfejsu API Report State.


Łączenie kont i OAuth

O: Tak, połączenie kont jest wymagane, aby połączyć urządzenia użytkownika z usługami w chmurze dostawcy.


P: W przypadku OAuth tokeny dostępu wygasają co 15,213 godziny.Czy to w porządku?

O: Tak, ale przetestuj z dość krótkim czasem wygaśnięcia, np. 10–20 minut. Nasz klient OAuth powinien odświeżać tokeny w razie potrzeby, a testowanie z krótkim czasem wygaśnięcia potwierdzi, że to działa.


Intencje

P: Kiedy następuje synchronizacja?

O: SYNCHRONIZACJA następuje natychmiast po zakończeniu procesu OAuth i po wywołaniu funkcji Request Sync.


P: Dlaczego SYNC nie działa?

O: Może się tak zdarzyć z kilku powodów.

  • Wysyłasz nieprawidłowe typy urządzeń.

    • Na przykład oczekujemy wartości action.devices.types.LIGHT, ale Ty wysyłasz action.devices.types.Light.
  • Wysyłasz nieobsługiwane typy urządzeń.

    • Na przykład wysyłasz action.devices.types.FLASHLIGHT – nie obsługujemy tego.
  • Wysyłasz nieprawidłowe lub nieobsługiwane pola.

    • Na przykład masz pole, które nie jest uwzględnione w naszej specyfikacji.
  • W odpowiedzi SYNC wystąpił inny problem z formatowaniem.

    • Sprawdź swoje drabinki.
  • Występuje problem z połączeniem konta.

    • Sprawdź, czy w nagłówku Auth żądania SYNC otrzymujesz prawidłowy token dostępu.
  • Zbyt długo odpowiadasz na żądanie SYNC.

    • Sprawdź, czy odpowiadasz na żądanie SYNC w ciągu 5 sekund.

P: Czy odpowiedź „oczekująca” jest w porządku?

O: jeśli urządzenia są dostępne w czasie rzeczywistym, zdecydowanie wolimy odpowiedź „sukces” lub „niepowodzenie” zamiast „oczekuje”. Skontaktuj się z nami, jeśli uważasz, że potrzebujesz odpowiedzi „w trakcie” – wiemy, że niektóre urządzenia o niskim poborze mocy, które nie działają w czasie rzeczywistym, mogą wymagać odpowiedzi „w trakcie” i asynchronicznego modelu wykonywania.


Testowanie i przesyłanie

P: Czy możemy skonfigurować chmurę programistyczną?

O: tak, możesz przetestować niewdrożone środowisko i konfigurację chmury.


P: Moja akcja nie jest widoczna w sekcji Sterowanie domem w aplikacji Google Home. Co się dzieje?

O: potwierdź, że jesteś programistą tego projektu.


Stan raportu

P: Czy wdrożenie funkcji Report State wymaga spełnienia jakichś warunków?

O: Projekt musi korzystać z interfejsu Smart Home API, obsługiwać OAuth2 i mieć cechy, które mają stany do zgłoszenia.


P: Jak często musimy zgłaszać stan urządzenia?

O: Google interesuje się przejściem i stanem końcowym. Jeśli jednak w krótkim czasie nastąpi wiele zmian stanu (np. użytkownik otworzy i zamknie lodówkę 3 razy w ciągu minuty lub przesunie suwak ściemniacza), wystarczy, że zgłosisz tylko stan końcowy.


P: Czy podczas wywoływania funkcji Report State trzeba wysyłać pełny stan urządzenia?

O: częściowe aktualizacje stanu nie są obsługiwane, więc wywołania Report State powinny zawsze zawierać wszystkie dane dotyczące konkretnej cechy, która została zaktualizowana. Jeśli 2 cechy powodują niespójność, należy je zgłosić razem.


Pytanie: czy Google może wysyłać do mojego urządzenia zapytania o jego stan (czyli sprawdzać stan urządzenia)?

O: jest to mechanizm rezerwowy, którego nie zalecamy. Jeśli w przypadku tych użytkowników będziemy musieli często odpytywać urządzenie, nie możemy zagwarantować, jakie będzie dodatkowe obciążenie. Wynika to z nowych powierzchni wizualnych. Oprócz nieznanego problemu z ładowaniem spowoduje to pogorszenie wrażeń użytkownika. Uważamy, że Report State ma kluczowe znaczenie dla platformy.


P: Jakie cechy obsługują obecnie funkcję Zgłoś stan?

O: Obsługiwane są wszystkie publiczne cechy, które mają powiązane stany. Należy też zgłaszać wszelkie zmiany stanu urządzenia na Online.

Pamiętaj, że sceny nie mają stanów. Mogą one jednak spowodować zmianę stanu urządzeń. Jeśli na dowolnym urządzeniu w Google Home Graph nastąpi zmiana stanu, należy to zgłosić.


P: Czy funkcja Report State wymaga wysłania sygnatury czasowej?

O: Nie wymagamy sygnatury czasowej. Ostatni wysłany stan zastąpi poprzednie wywołania.


P: Czy muszę oddzielnie zgłaszać stan, jeśli wysyłam go już w zapytaniu lub wykonaniu?

O: Home Graph przechowuje tylko stan wysłany za pomocą Report State. Stan zwracany w odpowiedzi na intencje EXECUTE i QUERY jest używany tylko w odpowiedziach głosowych dla użytkownika i nie jest przechowywany. W rezultacie należy wywołać Report State, nawet jeśli nowy stan urządzenia został już zwrócony w odpowiedzi na intencję EXECUTE lub QUERY.


P: Jakie są konsekwencje niepełnego wdrożenia funkcji Report State w wyznaczonym terminie?

O: spowoduje to pogorszenie wrażeń użytkowników, np. w przypadku Google Home app (GHA) i elementów wizualnych. Oznacza to, że wiele intencji QUERY będzie wysyłanych w celu sprawdzenia stanu, a my nie możemy zagwarantować, że będzie to odpowiadać dodatkowemu obciążeniu chmury partnera.


P: Jak mogę przetestować wdrożenie funkcji Report State?

O: użyj przeglądarki Home Graph, czyli samoobsługowego narzędzia testowego, które pokazuje bieżące stany urządzeń zapisane w Home Graph.


Pytanie: czy w przypadku stanu raportu możemy użyć losowego identyfikatora requestId?

O: Zalecamy, aby partnerzy używali tego samego identyfikatora żądania, który otrzymali w odpowiedzi na żądanie EXECUTE, jeśli zdarzenie Report State jest wywoływane przez żądanie EXECUTE. W przeciwnym razie możesz użyć losowego identyfikatora żądania.


P: Jeśli użytkownik ma kilka urządzeń i na jednym z nich zmieni się stan, czy musimy zgłosić najnowszy stan wszystkich urządzeń?

O: Nie. Musisz zgłosić tylko stan tego konkretnego urządzenia.


Sprawdzone metody

P: Jakie opóźnienie jest dopuszczalne?

O: Idealny czas to poniżej 200 ms, a dopuszczalny to 2–5 s. Jeśli opóźnienie wynosi około 5 sekund, skontaktuj się z nami.


P: Jak sprawić, aby głośnik aktywowany głosem prawidłowo reagował, gdy jest offline?

O: Zwróć stan offline w przypadku urządzeń offline. W przypadku tego błędu zwracamy komunikat „not available right now” (obecnie niedostępne) w formie TTS. Więcej informacji znajdziesz w sekcji Błędy i wyjątki.