今回テーマにするのは SmartHome です。スマートホームで真っ先に思い浮かぶのは何でしょうか?
日本では特に大震災後の省電力キャンペーンが余りに印象が強く「電力見える化」ばかりが強調されて HEMS 即ち Home Energy Management System と補助金の構図がその後の進展を止めたと言えます。日の丸指導でいつもの独自路線をメーカーに押し付けてEconet/Echonet Lite を策定しています。どんなスペック作るのもいいですが、ワールドワイドに受け入れられるようにしてもらいたいものです。
さて、家電機器の制御ということでは、AppleのHomeKitというのがSmartHomeの先陣として発表されました。これもApple独自色が強く、iPhoneアプリの審査よろしく接続機器すべてがAppleの審査にあわなければならないというようなものであり、しかも既存の機器を制御することもできなかったので何年たっても一向に普及しません。当初は、「2種類の電化製品があります。一つは製品についているリモコンでしか使えないもの、もう一つはiPhoneかスマホで制御できるもの。あなたはどちらを選びますか」というような論がささやかれていたくらいです。Appleの後を追ってGoogleも色々な構想をうちたててみるもののほとんどの企画は事実上のお流れになっています。CMでOK Google 電気消してと言って制御のできる機器がどれだけしかないか。なんでもスマホと連携できるという考えはすばらしいことですが、すべてをAppleとかGoogleに初めから牛耳られたくはありません。その隙間からAmazonがAlexaやダッシュボタンみたいなものを突っ込んできてAmazonが今後のSmartHomeの主導を握りそうな勢いです。Hey Siri, OK Google, Alexa, ....やっとこれからがおもしろそうになってきました。
今回は、もっともっと実用的な目の前の課題から入っていきます。最初は単純なことから始め、しかしながらそれが近いうちにもっと大きな家中の家電を操作したり、AIを使って自動運転したりすることにつながることを感じ取ってもらえると思います。
最初の図1に示したのが、BroadLink社が開発、日本仕様のものを開発製造しているLinkJapan社のeRemote(イ−リモート)という製品とそれを核にしたコンセプトシステムを示しています。eRemoteとは、WiFi経由でクラウドサーバーにつながっており、赤外線リモコンのコードを送出することでリモコンで制御する家電機器をスマホやネットから行おうというものです。ここがスタートポイントです。(同様な考えでこのコラムでもCuBox-iにIrMagician をつけて遠隔から赤外リモコン操作の工作を紹介しています)
図1
今日のテーマに入る前に、まずeRemoteがどのように動作する仕組みとなっているかについておさらいすることから始めます。eRemoteで一頭最初にすることはeControlというスマホのアプリを立ち上げることです。最初はデバイスの追加という操作をして、eRemoteを使うWiFi環境(=家で使っているWiFi環境)に登録することから始まります。WiFiに登録ができるとインターネット経由でLinkJapanのサーバーに接続され、そこに登録されます。次に、eRemoteで制御したいエアコンのリモコンを用意します。eControlアプリのTOPから右上の(+)を押してリモコンーeRemoteーリモコンパネルの選択−エアコン と進み、学習させたいリモコンの電源ボタンを押します。冷房の設定、暖房の設定など細かなことが色々できますが最初はまずON/OFFできることからやってみると良いでしょう。エアコンなどはほとんどの機種がプリセットされているのでクラウドサーバーからリモコンデータを自動的にとってきてくれます。大変便利になっています。また、クラウドサーバーがあるおかげで、家の外からもスマホで操作できます。
以上で「通常の」使い方ができます。
これらのシステムはクラウドサーバーの助けを借りるものです。今回のコラムで紹介するのは、このeRemoteをすべて自分流で調理してみましょうというものです。
図2が全体像です。eRemoteがWiFiネットワークに接続されるところまでは同じですが、RMブリッジというAndroidアプリを使用してiPhoneを接続、外からの家の中のネットワークにアクセスできるように(NAT越え)できるngrokサーバーを繋いでみることに挑戦します。
このようなことをする目的は、技術的な楽しみもありますが、IFTTTに接続してみようということです。今回はまだ未着手ですがこのような接続口からAmazonEchoに繋ぐこともできるのではないかと期待がふくらみます。
IFTTTに接続ができれば、LINEからコマンドを送ることもできるし、クラウドのAIを使ってその結果で自動運転するようなこともできるようになるでしょう。畑の照明や肥料管理、セキュリティまでをAIで動かす未来もあるかもしれません。
図2
図3にIFTTTを載せました。IFTTTは、何かの条件で何かをする、という設定を作れるものです。条件設定はレシピと呼ばれています。トリガーとなる条件とアクションと呼ばれるサービスを設定できます。Facebookに自分がタグ付けされた写真がでたらお知らせに表示させるとか、気温が30℃を越えたらメールを受取る、というようなかんじです。このようなトリガーとアクションの組合せがレシピというわけですが、すでにすごい数ができています。今後はもっと複雑な処理をクラウドで行うAIなども取り込んだレシピもできそうです。
今回は、このIFTTTをeRemoteにつなぐのが目標となります。
eRemoteの通常の動作を得るためにはLinkJapan(BroadLink)のクラウドサーバーがリモコン制御のために必要となります。これが大変便利な機能を提供してくれていることは前の説明の通りですが、さて機能を拡張してみたい、別のシステムと連動させるには、というようなことになるとオープンなシステムではないので何も手が出せません。IFTTTに繋ぐことができません。そのために、オフィシャルのクラウドサービスに代わるものが必要で、その一つがRM Bridgeというわけです。
それでは、RM Bridgeを早速試していきましょう。これが実はとても単純で、Android端末でアプリをインストールするだけで終了です。これが何をするものか、を理解することがここの本質です。
図3
今回はCuBox-i2exのAndroid上でRM Bridgeを起動し、それをブラウザからアクセスしたところが図4となります。ローカルネットのIPアドレスを入れて「スタート」するだけです。(基本的には同じネットワーク上にあるeRemoteを認識しますが、デバイスに記載されたmacアドレスを自分で入れることもできます)
図4
次の図5に次の設定ページがあります。eRemoteデバイスを選択し、覚えさせるリモコンを用意します。Step3ではあとで区別できる名前をつけてリモコンを操作してコードを覚えさせます。Step4では生成されたテストコードを試す事ができるとともに、そのコードを貼り付けることでたのアプリから使うことが出来るようになります。テストが上手くいったらこの手続きで機器のON/OFFだとかボリュームUP/DOWNだとか登録したいだけ行っていけばよいことになります。
図5
それでは次にIFTTTの設定をしていきます。
PCからの操作するほうがやりやすいでしょう。図6に設定手順を載せています。
図6
手順としては、まずIFTTTのアプレットを作り、トリガーの設定、そしてアクションの設定へと続きます。図7のようにアカウントを作りMaker Webhooksイネーブルします。
図7
トリガーの設定では、+thisをクリックして、図8のようにGoogle Assistant.を探し、簡単なフレーズ、ここでは例えば「TV on」のようなコマンドと、コマンドを与えた時に応える確認のフレーズ、例えば「Turning the TV on」を登録します。
図8
アクションの設定では、+thatをクリックして、Maker Webhooksをさがします。図9のようにアクションを記入します。ここで先のRM Bridgeを使うことになります。
図9
以上でうまく行けばgoogleで音声コマンドでリモコン操作ができあがりです。
最後に、CuBox-i2exのAndroidをブリッジに使っているので、家の外から動作させたい場合には、インターネット越しに家のローカルネットワークへアクセスする必要があります。これを解決させるためにngrokを使う例を図10に示します。
図10
ngrokをダウンロードしてきて起動させるとランダムに振り分けられたURLが表示されます。ブラウザからそのhttp://xxxxxxxx.ngrok.io へアクセスすると、vagrantの80番ポートにアクセスが可能となるという仕組みです。
実際の設定は図11のようなかんじです。
図11
今回はRMブリッジを使ってeRemoteの機能拡張をしてIFTTTから利用できることを示した。同じような音声コマンドではあるが、AmazonのAlexaを使うのはさらにハードルが高い。Petapicoテクノロジ軍団は現在メーカーのLinkJapanとも協力しながらトライをしていて、製品として公開できることをめざしています。こちらも乞うご期待。