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?

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ę. 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ć unikalne?

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 użytkownicy mogli je wypowiedzieć.
  • Rozpoznajemy podzbiory ciągów znaków, więc jeśli masz „acme color light”, odpowiemy też na zapytanie „acme light”.
  • Zalecamy podanie zarówno nazwy opisowej produktu, jak i co najmniej jednej nazwy zdefiniowanej przez użytkownika.
  • Użytkownicy nie muszą podawać nazw pomieszczeń, w których znajdują się światła, 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 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, 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 zgodne z naszą specyfikacją.
  • 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.
  • Odpowiedź na żądanie SYNC trwa zbyt długo.

    • 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 „oczekująca” – zdajemy sobie sprawę, że niektóre urządzenia o niskim poborze mocy, które nie działają w czasie rzeczywistym, mogą wymagać odpowiedzi „oczekująca” i asynchronicznego modelu wykonywania.


Testowanie i przesyłanie

P: Czy możemy skonfigurować chmurowe środowisko programistyczne?

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: Interesuje nas przejście i stan końcowy. 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 nam zgłoszenie stanu końcowego.


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 awaryjny, którego nie zalecamy. Jeśli będziemy musieli często odpytywać urządzenia tych użytkowników, nie możemy zagwarantować, jakie będzie dodatkowe obciążenie. Wynika to z pojawienia się nowych platform wizualnych. Oprócz problemu z nieznanym obciążeniem 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 w trybie online.

Pamiętaj, że sceny nie mają stanów. Mogą one jednak spowodować zmianę stanu urządzeń. Jeśli na urządzeniu w Google Home Graph nastąpi zmiana stanu, należy ją 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ę osobno 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 przypadku odpowiedzi 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 – 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 partnerom używanie tego samego identyfikatora requestId, który otrzymali w odpowiedzi na żądanie EXECUTE, jeśli wywołanie funkcji Report State następuje w odpowiedzi na żądanie EXECUTE. 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 1000 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: zwracaj stan offline w przypadku urządzeń offline. W przypadku tego błędu zwracamy komunikat „niedostępne w tej chwili” jako TTS. Więcej informacji znajdziesz w sekcji Błędy i wyjątki.