News

お知らせ

2018年5月22日 投稿:stak編集部

GoogleHomeとESP32を使って音声でLEDを操作している様子

皆さんこんにちは。開発担当の上本です。

前回、IoTベンダーとGoogleHomeを支えるAction on Google という記事でAction on GoogleとGoogleHomeを連携している様子をお伝えしましたが、今回はstak(スタック)で実際に使用しているWiFiモジュール(ESP32)と連携した様子をお伝えします。

検証準備

今回の検証では、ESP32の開発ボードを2台用意し、AndroidのHomeアプリでそれぞれ「オフィス」と「リビング」に設置したものとして設定を行いました。

2台のESP32開発ボード。

Google Homeアプリでは、それぞれ「オフィス」と「リビング」に設定済み。

ESP32のプログラムには、WiFiに接続後にAWS IoTのデバイスシャドウを読み込むようにしています。

検証動画

LEDの明かりが小さくて分かりにくいかもしれませんが、青色のLEDが点灯したり消灯したりする様子が確認できます。実際には、ベースに連結したLEDモジュールの照明が点灯・消灯するといった具合になります。

音声コマンドからstakまでの全体像

さて、ここまでで動作するところばかりをお見せしてきましたが、内部の全体的な構造は一体どうなっているのか。簡単に解説します。

stakでは、大まかに下の図のような構成を取っています。

登場人物

AWS IoT

Amazon Web Serviceが提供しているクラウドサービスの一つ。IoTデバイスの管理に特化したサービスで、MQTTと呼ばれる軽量の通信方式でIoTデバイスとデータをやり取りする。

クラウド上では、デバイスシャドウというIoTデバイスの仮想的なオブジェクトを持っており、このオブジェクトをIoTデバイスと同期することでデバイスの操作を実現している。(※デバイスシャドウを使用しなくてもデバイス操作は可能)

Action on Google

Google Assistantに機能やサービスを追加するためのプラットフォーム。

IoTベンダーとGoogleHomeを支えるAction on Google

Rails

ruby製のWebサーバー。

stakでの役割は、ユーザーIDに紐づくデバイスの管理とLED照明や赤外線送信などのハンドリングを担当している。

MariaDB

データベースサーバー。

stakでの役割は、ユーザー情報やデバイスの管理を担当している。

 

動作フロー

① 音声認識の開始

stak利用者は、GoogleHomeに「OK Google、リビングの電気をつけて」と話します。

② スマートホームの音声解析

Action on Googleで利用者が発声した音声コマンドを解析し、解析結果をRailsへJSON形式で送信します。

③ アクションのハンドル

Railsは受け取ったJSONデータから、「どのユーザー」の「どのデバイス」を操作するのか、またデバイス操作対象は「照明モジュール」なのか、「赤外線モジュール」なのかなどを判断し、該当デバイスがあるかをデータベースに問い合わせます。

④デバイスの検索

Railsから指定された該当のデバイスがないかデータベース内を検索します。該当デバイスが見つかった場合、Railsにデバイス情報を転送します。

⑤デバイス情報とアクションを送信

AWS IoTとAction on Googleに向けてデバイス情報と、どのモジュールでどんな操作を行うかといったアクション情報を送信します。

⑥利用者へ応答

リビングの電気をつける旨を利用者に伝えます。もしもリビングにデバイスが見つからなかった場合は、「ライトはまだ設定されていません」と発声されます。

⑦デバイスシャドウの更新

AWS IoTのデバイスシャドウと各stakデバイスは同期されているので、デバイスシャドウのLEDの項目をonと設定することで、stakのLEDが点灯します。

以上が、stakとAction on Googleを結ぶ大まかな流れとなっています。できればもっと噛み砕いて解説していきたいですが、それは別の記事にてご紹介します。

さいごに

Google Homeとstakが連携する様子と、その内部構造をざっくりと解説しましたが、いかがでしたでしょうか?個人的には意外とシンプルな構成なのかなと思います。

現状ではユーザーとデバイス管理にはRailsのWebAPIを使用して構築していますが、スケールアップが容易なAWSのLamdaやGatewayを使用したサーバーレスの環境で構築してみるのも良いかもしれません。

製品段階でどんな構成を取っているかはまだわかりませんが、みなさまが快適に使っていただけるように開発を進めていきます。

stakの最新情報を受け取ろう

stakはブログやSNSを通じて、製品やイベント情報など随時配信しています。
メールアドレスだけで簡単に登録できます。