Obsługa wykrywania urządzeń

Ścieżka lokalnego przetwarzania jest ustalana, gdy Google dopasuje urządzenie z kontrolą lokalną do urządzenia zwróconego w odpowiedzi SYNC z Twojego przetwarzania w chmurze.

Aby umożliwić Google wykrywanie Twojego urządzenia w sieci lokalnej i ustalenie lokalnego sposobu realizacji, musisz dodać informacje o wykrywalności w konsoli Actions. Musisz też zaktualizować odpowiedź SYNC z usług wdrożonych w chmurze, aby poinformować Google o urządzeniu sterowanym lokalnie.

Konfigurowanie informacji o konfiguracji skanowania

Aby określić informacje o poszukowaniu:

  1. Otwórz integrację Cloud-to-cloud w sekcji Google Home Developer Console:

    Otwórz konsolę dewelopera.

  2. Po lewej stronie ekranu kliknij Projekt > Zdjęcia z chmury do chmury, a następnie wybierz Edytuj dla integracji. Na stronie Konfiguracja i ustawienia przewiń do sekcji Realizacja lokalna i włącz to ustawienie. W każdym polu testowego adresu URL wpisz ten adres URL, wstaw identyfikator projektu i kliknij Zapisz:

    https://<project-id>.web.app/local-home/index.html

  3. Aby dodać nową konfigurację skanowania, w sekcji Wykrywanie urządzeń kliknij + Dodaj konfigurację skanowania.

  4. W menu wybierz typ protokołu dopasowania skanowania i wpisz wartości, które Google ma skanować.

W tabeli poniżej znajdziesz atrybuty, które możesz dodać w zależności od protokołów, których Google ma użyć do skanowania urządzenia:

mDNS
Atrybut Opis Przykładowa wartość
Nazwa usługi Wymagane. Nazwa usługi opublikowana przez urządzenie w formacie service.domain. _http._tcp.local
Nazwa

Wymagane. Filtruj według unikalnej instancji usługi w formacie instance.service.domain.

Platforma traktuje tę wartość jako wyrażenie regularne i zwraca wszystkie urządzenia, które z nią pasują.
my-device-[0-9]{4}\._http\._tcp\.local
UPnP
Atrybut Opis Przykładowa wartość
Typ usługi Wymagane. Pełny identyfikator usługi UPnP w formacie domain:service:type:version. schemas-upnp-org:service:SwitchPower:1
OUI

Opcjonalnie: Organizacyjnie unikalny identyfikator.

24-bitowa wartość identyfikująca producenta urządzenia. Zwykle są to pierwsze 3 oktety adresu MAC urządzenia.
1A:2B:3C
UDP
Atrybut Opis Przykładowa wartość
Adres Discovery Wymagane. Docelowy adres IP dla transmisji UDP. 255.255.255.255
Port nadawania Wymagane. Port docelowy dla transmisji UDP. 5555
Port nasłuchujący Wymagane. Port nasłuchiwania odpowiedzi na zapytanie o usługę UDP. 5556
Pakiet Discovery

Wymagane. Ładunek do wysłania w transmisji UDP.

Sformatowany jako szesnastkowy ciąg bajtów.
48454C4C4F

Aktualizowanie odpowiedzi SYNC w wypełnianiu w chmurze

Intencja SYNC informuje Asystenta, jakie urządzenia kontroluje użytkownik i jakie mają one możliwości.

Aby obsługiwać realizację lokalną, platforma Local Home sprawdza odpowiedź SYNC z urządzenia z obsługą w chmurze i próbuje dopasować identyfikatory urządzenia w polu otherDeviceIds do identyfikatora weryfikacyjnego zwróconego przez element obsługi IDENTIFY. Wpisy urządzeń bez pola otherDeviceIds są wykluczane z wypełniania lokalnego.

W polu SYNC odpowiedzi SYNC musisz podać identyfikatory urządzeń inteligentnego domu, którymi można sterować lokalnie.otherDeviceIds Pole to pojawia się na poziomie device w odpowiedzi. Google może ustalić lokalną ścieżkę realizacji na dowolnym urządzeniu z danym identyfikatorem.

W polu customData możesz podać dodatkowe dane, których Google potrzebuje, aby połączyć się z samodzielnym urządzeniem, lub docelowe urządzenia końcowe za pomocą koncentratora (np. numer portu i inne informacje o protokołach).

Przykład

W tym fragmencie kodu pokazujemy, jak utworzyć element obsługi SYNC.

Samodzielny/centralny
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "agentUserId": "1836.15267389",
    "devices": [{
      "id": "123",
      "type": "action.devices.types.OUTLET",
      "traits": [
        "action.devices.traits.OnOff"
      ],
      "name": {
        "name": "Night light"
      },
      "willReportState": false,
      "otherDeviceIds": [{
        "deviceId": "local-device-id"
      }],
      "customData": {
        "port": 5555,
        "authToken": "..."
      }
    }]
  }
}