Najczęstsze pytania dotyczące inteligentnego domu

Ogólne

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

Odpowiedź: możesz wdrożyć infrastrukturę na dowolnej platformie i w dowolnym języku, o ile obsługuje ona nowoczesne protokoły SSL (TLS) i OAuth 2.0. Zalecamy wdrożenie jak najbliżej reszty infrastruktury, aby zwiększyć niezawodność i zmniejszyć opóźnienie w wykonywaniu poleceń na urządzeniach użytkowników.


Pytanie: czy identyfikatory urządzeń muszą być unikalne?

Odpowiedź: 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 jest integracja z tym samym użytkownikiem. Poproszenie o włączenie światła w jednym domu nie powinno włączać światła o tym samym identyfikatorze w innym domu.


Pytanie: czy nazwy urządzeń muszą być unikalne?

Odpowiedź: nazwy nie muszą być unikalne, ale z czasem możemy zachęcać użytkowników do poprawiania nieprawidłowych nazw po skonfigurowaniu, aby poprawić wygodę użytkowania.

Oto krótki przewodnik po nazwach:

  • Nazwy powinny być takie, aby użytkownicy mogli je wypowiedzieć.
  • Rozpoznajemy podzbiory ciągów znaków, więc jeśli masz „acme color light”, odpowiemy też na „acme light”.
  • Zachęcamy do podawania zarówno opisowej nazwy produktu, jak i co najmniej jednej nazwy zdefiniowanej przez użytkownika.
  • Użytkownicy nie muszą podawać nazw pomieszczeń, ponieważ mamy do tego odpowiednie funkcje. Nazwy powinny być unikalne w każdym pomieszczeniu, ale zawsze można używać liczby mnogiej, aby sterować wszystkim (np. 2 żarówki w kinkietach w biurze to „światło północne” i „światło wschodnie”, ale można nimi sterować za pomocą polecenia „światła”).

Pytanie: jak często aktualizowany jest stan urządzenia?

Odpowiedź: stan tymczasowy jest pobierany po wykonaniu zapytania lub polecenia, czyli działań zainicjowanych 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 sprawdzić bieżący stan.


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

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


Łączenie kont i OAuth

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


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

Odpowiedź: tak, ale przetestuj to 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

Pytanie: kiedy następuje synchronizacja?

Odpowiedź: synchronizacja następuje natychmiast po zakończeniu OAuth i po wywołaniu funkcji Request Sync.


Pytanie: dlaczego SYNC nie działa?

Odpowiedź: może to być spowodowane kilkoma typowymi przyczynami.

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

    • Na przykład oczekujemy action.devices.types.LIGHT, ale 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 zgodne z naszą specyfikacją.
  • W odpowiedzi SYNC występuje inny problem z formatowaniem.

    • Sprawdź nawiasy.
  • Występuje problem z łączeniem kont.

    • 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.

Pytanie: czy odpowiedź „oczekujące” jest prawidłowa?

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


Testowanie i przesyłanie

Pytanie: czy możemy skonfigurować środowisko programistyczne w chmurze?

Odpowiedź: tak, możesz testować nieopublikowane środowisko i konfigurację w chmurze.


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

Odpowiedź: sprawdź, czy jesteś deweloperem tego projektu.


Report State

Pytanie: czy są jakieś wymagania wstępne dotyczące implementacji Report State?

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


Pytanie: jak często musimy zgłaszać stan urządzenia?

Odpowiedź: 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), musimy zgłosić tylko stan końcowy.


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

Odpowiedź: częściowe aktualizacje stanu nie są obsługiwane, dlatego Report State wywołania powinny zawsze zawierać wszystkie dane dotyczące danej 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ć zapytania do mojego urządzenia, aby uzyskać jego stan (czyli odpytywać urządzenie)?

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


Pytanie: które cechy obsługują obecnie Report State?

Odpowiedź: obsługiwane są wszystkie cechy publiczne, które mają powiązane stany. Należy też zgłaszać wszelkie zmiany stanu urządzenia w trybie online.

Pamiętaj, że sceny nie mają stanów. Mogą jednak powodować zmianę stanu urządzeń. Jeśli stan dowolnego urządzenia w Google Home Graph ulegnie zmianie, należy to zgłosić.


Pytanie: czy Report State wymaga wysłania sygnatury czasowej?

Odpowiedź: nie wymagamy sygnatury czasowej. Ostatni wysłany stan zastąpi poprzednie wywołania.


Pytanie: czy muszę zgłaszać stan osobno, jeśli już wysyłam go w zapytaniu lub poleceniu?

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


Pytanie: jakie będą konsekwencje niepełnego wdrożenia Report State w podanym terminie?

Odpowiedź: spowoduje to pogorszenie wygody użytkowników, np. w Google Home app (GHA) i na powierzchniach wizualnych. Oznacza to, że wiele intencji QUERY będzie wysyłanych w celu odpytywania stanu, a my nie możemy zagwarantować, jakie będzie dodatkowe obciążenie chmury partnera.


Pytanie: jak mogę przetestować implementację Report State?

Odpowiedź: użyj przeglądarki Home Graph – narzędzia do samodzielnego testowania, które pokazuje bieżące stany urządzeń przechowywane w Home Graph.


Pytanie: czy możemy użyć losowego identyfikatora requestId w Report State?

Odpowiedź: zalecamy partnerom używanie tego samego identyfikatora requestId, który otrzymali w żądaniu EXECUTE, jeśli Report State jest wywoływany przez żądanie EXECUTE. W przeciwnym razie możesz użyć losowego identyfikatora requestId.


Pytanie: jeśli użytkownik ma kilka urządzeń i stan jednego z nich ulegnie zmianie, czy musimy zgłosić najnowszy stan wszystkich urządzeń?

Odpowiedź: nie. Musisz zgłosić tylko stan tego konkretnego urządzenia.


Sprawdzone metody

Pytanie: jakie opóźnienie jest dopuszczalne?

Odpowiedź: idealnie, jeśli jest to mniej niż 1000 ms, a dopuszczalne jest opóźnienie od 2 do 5 sekund. Jeśli opóźnienie wynosi około 5 sekund, skontaktuj się z nami.


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

Odpowiedź: w przypadku urządzeń offline zwróć stan offline. W przypadku tego błędu zwracamy komunikat „obecnie niedostępne” jako TTS. Więcej informacji znajdziesz w sekcji Błędy i wyjątki.