Local Home SDK は、スマートホーム インテントをルーティングするためのローカル フルフィルメント パスを追加し、スマートホームと Google アシスタントの統合を強化するためのものです。
Local Home SDK を使用すると、スマートホーム ビジネス ロジックを含むローカル フルフィルメント アプリを TypeScript または JavaScript で作成できます。作成したアプリは、Google Home デバイスまたは Google Nest デバイスに読み込んで実行します。アプリは、ローカルエリア ネットワーク(LAN)上の Wi-Fi 経由で既存のスマート デバイスと直接通信して、既存のプロトコル経由でユーザー コマンドを実行します。
この SDK の統合により、レイテンシの短縮や信頼性の向上など、スマートホーム アクションのパフォーマンスが向上します。ローカル フルフィルメント: すべてのデバイスタイプとデバイス トレイトでサポートされています。 セカンダリ ユーザー 確認します。
仕組みを理解する
ローカルホーム プラットフォームは、クラウド フルフィルメントから SYNC
レスポンスを取得すると、mDNS、UDP ブロードキャスト、または UPnP を使用してユーザーのローカルエリア ネットワークをスキャンし、アシスタントに接続されたスマート デバイスを検出します。
プラットフォームは IDENTIFY
インテントを送信し、IDENTIFY
レスポンス内のデバイス ID を以前の SYNC
レスポンスによって返されたものと比較して、検出されたデバイスがローカルで制御可能かどうかを判断します。検出されたデバイスがハブまたはブリッジの場合、プラットフォームは REACHABLE_DEVICES
インテントを送信して、そのハブをローカルに通信するためのプロキシ デバイスとして扱います。
受信したレスポンスでローカル デバイスを確認すると、プラットフォームは、ユーザーの Google Home デバイスまたは Google Nest デバイスへのローカル フルフィルメント パスを確立してから、ローカル フルフィルメント用のユーザー コマンドをルーティングします。
ローカル フルフィルメント パスを含むスマートホーム アクションをユーザーがトリガーすると、
アシスタントが EXECUTE
を送信します。
インテントまたは QUERY
インテントを
クラウド フルフィルメントではなく、Google Home または Google Nest デバイスを使用する。デバイスはローカル フルフィルメント アプリを実行してインテントを処理します。
ローカルホーム プラットフォームは、どの Google Home デバイスまたは Google Nest デバイスを選択してコマンドをトリガーするかにおいては非決定的です。EXECUTE
インテントと QUERY
インテントは、
同じホームグラフで定義された Google Home デバイスまたは Google Nest デバイス
ストラクチャを対象デバイスとして設定します。
ローカル フルフィルメント アプリ
ローカル フルフィルメント アプリには、ローカルホーム プラットフォームから送信されたインテントを処理し、ローカルエリア ネットワーク経由でスマート デバイスにアクセスするためのビジネス ロジックが組み込まれています。ローカル フルフィルメントを統合するためにハードウェアを修正する必要はありません。アプリは、HTTP、TCP、UDP などのアプリケーション レイヤ プロトコルを介してスマート デバイスに制御コマンドを送信することによって、スマートホーム アクション リクエストを実行します。ローカル フルフィルメント パスで障害が発生した場合は、クラウド フルフィルメントが代替実行パスとして使用されます。
アプリの構築をサポートするために、Local Home SDK には次の 2 つの主要なクラスが用意されています。
DeviceManager
: TCP、UDP ソケット、または HTTP リクエストを使用してスマート デバイスと通信するためのメソッドを提供します。App
: Google が送信するインテントのハンドラをアタッチするメソッドを提供する ローカルで制御可能なデバイス(IDENTIFY
、REACHABLE_DEVICES
)。このクラスはユーザー コマンド(EXECUTE
)も実行します。 現在のデバイスの状態(QUERY
)に関するユーザーのクエリに応答する。
開発中は、独自のホスティング サーバーまたはローカル開発マシンにアプリを読み込むことによって、アプリのビルドとテストを行うことができます。本番環境では、Google がユーザーの Google Home デバイスまたは Google Nest デバイス上の安全な JavaScript サンドボックス環境でアプリをホストします。
Report State API を 現時点ではローカルフルフィルメントはサポートされていませんGoogle は、クラウド フルフィルメントを利用してこれらのリクエストを処理します。
アプリケーションのライフサイクル
ローカル フルフィルメント アプリは、ローカルホーム プラットフォームが検出を プロジェクト スキャン構成に一致するか、保留中になっている新しいローカル デバイス 配信するインテントです。
Google Home デバイスや Google Nest デバイスはメモリ容量が限られているため、ローカル フルフィルメント アプリはシステムのメモリ使用量に応じていつでも強制終了される可能性があります。これにより、 アプリが大量のメモリを消費し始めた場合や 別のアプリ用のスペースを確保します ローカルホーム プラットフォームは、新しいインテントがある場合にのみ、アプリを再起動します。 アプリを実行するのに十分なメモリリソースを提供します。
ユーザーがホーム アカウントのリンクを解除した場合や、ユーザーの agentUserId
に関連付けられたローカル フルフィルメントをサポートするデバイスがなくなった場合は、アイドル タイムアウト後にアプリがアンロードされます。
サポートされているデバイス
ローカルホーム プラットフォームは、サポートされているローカル フルフィルメント アプリを実行します。 Google Home デバイスまたは Google Nest デバイス。次の表に、サポートされているデバイス、および 使用した時間を表します。ランタイム要件について詳しくは、以下をご覧ください。 実行環境。
デバイス | タイプ | 環境 |
---|---|---|
Google Home | スピーカー | Chrome |
Google Home Mini | スピーカー | Chrome |
Google Home Max | スピーカー | Chrome |
Nest Mini | スピーカー | Chrome |
Nest Hub | ディスプレイ | Chrome |
Google Nest Hub Max | ディスプレイ | Chrome |
Nest Wifi | ルーター | Node.js |
拡張ポイント | Chrome |
実行環境
ローカル フルフィルメント アプリの実行環境は、 device:ローカルホーム プラットフォームは以下をサポートしています ランタイム環境を提供します。
- Chrome: ローカル フルフィルメント アプリが Chrome のコンテキスト内で実行されます。
Chrome を実行しているブラウザ
window
M80 以降のバージョンを ECMAScript バージョン ES2018。 - Node.js: ローカル フルフィルメント アプリは、Node.js 内でスクリプトとして実行されます。 Node v10.x を実行しているプロセスが LTS 以降のバージョンを ECMAScript バージョン ES2018。
ソースコードの構造
次のように、依存関係を 1 つの JavaScript ファイルにまとめることをおすすめします。 Bundler の構成 ソースコードをパッケージ化してパッケージ化する方法を すぐに呼び出される関数式 (IIFE)をご覧ください。
実装パス
Local Home SDK をスマートホーム統合に使用するには、次のタスクが必要となります。
1 | スキャンを設定する 構成 | アシスタントがローカルで制御可能なデバイスを検出するために必要なパラメータで Actions Console を設定します。 |
2 | クラウド フルフィルメントでの SYNC レスポンス | クラウド フルフィルメントで、プラットフォームがローカル フルフィルメント パスの確立に使用する
otherDeviceIds フィールドをサポートするよう SYNC リクエスト ハンドラを変更します。そのフィールドで、ローカルで制御可能なデバイスの ID を指定します。
|
3 | ローカル フルフィルメント アプリ | Local Home SDK を使用して、IDENTIFY インテント、
EXECUTE インテント、
QUERY インテントを処理するための JavaScript アプリを作成します。ハブまたはブリッジ プロキシ デバイスの場合は、REACHABLE_DEVICES インテントも処理する必要があります。
|
4 | アプリをテストしてデバッグする | 以下を使用して統合をテスト(または自己診断)します。 Google Home テストスイート。 |
始める前に
- スマートホームの作成に関する基本事項をよく理解してください。 アクション。
- [アクション console で、 既存のスマートホーム プロジェクトがあり、アカウントのリンクが有効になっていることを確認します。 確認できます。
- Actions Console とテストデバイス上のアシスタントで同じ Google アカウントを使用してログインしていることをご確認ください。
- Node.js または アプリを記述する必要があります。Node.js と npm をインストールする場合は、Node.js のバージョン マネージャー が推奨されます。
- 最新バージョンの Local Home SDK を使用するには、以下を行う必要があります テストデバイスを Cast プレビューに登録する プログラムをご覧ください。