この記事はおうちハック 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 の基本的な連携を試すことができました。
子育て中は抱っこで両手がふさがっていることが多いので、音声で操作できるのはとっても便利です!
ただこれくらいのことは市販のスマートリモコンでもできると思います。
次回はラズパイじゃないとできない複雑な処理にもチャレンジしてみたいと思っています。