Google がクラウド フルフィルメントからの SYNC
レスポンスで返されたデバイスとローカルで制御可能なデバイスを一致させると、ローカル フルフィルメント パスが確立されます。
Google がローカル ネットワーク上でデバイスを検出してローカル フルフィルメント パスを確立できるようにするには、Actions Console で検出情報を追加する必要があります。また、クラウド フルフィルメントからの SYNC
レスポンスを更新して、ローカルで制御可能なデバイスに関する情報を Google に伝えることも必要です。
スキャン設定情報をセットアップする
検出情報を指定するには、次の手順に従ってください。
- Actions Console でスマートホーム プロジェクトを開きます。
- 左側のナビゲーションで、[Actions](アクション)をクリックします。
- [Configure local home SDK (optional)](Local Home SDK の設定(省略可)) > [Add device scan configuration](デバイス スキャン設定の追加)で、[New scan config](新しいスキャン設定)をクリックします。
- プルダウンからスキャン一致プロトコル タイプを選択し、Google がスキャンする値を入力します。
次の表は、デバイスのスキャンに使用するプロトコル別に、追加できる属性を示したものです。
属性 | 説明 | 値の例 |
---|---|---|
サービス名 |
必須。デバイスで公開されるサービス名(service.domain 形式)。
|
_http._tcp.local |
名前 |
必須。一意のサービス インスタンス用のフィルタ( |
my-device-[0-9]{4}\._http\._tcp\.local |
属性 | 説明 | 値の例 |
---|---|---|
サービスの種類 |
必須。UPnP サービスの完全修飾 ID(domain:service:type:version 形式)。
|
schemas-upnp-org:service:SwitchPower:1 |
OUI |
省略可。組織に固有の識別子。 デバイスのメーカーを識別する 24 ビットの値。 通常、デバイスの MAC アドレスの最初の 3 オクテットです。 |
1A:2B:3C |
属性 | 説明 | 値の例 |
---|---|---|
ブロードキャスト アドレス | 必須。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": "..." } }] } }