amazon alexa と raspberry pi を使って簡単に スマートホーム を作る

2017年9月3日 0 投稿者: Toshiaki Matsuyama
Pocket
LINEで送る

 

スマートホーム を作る

スマート家電とかそういうのが無い普通のおうちでも音声入力による家電操作できるようにいろいろやってみました。
アマゾンのスマートスピーカーであるAlexaからの指示をなんとか赤外線リモコンにつないで既存の家電を操作しようという試みです。

少し前にraspberry piの使い方をメモしていましたが、ついに音声認識からの赤外線リモコンに対応した家電操作を安定して使えるようになったので方法を書いておきます。

せっかちな人のために簡単なフローチャートを書いておきます。

人→amazon alexa→IFTTT→slack→raspberry pi→USBリモコンキットアドバンス

カンの良い人はこれだけで簡単に作れそうですね。
あと、amazon alexaじゃなくてもsiri とか google assistan のやつでもできそうです。

スマートホーム構築に必要なものを順番に解説していきます。

1.人

一応分かっていると思いますがボイスコマンド使えるからといって必ずしも楽になるわけではありません。認識も100%ではないですし。
心構えが必要だと思います。

2.amazon alexa

将来的には部屋に置いておけるecho dotなどを経由すればいいと思います。英語しか対応していないので英語での入力になります。別にいいよね?
特に必要な設定は無いので使えるようにしておいてください。
2017年9月2日現在でアメリカのアマゾンアカウントが必要です。
 

3.IFTTT

slackとalexaの連携をしておきます。
レシピは
 
this amazon alexa Say a specific phrase にボイスコマンド 今回は”tv on”とします。
that slack post to channel で家電操作のslackコマンドを入れます。今回は「テレビつけて」としておきます。
slackコマンドは後ほど自分で作ります。
 
 

4.slack

こんなページにたどり着く人ならslackの使い方も僕より詳しそうなので適当に流してました。
使えるようにするだけです。

5.raspberry pi

5-1.HUBOT

raspberry piでよく使われるhubotの設定を行います。
sudo npm install -g npm
sudo npm install n
sudo npm install -g yo generator-hubot coffee-script
mkdir bot
cd bot
yo hubot
bot adapterについて聞かれたらslackと入力
 
次にslackのAPIとかのページに飛び、hubotの設定を行います。
hubotを選択して必要事項を入力するとAPI tokenが発行されます。
これを /bin/hubot 内の HUBOT_SLACK_TOKEN=に書き込みます。
 
その後、
bin/hubot -a slack
で起動するはずです。起動してなかったら悲しい
 

5-2.赤外線リモコンアドバンス

 
動いたらcoffee scriptでbotを書く…前に赤外線リモコンアドバンスの設定を行います。
ここでbto_advanced_USBIR_cmdをダウンロード
sudo apt-get install libusb
make
sudo make install
で使えるようになります。
使い方は
bto_advanced_USBIR_cmd -r
受光部に向かって設定したいリモコンを向けて設定したいボタンを押す(テレビの電源ボタンなど)
bto_advanced_USBIR_cmd -s
bto_advanced_USBIR_cmd -g | tee tvon.txt
で、tvon.txtの中に信号データが入ります。
送信コマンドは
bto_advanced_USB_cmd -d `cat ./tvon.txt`
です。送れるか試してみましょう。

5-3.hubot script

データがとれたところでhubotのスクリプトを書きます。
scrpitのフォルダに移動してこんな感じに書きます。
cp=require(‘child_process’)
module.exports = (remocon)->
    remocon.hear /テレビつけて/i,(msg)->
        cp.exec “bto_advanced_USB_cmd -d `cat さっきのtvon.txtのパス`”
            if stderr!=null
               msg.send “ok”
            else
               msg.send “#{stdout},#{stderr},#{error}”
これで動くはずです。
slackに直接「テレビつけて」と書き込んで動けば良いはずです。
これでIFTTTの設定ができていればamazon alexaに向かって”alexa, alexa trigger tv on”と言うだけでテレビが付くはずです。

7.仕上げ

raspberry piはともかくUSB赤外線リモコンアドバンスはショートに弱く素手で触ってるだけでエラー起こすので透明なケースに入れて使ってます。
こんな感じで赤外線の家電を音声入力で動かせるようになりました。

8.使用例

実際に僕が使ってる機能を一部紹介しておきます。
部屋の電気オンオフ
赤外線リモコンで電源を切り替えるコネクタを噛ませて無理やり対応させました。
シーリングライトを新しく買う方なら最初からスマートホーム対応の物を買うほうがいいでしょう。
ルンバ起動
ルンバのリモコン、実は赤外線なので起動とかも制御できます。
テレビ

電源とNHKだけ入れてあります。

空気清浄機
一発ターボという機能が案外便利です。
これよく使います。

扇風機
夏限定ですが使えます。
エアコン
温度調整とかはいい感じですがリモコン表示が対応してないので今何度なのかわからなくなりますね。双方向ではないというのが微妙
これらはリモコンが手元になかったり離れたりしてもスイッチ入れれるのでわりといいのではないかと思います。
本当はskillを開発してvoice commandも簡単なのにしたいのですがそこまで時間かけたくない方にはいいのではないでしょうか。
また、スマート家電非対応の従来家電をスマート?に接続できるのでわりかし低予算で組み上げれると思います。
実際使ってみるとリモコンが手元にある限りリモコン使ったほうが早いですし音声認識が通ってるか(”alexa”の起動ワードに反応してるか)を見るために少し時間かかってしまいます。
しかし、自分の作業や仕事をしつつ音声で指示を出せるというのは一々手を離さずに済む分良いのではないかと思います。
特にアレクサは部屋の離れた位置からでも音声を認識してくれるので使い込めば便利になるのではないでしょうか(適当)

9.まとめ

音声認識はIFTTTを挟んでslack hubotにつなごう
raspberry piからUSB赤外線リモコンアドバンスに繋いで従来家電を接続しよう
カラスになろう
次回予告
google home注文したのでこれに合わせてgoogle homeからも操作できるように改造する予定です。お楽しみに