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

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

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

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

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

  1. Actions Console でスマートホーム プロジェクトを開きます。
  2. 左側のナビゲーションで、[Actions](アクション)をクリックします。
  3. [Configure local home SDK (optional)](Local Home SDK の設定(省略可)) > [Add device scan configuration](デバイス スキャン設定の追加)で、[New scan config](新しいスキャン設定)をクリックします。
  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": "..."
      }
    }]
  }
}