なになれ

IT系のことを記録していきます。

Amazon Echoとラズパイでスマートホーム化

Amazon Echoとラズパイでスマートホームを実現します。
Amazon Echoに対して音声で呼びかけて、Alexaスキルからラズパイを通して家電を操作します。

構成図

f:id:hi1280:20180129215335p:plain

AWS IoTの準備

AWS IoTを使って、Alexaスキルとラズパイとを連携します。
バイスの設定を案内通りに進めることで、該当のデバイスAWS IoTに接続することができます。
AWS IoTに接続するのに必要な証明書が得られます。
f:id:hi1280:20180129225533p:plain

今回はNode.jsを使用しました。
Node.jsでAWS IoTを使用したメッセージングの簡単な例はこちらが参考になります。
aws-iot-device-sdk-js/README.md at master · aws/aws-iot-device-sdk-js · GitHub

ラズパイでのAWS IoTプログラムの実装

AWS IoTのdeviceオブジェクトに証明書の情報を設定します。

AWS IoTからのメッセージを受け取って、赤外線を送信するコード

subscribeメソッドで受け取るメッセージを指定するのと、メッセージを受け取った後に実施する処理をmessageイベントで定義します。

AWS IoTの動作確認

テスト > 発行 からメッセージを発行することができます。
f:id:hi1280:20180130000103p:plain

ラズパイでの家電の操作方法は過去記事を参照してください。
hi1280.hatenablog.com

Alexaスキルの実装

Alexaスキルの種類はカスタムスキルとして実装しました。
カスタムスキルは名前を指定して、スキルを呼び出します。
例えば、こんな呼びかけになります。
「アレクサ、リモコンで照明をつけて」

「リモコン」の部分がスキルの名前になります。

AWS IoTのメッセージを送信するAlexaスキルのコード

AWS IoTのdeviceオブジェクトのpublishメソッドを実行することで、メッセージを送信します。

Alexaスキルの作成方法は過去記事を参照してください。
hi1280.hatenablog.com

まとめ

ラズパイでの赤外線による家電操作とAlexaスキルを組み合わせることでスマートホームっぽくなりました。
今回はスキルをカスタムスキルとして実装しましたが、スキルの名前をいちいち呼ぶのは面倒です。
スマートホームスキルとして実装すると名前を呼びかける必要がなくなるようです。
ただし、スマートホームスキルに対応しているデバイスがまだ少ないようなので、まだこれからという状況かと思います。
スマートホームスキルを複数の言語で開発する | ASK