Obsługa wykrywania urządzeń

Lokalna ścieżka realizacji jest tworzona, gdy Google dopasuje urządzenie sterowane lokalnie do urządzenia zwróconego w odpowiedzi SYNC z realizacji w chmurze.

Aby umożliwić Google wykrywanie urządzenia w sieci lokalnej i utworzenie lokalnej ścieżki realizacji, musisz dodać informacje o wykrywaniu w konsoli Actions. Musisz też zaktualizować odpowiedź SYNC z realizacji w chmurze, aby poinformować Google o urządzeniu sterowanym lokalnie.

Konfigurowanie informacji o skanowaniu

Aby określić informacje o wykrywaniu, wykonaj te czynności:

  1. W Google Home Developer Console otwórz integrację z Cloud-to-cloud:

    Otwórz Developer Console.

  2. Po lewej stronie ekranu kliknij Projekt > Chmura do chmury, a następnie wybierz Edytuj w przypadku integracji. Na stronie Konfiguracja przewiń do sekcji Realizacja lokalna i włącz to ustawienie. W każdym polu adresu URL testu 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. Z menu wybierz typ protokołu dopasowania skanowania i wpisz wartości, które Google ma skanować.

W tabelach poniżej znajdziesz atrybuty, które możesz dodać, w zależności od protokołów, których Google ma używać 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. Filtr dla unikalnej instancji usługi w formacie instance.service.domain.

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

Opcjonalnie. Identyfikator OUI.

24-bitowa wartość identyfikująca producenta urządzenia. Zwykle pierwsze 3 oktety adresu MAC urządzenia.
1A:2B:3C
UDP
Atrybut Opis Przykładowa wartość
Adres wykrywania Wymagane. Docelowy adres IP transmisji UDP. 255.255.255.255
Port transmisji Wymagane. Port docelowy transmisji UDP. 5555
Port nasłuchujący Wymagane. Port nasłuchujący odpowiedzi na wykrywanie UDP. 5556
Pakiet wykrywania

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

Sformatowany jako ciąg bajtów zakodowany w postaci szesnastkowej.
48454C4C4F

Aktualizowanie odpowiedzi SYNC w realizacji w chmurze

Intencja SYNC informuje Asystenta, jakimi urządzeniami steruje użytkownik i jakie są ich możliwości.

Aby obsługiwać realizację lokalną, platforma Local Home sprawdza odpowiedź SYNC z realizacji w chmurze działania inteligentnego domu i próbuje dopasować identyfikatory urządzeń w polu otherDeviceIds do identyfikatora weryfikacji zwróconego przez obsługę IDENTIFY. Wpisy urządzeń bez pola otherDeviceIds są wykluczane z realizacji lokalnej.

W polu otherDeviceIds odpowiedzi SYNC musisz ustawić identyfikatory urządzeń inteligentnego domu, którymi można sterować lokalnie. Pole pojawia się w odpowiedzi na poziomie device. Google może utworzyć lokalną ścieżkę realizacji na dowolnym urządzeniu o podanym identyfikatorze.

Użyj pola customData, aby określić dodatkowe dane, których Google potrzebuje do połączenia się z urządzeniem samodzielnym lub do kierowania na urządzenia końcowe za pomocą huba (np. numer portu i inne informacje specyficzne dla protokołu).

Przykład

Poniższy fragment kodu pokazuje, jak utworzyć obsługę SYNC.

Autonomiczne/Hub
{
  "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": "..."
      }
    }]
  }
}