この記事はおうちハック Advent Calendar 2018の24日目です。メリークリスマス!!


Raspberry Pi用の学習リモコン基板とAlexaでスマートホームにチャレンジしました。
こんな感じで、エアコンや照明をAlexaから操作できます。

準備したもの

  1. Raspberry Pi 3(以下ラズパイ)
    ケース付きを買いましたが、今回は結局下記のオフィシャルケースを使いました。
  2. ADRSIR ラズベリー・パイ専用 学習リモコン基板
    リモコンの赤外線を学習して、学習した赤外線を家電に送信できる基板です。
    商品の詳細はビット・トレード・ワンのページを参照。
  3. Raspberry Pi 3/2/B+ 用オフィシャルケース 赤/白
    ラズパイと学習リモコン基板を重ねて入れるのにぴったりサイズのケースです。
    商品の詳細はスイッチサイエンスのページを参照。
  4. Amazon Echo Dot 第2世代

システム構成

全体のシステム構成はこんな感じ。

学習リモコン基板の準備

学習リモコン基板の準備は、ビット・トレード・ワンが公開している動画が参考になります。

まずは、学習リモコン基板をラズパイにセットします。

次に、学習リモコン基板の物理スイッチを操作して、エアコンのリモコンで暖房を付けるの赤外線をL01(リモコン1)に、照明のリモコンで明かりを付ける時の赤外線をL06(リモコン6)に、それぞれ学習させておきます。
(L02〜L05、L07〜L10にもそれぞれ電源オフや温度調整等の赤外線を登録していますが、説明では割愛します)。

Node-RED Alexa Home Skill Bridge

アカウント作成

今回はラズパイに標準インストールされているNode-REDを使って、赤外線送信を設定します。
AlexaとNode-REDを連携するためには、Node-RED Alexa Home Skill Bridgeというサービスを使います。
そのため、まずはNode-RED Alexa Home Skill Bridgeにアクセスし、アカウントを作っておきます。

デバイス追加

Node-RED Alexa Home Skill Bridgeのサービス上でデバイス追加を行います。
今回は01_danbou_on、06_bedlight_onという名前でデバイスを登録しました。
(家族しかさわらないのでローマ字の変数が混ざっているのはご容赦くださいw)。

Alexaアプリの設定

Node-REDスキルの追加

スマホに入れたAlexaアプリにNode-REDスキルを追加し、Node-RED Alexa Home Skill Bridgeに登録したアカウントでログインしておきます。
ちなみに、このNode-REDスキルのデベロッパーと、Node-RED Alexa Home Skill Bridgeのサーバーを立ててくださっているのは同じ方です。

提携アクションの設定

次に、Alexaアプリで定型アクションを設定します。
「新しい提携アクション」から、「実行条件」に「アレクサ、暖房をつけて」を設定、「アクションを追加」→「スマートホーム」で「01_danbou_on」を設定します。
同じように、「新しい提携アクション」から、「実行条件」に「アレクサ、寝室の電気をつけて」を設定、「アクションを追加」→「スマートホーム」で「06_bedlight_on」を設定します。

Node-REDでフローを作成

最後にNode-REDで、Alexaと学習リモコン基板からの赤外線送信を連携します。
今回使ったNode-REDのバージョンはv0.18.4です。
ラズパイ上でNode-REDを立ち上げると、同一LAN内にある端末のブラウザからhttp://<IPアドレス>:1880でNode-REDのFlowエディタ画面にアクセスできるようになります。
なお、Node-REDはラズパイを再起動しても動くように、デーモン化して自動起動するようにしておくと良いと思います。
Node-Redの基本的な使い方は公式サイトを参照

node-red-contrib-alexa-home-skillノードの追加

Node-RED右上のハンバーガーメニューから「パレットの管理」→「ノードを追加」→ “node-red-contrib-alexa-home-skill” で検索。
「ノードを追加」ボタンから追加すると、エディタ左メニューのノード一覧にalexa homeノードが追加されます。

リモコンノードの追加

ビット・トレード・ワンのページから、学習リモコン基板用のソフトウェア3種詰め合わせをダウンロードします。
ダウンロードしたファイルのうち、node-red-20180209.jsonの中身を、Node-red右上のハンバーガーメニューから「読み込み」→「クリップボード」で開いたテキストエリアに貼り付け「完了」を押します。
左メニューのノード一覧に、リモコン1〜リモコン10のノードが追加されます。

フロー作成

alexa homeノードとリモコンノードを繋げます。
alexa homeノードはダブルクリックで編集画面が開くので、Node-RED Alexa Home Skill Bridgeに登録したアカウントでログインします。
ログインすると、Node-RED Alexa Home Skill Bridgeで作成したデバイスである01_danbou_onや06_bedlight_onが選べるようになります。
今回は01_danbou_onをリモコン1に、06_bedlight_onリモコン6に繋げるフローを作成します。 編集が終わったら、右上の「デプロイ」を押して反映させます。

実行!

Alexaに「暖房をつけて」「寝室の照明をつけて」と話掛けると、学習リモコン基板から赤外線が送信され、エアコンと照明の電源が付きます!

まとめ

今回は、学習リモコン基板とAlexaの基本的な連携を試すことができました。
子育て中は抱っこで両手がふさがっていることが多いので、音声で操作できるのはとっても便利です!
ただこれくらいのことは市販のスマートリモコンでもできると思います。
次回はラズパイじゃないとできない複雑な処理にもチャレンジしてみたいと思っています。