電動ハニカムシェードがAlexaからコントールできるスマートホーム環境に仲間入りしました。
私は、一条工務店で自宅を建てています。
そこでカーテン替わりに利用している電動ハニカムシェードというものがあります。
それを、ずっとアレクサ経由で操作したいと思っていました。
以前からNature Remoを用いて赤外線スマートリモコン替わりに使っていたのですが、 電動ハニカムシェード用のリモコンは赤外線ではないため、Nature Remoだけでは実現できませんでした。
- 「アレクサ、おはよう」...これでリビングの電気が付き、ロボット掃除機が待機所へ引っ込み、TVがつく。
- 「アレクサ、朝の準備して」...これでハニカムシェードが開き、リビングの電気が消える。
- 「アレクサ、夜の準備して」...これでハニカムシェードがおり、リビングの電気がつく。
こんなスマートホーム生活をずっと狙っていたのですが、なかなか実現できず。
今回、やっとそれを実現できたので、実現手段などを備忘として残しておきます。
はじめに要点
要点は以下の3点くらいです。
- やっててよかった、電子工作。
- Node-REDを使うことで、とてもお手軽にIoT環境の制御ができる。
- ラズパイでNode-REDを動かすときはCPUの世代の差に気を付けよう。
- (Zero系はARM6、2/3はARM7なので、Zero系を使うなら2/3のやり方ではNG)
構成情報
参考情報として、現在の自宅内のIoTの概要図を掲載しておきます。 この中で、紫色・緑色の部分を今回構築することができました。
要件
- Alexaを経由して、電動ハニカムシェードに対し、以下の命令が出せること
- 機器が故障した場合に備え、通常のリモコンによる運用も可能とすること
- 可能な限り新たなハードウェアを導入せず、安価に環境を構築すること
使ったハードウェア
- Raspberry Pi ZeroW
- OS: Raspbian (Release 11)
- GPIO用のヘッダ ■Amazonへのリンク
- 電動ハニカムシェード用のリモコン(改造用)
- ※営業さんに相談したら、追加で1個ご手配いただけました。
- ブレッドボード(以前適当に買ったもの)
- ジャンパーワイヤー(以前適当に買ったもの)
- 参考サイトにてご紹介いただいていたFET ■Amazonへのリンク
- 参考サイトにてご紹介いただいていたピンヘッダ ■Amazonへのリンク
- プラスチックのポケットティッシュケース(基盤の入れ物として)
- コルクボード(基盤の入れ物の中の敷物として)
- はんだごてセット
作ったもの
外観
こんな感じのものを作りました。リモコンはまだ原型をとどめてます。最終的にはもう少し化粧します。
リモコンの下にあるのが、↑に書いた、セリアで買ったポケットティッシュケースです。 箱の外に対してはラズパイZeroWの電源をとるための、USB-TypeAのケーブルが伸びているだけです。
その中はこんな感じになっています。
リモコンの裏はこんな感じ。
参考サイトのハードウェア編に書いてあるのと同じような形で、VCC/GND/UP/STOP/DOWNの部分にはんだ付けし、FETを経由してブレッドボードにつないでます。
正直、改めて思うとブレッドボード使うならFETを経由させる必要もなかったのですが、まあ個人で使うものなのでヨシです。
大学卒業以来の久しぶりのはんだ付け、楽しかったです。
こればっかりは、未経験だと取っ掛かりに躊躇したと思いますが、大学で電子工学やっててよかったなと思いました。
ハードウェア構成
基本的に参考サイトのままなので、ここでは割愛します。細かく知りたい方がいれば、ブログやTwitterでコメントいただければ追記します。
一応、▲■▼の3種類の信号を外に出しました。電動ハニカムシェードが1台しかないこともあり、SELECTは不要と判断しました。
そういう理由もあり、FETは2つ使っています。
ソフトウェア構成
こちらも、各種参考サイトをもとにラズパイZeroWにNode-REDをセットアップし、Node-RED HomeSkillBridgeにアカウントを作ったりして設定しています。
上記の解説は長くなるので、基本は参考サイトをご覧ください。
ハマった点
最初、参考サイトと同様に、ラズパイ3でNode-RED環境を作ってました。
その後、ラズパイZeroWでいいな?と思い始めてそちらにSDカードを移植したのですが、そのままだとNode-REDが動かず。
やっちまったかと思っていろいろとみていったら、以下の情報を得られました。
- ラズパイZero/ZeroWとラズパイ2/3はCPUのARMのバージョンが異なる。
- Zero系はARMv6 、2/3はARMv7
- 上記に合わせてNode.jsも専用のバージョンがある
そのため、移植したものをそのまま活用するのをあきらめ、ZeroW側でNode-REDを再インストールしています。
GPIOとNode-RED内の構成
ここまでは基本的に参考サイトを参照していただくとして、ここを細かく書いておこうかなと思います。
リモコンからの信号をブレッドボードを経由して、ラズパイのGPIOに対して以下のように接続しました。
最終的に作成した、Node-REDのフローがこちらです。
Node-RED Home Skill Bridge上のデバイス登録の注意点
Node-REDのHome Skill Bridge上に登録した、ラズパイZeroWの設定はこんな形です。(スペルミスってる気がしますが気にしない)
最初は参考サイト通りにON/OFFのみにしていたのですが、STOPを組み込みたいと思いました。
そうするとTrue/Falseだけでは分岐が足りません。
そのため、調光式LED(LIGHT)のアプリケーションとして、その明るさの%をチェックを入れることでそれを3分岐の制御につなげようと考えて、このようなデバイス登録にしました。
On/Offは現在だと消しても問題ないかなと思ってます。
フローの説明
一番上のフローは、Node-REDを起動した際に上記3つのGPIOの出力をLowにするためのものです。 初期化というやつです。
2番目のフローが本命です。
一条工務店のリモコンは、最初になにかボタンを押した状態では「信号待機状態」になるのみで、そのあとにもう一度操作のボタンを押すことで、はじめて操作信号が飛びます。
そのため、以下のようなフローにしました。
- Alexa ホームスキルから呼び出しが来る。
- ひとまず、STOPボタンのGPIOをONして、信号待機状態にさせる。
- この間、メイン側はDelayで待機状態にさせる。
- Delayが明けたら、ホームスキルから渡されたメッセージの中身に応じて分岐する。
- アレクサのホームスキルから渡された温度が入ってくるのが、
message.payload
で、そこに数字が直接入ってくる。 - そのため、入ってきた数字を以下の条件で分岐する。
- 100をUP
- 60をSTOP
- 10をDOWN
- 分岐の後は、各GPIOの信号をONし、リモコン側のボタンを押したことにする。
- 電動ハニカムシェード側がリモコンからの信号をうけ、指示された通りに動く
- 一定時間後、GPIOの各信号をOFFにする。
- アレクサのホームスキルから渡された温度が入ってくるのが、
分岐の詳細はこんな感じです。
最初はこのあたりをどうチューニングすればいいのかよくわかりませんでしたが、触っているうちにだんだんと理解できました。
Node-RED、学習教材みたいなタッチで簡単にラズパイのGPIOがコントロールできるので、非常に手軽でよいですね。
結局、やりたいことはできたのか?
- 「アレクサ、おはよう」...これでリビングの電気が付き、ロボット掃除機が待機所へ引っ込み、TVがつく。
- 「アレクサ、朝の準備して」...これでハニカムシェードが開き、リビングの電気が消える。
- 「アレクサ、夜の準備して」...これでハニカムシェードがおり、リビングの電気がつく。
これ、全部できるようになりました。
1個目まではこれまでもできてたのですが、2・3個目が実現できてなかったのです。
これで朝と夜がかなり楽になったと思います。めちゃ便利。
今後の展開
Node-REDを活用することで、GPIOまわりのコントロールやAlexaとの連携が非常に楽にできることが分かりました。
今後はGPIO関係ない形で何かのチェック結果をAlexaにしゃべらせたり、他の形でGPIO制御したりなど、いろいろと応用ができそうですので、それを模索していきたいと思います。
どなたかの参考になれば幸いです。
一条工務店で家を建てる人へ
この記事の中身からこれを見る人も少ないと思いますが、ハニカムシェードを全面採用するなら、是非大きい窓につけるハニカムシェードはすべて初期段階で電動にしましょう。
初期コストも大したことありませんし、運用にかかるコストが段違いです。
自動化できる・できないにかかわらず、操作用の紐の操作で感じる重量は重く、割と毎日の紐での上げ下げは負担になります。
また、重量の関係で、後付けでの巻き上げ式IoT化は今のところ挫折しています。またこれはチャレンジしたい。
是非、初期から電動化をお勧めします。
参考にしたサイト
そもそものアイディア
こちらの2つのブログ記事がなければ、やってみようと思わなかったと思います。
著者の方、本当にありがとうございました。
アレクサ、ハニカムシェードを開けて(ソフトウェア作成編) - 一条工務店のi-smartを田んぼに建てる
アレクサ、ハニカムシェードを開けて(ハードウェア作成編) - 一条工務店のi-smartを田んぼに建てる
ラズパイ3でNode-REDが動いたのにSDをラズパイZeroWに移植したら動かなかったときに見たサイト
こちらのコミュニティの書き込みを参考することで、CPUの種類が違うとNode.jsもそのままでは動かない、ということを知りました。
ラズパイZeroWへのNode-REDのインストール
こちらのサイトを参考にさせていただきました。
GPIOまわりのデバッグ
こちらのサイトを参考にさせていただきました。
Node-REDの日本ユーザグループサイト
メッセージに関するカスタマイズに、こちらの記事を参考にさせていただきました。
Node-REDの使い方
こちらのサイトを参考にさせていただきました。動画もあり、とても分かりやすかったです。