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 „acme color light”, odpowiemy też na „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 podczas wykonywania zapytań lub poleceń, 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 konta 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 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

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 to wynikać z kilku przyczyn.

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

    • Na przykład oczekujemy wartości action.devices.types.LIGHT, a 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 grupy!
  • 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, wolimy otrzymywać odpowiedź o sukcesie lub niepowodzeniu zamiast odpowiedzi „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ć chmurowe środowisko programistyczne?

O: tak, możesz przetestować nieuruchomione ś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 zgłosić 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 funkcji 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 są obecnie obsługiwane przez funkcję zgłaszania stanu?

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 powodować zmianę stanu urządzeń. Jeśli stan dowolnego urządzenia w Google Home Graph ulegnie zmianie, 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 już wysyłam go 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 związku z tym należy wywołać funkcję 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 narzędzia do samodzielnego testowania, które pokazuje bieżące stany urządzeń przechowywane 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 requestId, który otrzymali w odpowiedzi na żądanie EXECUTE, jeśli funkcja Report State jest wywoływana przez to żądanie. W przeciwnym razie możesz użyć losowego identyfikatora requestId.


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