ラズパイを使ってスマートホームを実現
目的は家のテレビ、エアコン、電気など、すべてのリモコン操作をラズパイ一つにまとめ、アレクサを利用してコントロールする。
1週間をかけてやったこと、まだ記憶が新しいうちに、下記をメモします。
1.できたこと:
ラズパイからアレクサを利用して、テレビのオン/オフができました。
2.アーキテクチャ:
ハードウエア編:
・Raspberry Pi4 Model B:本体+電源1セット。アマゾンで調達した。
・Crowtail Stackable Shield For Raspberry Pi 2.0:配線なしでGPIO10個、I2C1つ、UART1つのインタフェースを持つボード。秋葉原で調達した。
・Grove 赤外線レシーバー - Grove Infrared Receiver。秋葉原で調達した。
・Grove 赤外線エミッタ - Grove Infrared Emitter。秋葉原で調達した。
・USBマイク。アマゾンで調達した。
・ミニースピーカー。アマゾンで調達した。
組み立て完成図(配線がないため、スッキリします。):
ソフトウェア/ソリューション編:
・Node-RED Alexa Home Skill Bridgeでデバイスを登録
・https://alexa.amazon.co.jp でデバイスを検出
・aspberry PiでNode-REDを起動する
・Raspberry PiのNode-REDをブラウザで開いて、デバイスのアクションを追加。
3.手順:
①組み立て
Crowtail Stackable Shieldをラズパイに接続し、赤外線レシーバーをGPIO14,赤外線エミッタをGPIO15に挿します。
配線がないため、組み立てはめっちゃらくです、回路図も書いてないです。
ただ、Crowtail Stackable Shieldを挿したら、ラズパイのケースが使えなくなったので、楽を追及するの代わりに、ラズパイを保護するケースを外しました、拡張ボートを使ったほうがいいかもね。
②音声テスト
参考サイト:第1回 ラズパイでAIカメラを自作しよう! 初めの一歩、ラズパイに目、耳、口を追加する
https://deviceplus.jp/hobby/entry_y01/
使ったスピーカーとUSBマイクはこのサイトに似ているため、参考することにしました。
③テレビリモコンの赤外線を受信し、ラズパイに保存する。
参考サイト:【Raspberry Pi】【エアコン操作】赤外線の受信・送信
https://qiita.com/oouaioi/items/f4bdd2024b1b9bd0f5c8
テレビ電源の赤外線を受信するコマンド:./irrp.py -r -g14 -f codes tv:on --post 130
テレビへ電源オン/オフの赤外線信号を送信するコマンド:./irrp.py -p -g15 -f codes tv:on
メモ:GPIO14から受信、GPIO15へ送信。
④AmazonEchoからRaspberryPiのコマンドを実行する
参考サイト:AmazonEchoからRaspberryPiのコマンドを実行する
https://pcvogel.sarakura.net/2018/04/16/31828
メモ:③のテレビ電源オン/オフコマンドをtv_on.shに保存。
Node-RED、Node-RED Alexa Home Skill Bridgeの設定など、
Node-RED でフロー作成(Raspberry Pi でのコマンド実行)
これでAmazonEchoに「アレクサ、テレビを開いて!」を声掛けたら、テレビのオン/オフができました。
家中のリモコンをバンバン取りまくっていこうと思います。
⑤Raspberry piのアレクサ化
参考サイト:Raspberry piのスマートスピーカー化 (Amazon Alexaの公式インストールシェルが利用できないのでソースからインストールしてみた)
https://qiita.com/kanamekun/items/12f5d970509b575edce4
ラズパイに入っている必要パッケージが足りなかったようで、インストール3回失敗を繰り返し、やっと成功になりました。
失敗したところをメモ:
Alexaのインストール:エラー内容が覚えていないが、コンパイルでエラー/ワーニングが数回出ました、足りないパッケージを追加インストールしたらいけました。
Python3.7 → Python3.9.7にアップデート:Python-3.9.7.tarからのアップグレードは少々面倒です。
これでラズパイに「アレクサ、テレビを開いて!」を声掛けたら、同じくテレビのオン/オフができました。
最後に
アレクサからの定型アクションを使ってテレビの音量上げるのも成功しましたが、チャンネルを変えるアクションはまだ出来ていない。家中すべてのリモコンをアクションに変更することは中々大変そうですね。