これはAmazon Alexa Advent Calendar 2017の4日目の記事です。
Amazon Echo Dotを発売翌日に入手して意気揚々とセットアップしたものの、USとJPでアカウント結合しているのが良くなかったのか「居住国設定が正しくありません」と言われてうまく動いてくれません。仕方ないのでサポートに連絡したもののなしのつぶて。Alexa Skillsを開発しようとしても、SkillsやLambdaの設定までは行くもののアプリのスキル選択画面に反映されず、これまた断念。
これでは書くことがないので、もし問題が解消されたらこのように動かしたいというユースケースを説明してお茶を濁すことにします。
我が家には既にRaspberry Piで組んだ自作スマートホームシステムがあります。これを司令塔として、今回手に入れたEcho Dotを音声認識トリガーとしてのインターフェースに位置づけます。既存システムにはNFCリーダとHUIS(学習リモコン)とcron(スケジューラ)をトリガーとして動いているので、それにEcho Dotが追加される形になります。
そもそも音声で操作するのは面倒くささが伴いますし、既に複数のトリガーがあるので、alexaを使うのは音声で命令した方が楽、または速い場合に限られます。
(リモコンの定位置からベッドサイドにいちいち持って行くのが嫌)
・夜中に起きたときに照明を点灯する「でんきつけて」機能
(暗がりでリモコンを操作することが困難)
・外出時に照明や空調を全OFFにする「いってきます」機能
(外出する時は両手が塞がっていたり慌てていたりすることが多い)
ちなみに上記に無い「ただいま」は既にBluetoothを使ってiPhoneの存在を自動検知し、夜間なら照明を点灯する仕組みになっているので不要です。一方で「いってきます」がトリガーを必要としているのは諸事情でiPhoneのBluetoothを切る事があるので、それを外出と誤検知することを防ぐためです。また、不在時にうまくトリガーが引かれなかった場合に照明や空調が付きっぱなしになってしまうことを防ぐ意味合いもあり、安全側に倒しています。
このほか、寒い朝に空調を入れるのは既にcronを使用しておりトリガーは不要ですし、切るにしてもリモコンが速いです。(とはいえ照明と同じフローが使えるので、いずれは音声でも操作可能にしようと考えています)
家の照明はシーリングライトとHueを使用しています。ではHueのスマートホームスキルを使えばいいじゃないかと思われるかもしれません。しかし手元のHueは発売初期に買ったものでHue Bridgeがスマートホームに対応していません。買い換えるには7000円かかります。Bridge機能を内包しているAmazon Echo Plusも18000円しますので、何とかDIYでしのぎたいと考えました。Hue BridgeのもつHTTP APIを叩けば良いだけなので仕組みは簡単です。また、空調の操作はIRKitを使用しています。これもHue Bridgeと同様にHTTP APIを叩けば良いので簡単です。空調以外にもテレビ(チューナ+アンプ+液晶ディスプレイの電源を一斉に入れる必要がある)やラジオ(NHKらじるらじるをストリーミング再生する)も操作可能です。
照明も空調も単純に点けたり消したりではなく、ラズパイ上でシェルスクリプトまたはPythonを使った処理を噛ませています。同じ照明でもシーリングライト(直接照明)を点けたり、寝る時間が近づけばHue(間接照明)に切り替えたりする条件分岐が伴うためです。そのため、alexaを導入した場合、最終的にalexaがすべきはラズパイ上のシェルスクリプトを叩くことです。
以上により、最終的にはこのような状態にしたいと考えています。
(これらのシステムについての詳細は過去エントリ「Raspberry Pi 2で実現するスマートハウス」を参照してください)
以上、既に動いている実例としてalexaの位置づけとその理由を説明しました。これがみなさんのalexa活用にとって何らかのインスピレーションを与えることを願っています。
居住国設定がうんぬんは恐らくAmazon Developアカウントがusになっている為だとおもいますよ。
Amazon(jp)とAWSアカウントのmail+pwが同じ場合に起きるようです。
AWSアカウントはusアカウントして扱われており、
Amazon Developログインの際に同一mail+pwの場合usアカウントを優先的に適応しているように思える。。。
同じ現象に当たり仕方なくusアカウントで簡素アプリ実装しても起動ワード発音がEngで無いからか無反応された時は悲しかった。。。
私が実施した対策としてはAWSのアカウント設定でメールアドレスを変更してDevelopのログインアカウントをjpになるよう仕立てました。
(Amazonさん対策してくれないかなぁ。。。)