2017-12-07 15 views
0

Google Smart Homeの仕組みを明確にしたいと考えています。 ライトを制御する現在の端末デバイスをGoogle Smart Homeに統合しようとしています。Google Smart HomeとIoTデバイスとの統合

私のエンドデバイスは、ここで(Linuxは使用できません)

をRTOSを利用し、非常に小さなマイクロコントローラを実行しているが、私はそれを見る方法です(訂正したり、コメントしてください)

  • 私の理解するために、この自分の現在の端末と通信する自分のクラウドサービス をホストする必要がありますか?
  • 私のクラウドサービスは、Googleクラウドサービスと通信します。
  • マイクラウドサービスは
  • Googleのスマートホームは、私のクラウドサービスへ

質問

  1. を話すためのプロトコルを定義する複数のエンドデバイスと通信するためにプロトコルを定義する任意の方法はあります私自身のクラウドサービスを持たずにこれを行うのですか?

答えて

1

これは事のかなり基本的な要約です - はい。

重要な点は、Googleホームにコマンドを発行するとではなく、ローカルネットワーク上でメッセージを送信することです。 Googleは、あなたのデバイスからではなく、ネットワークからのコマンドを発行します。

これは細部のように見えるかもしれませんが、Googleが管理する「クラウドサービス」である必要はありません。 は、公開されているHTTPSエンドポイントである必要があります。これはクラウドサービス(ほとんどの場合)、クラウド非公開サーバー、またはプライベートネットワークへのトンネルを持つパブリックURL(ngrokなど)でも可能です。

最後はローカルマシン上でコントロールをセットアップし、ngrokを使ってトンネルを設定することができます。

+0

私自身のクラウドサービスを使用せずに、ラガー規模(複数の家庭にある1000台のデバイス)で考える。デバイスごとに公開URLが必要になります。 Googleサービスは、公開URLになったら公開URLをどのように知っていますか? – IamAUser12

+0

個々のデバイスへの要求を容易にするために使用できる、ある種の中央サーバーが必要です。各実行要求には、固有のデバイスIDが含まれます。このIDを使用して、必要なエンドデバイスを特定できます。 しかし、QUERY要求も同様に処理して、アシスタントのデバイス状態に戻すことが、中央サーバーに期待されます。 デバイス状態を保存し、アシスタント要求を処理するには、ある種のサービスが必要です。これは、Firebaseの機能とリアルタイムデータベースを使用して軽量な方法で実行できます。 –

1

私は具体的な例としては有益であるかもしれないと思う:ここIFTTTなどの仲介サービスを使用して、あなたのデバイスにGoogleホームを接続する方法は次のとおりです。

  1. は、ANにGoogleのアシスタントを接続するためにIFTTTにレシピ(アプレット)を作成します。 Webhookサービスを使用したngrokトンネル。これにより、Google Homeが認識する簡単なキーワードフレーズを定義することができます(「Googleが自分の端末をオンにする」など)。アプレットはウェブフックを呼び出します。 ngrok - myngroktunnelはあなたのngrokトンネルアドレス(下記#2を参照)であり、Control.cgiはあなたのマイクロコントローラに置いたCGIスクリプトです(下記の#を参照してください)、定義するカスタムコマンド( "https://myngroktunnel.ngrok.io/Control.cgi?mydevice=on" 3)。

  2. マイクロコントローラにngrokをインストールして実行する必要があります。これは、ngrokトンネル経由でIFTTTアプレットをマイクロコントローラに接続し、マイクロコントローラに要求を転送する公開アクセス可能なURLを提供します。通常は、ngrokトンネルを、Webサーバーを実行しているマイクロコントローラ上の特定のポートに転送します(例:Apache)を使用してデバイスを制御します。 Web上には、他にも安全なトンネルサービスがあります。ngrokはその1つです。したがって、あなた自身のWebサービスをホストする必要はありませんが、公開アクセス可能なサービスにトンネルを使用する必要があります。

  3. あなたのマイクロコントローラに置いたWebサーバーには、デバイスを制御するCGIスクリプトがあります(たとえば、mydevice = 1のコマンド文字列を指定すると、デバイスをオンまたはオフにするControl.cgiスクリプトがあるとします)例えば、上IFTTTアプレットでフックは「/Control.cgi?mycommand=on」もちろん

は、あなたのマイクロコントローラ・ミューズのRTOSがngrokとWebサーバを実行できることである - なぜ多くの本ですLinuxの一種であるRaspberry PiやOrange Piのようなシングルボードコンピュータを使用してデバイスをホストして制御することを選んだのですが、デバイスのRTOSはLinuxではないので、Linuxデバイスを手に入れて、 LANを介してRTOSデバイスにリクエストを送信します。

関連する問題