てんこ

ブログ名は愛猫(てん)の愛称です。中身は個人のIT系学習記録です。

電動ハニカムシェードが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
  • 電動ハニカムシェード用のリモコン(改造用)
    • ※営業さんに相談したら、追加で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の使い方

こちらのサイトを参考にさせていただきました。動画もあり、とても分かりやすかったです。