デバイスの検出をサポートする

Google がクラウド フルフィルメントからの SYNC レスポンスで返されたデバイスとローカルで制御可能なデバイスを一致させると、ローカル フルフィルメント パスが確立されます。

Google がローカル ネットワーク上でデバイスを検出してローカル フルフィルメント パスを確立できるようにするには、Actions Console で検出情報を追加する必要があります。また、クラウド フルフィルメントからの SYNC レスポンスを更新して、ローカルで制御可能なデバイスに関する情報を Google に伝えることも必要です。

スキャン設定情報をセットアップする

検出情報を指定するには、次の手順に従ってください。

  1. Google Home Developer ConsoleCloud-to-cloud 統合に移動します。

    Developer Console に移動します。

  2. 画面の左側で [プロジェクト] > [クラウド間] に移動し、統合の [編集] を選択します。[設定] ページで [ローカル フルフィルメント] までスクロールし、設定をオンに切り替えます。各テスト URL フィールドに次の URL を入力し、プロジェクト ID を挿入して [Save] をクリックします。

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

  3. [デバイス検出] で [+ スキャン構成を追加] をクリックして、新しいスキャン構成を追加します。

  4. プルダウンからスキャン一致プロトコル タイプを選択し、Google がスキャンする値を入力します。

次の表は、デバイスのスキャンに使用するプロトコル別に、追加できる属性を示したものです。

mDNS
属性 説明 値の例
サービス名 必須。デバイスで公開されるサービス名(service.domain 形式)。 _http._tcp.local
名前

必須。一意のサービス インスタンス用のフィルタ(instance.service.domain 形式)。

プラットフォームでこの値が正規表現として処理され、一致するデバイスが返されます。
my-device-[0-9]{4}\._http\._tcp\.local
UPnP
属性 説明 値の例
サービスの種類 必須。UPnP サービスの完全修飾 ID(domain:service:type:version 形式)。 schemas-upnp-org:service:SwitchPower:1
OUI

省略可。組織に固有の識別子

デバイスのメーカーを識別する 24 ビットの値。 通常、デバイスの MAC アドレスの最初の 3 オクテットです。
1A:2B:3C
UDP
属性 説明 値の例
検出アドレス 必須。UDP ブロードキャストの宛先 IP アドレス。 255.255.255.255
ブロードキャスト ポート 必須。UDP ブロードキャストの宛先ポート。 5555
リッスンポート 必須。UDP 検出応答のリッスンポート。 5556
検出パケット

必須。UDP ブロードキャストで送信するペイロード。

バイトの 16 進数でエンコードされた文字列の形式。
48454C4C4F

クラウド フルフィルメントで SYNC レスポンスを更新する

SYNC インテントは、ユーザーが操作するデバイスとその機能をアシスタントに報告します。

ローカル フルフィルメントをサポートするため、ローカルホーム プラットフォームは、スマートホーム アクションのクラウド フルフィルメントからの SYNC レスポンスをチェックし、otherDeviceIds フィールド内のデバイス ID と IDENTIFY ハンドラによって返された検証 ID を照合します。otherDeviceIds フィールドのないデバイス エントリは、ローカル フルフィルメントから除外されます。

SYNC レスポンスの otherDeviceIds フィールドに、ローカルで制御可能なスマートホーム デバイスのデバイス ID を設定する必要があります。このフィールドはレスポンスの device レベルにあります。Google では、指定された ID を持つすべてのデバイスでローカル フルフィルメント パスを確立できます。

customData フィールドを使用して、Google がスタンドアロン デバイスに接続する、またはハブを使用してエンドデバイスをターゲットとする場合に必要となる追加データ(ポート番号やその他のプロトコル固有の情報など)を指定します。

次のスニペットに、SYNC ハンドラの作成方法を示します。

スタンドアロン / ハブ
{
  "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": "..."
      }
    }]
  }
}