どうも、Chasukeです。
我が家の廊下照明はAppleのHomekit対応のスマート電球がハマっており、iPhoneを起動してSiriから操作ができる。
https://chasuke.com/koogeek-socket/
だが、iPhoneをイチイチ起動するのが、面倒になってきたので、枕元に「Amazon ダッシュボタン」を置いて、そちらで廊下照明を入切できるようにした。
https://chasuke.com/amazondashkit/
寝室にEcho Dotを設置した。
https://chasuke.com/echodotholder/
こうなると、ベッドの中からEcho Dotに廊下照明を消してもらいたくなってくる。ということで、先日手に入れたばっかりの「ラズパイ Zero WH」を使って、Node-RED経由でアレクサにHomekit対応スマート電球を入切できる仕組みを考えてみました。
https://chasuke.com/pizerostarterkit/
超絶ニッチな内容ですが、きっと同じことがしたい人はいるはず..いってみましょう!!
アレクサでHomekit製品を動かす仕組み
こんな感じ。
Alexaスマートホームスキル『Node-RED』により、フローを呼び出し、Node-RED上に設置したHomekitノードに、ダミーのスイッチアクセサリを用意します。
このダミーのスイッチアクセサリと、実際に操作したい廊下の照明をオートメーションで繋いで、電気ON/OFFする仕組みでございます♪
仕組みを作ってみた
アレクサからNode-RED連携
ラズパイには最初から「Node-RED」がインストールされていますが、バージョンをアップデートしてから起動させましょう!!
// Node-REDの更新コマンド
$ update-nodejs-and-nodered
まず、アレクサからNode-REDの呼び出しですが、こちらを参考にしてください。
https://chasuke.com/alexa_nodered1/
今回は、廊下というデバイスを作成しました。
Debugノードを繋いで、アレクサが「true」や「false」を飛ばしてくるのを確認しましょう。
Node-REDにHomekitノードを設定
続いて、Homekitノードを追加していきます。
▼アレクサノードと同様に「Homekit」ノードをパレットに追加していきます。
▼「ノードを追加」からhomekitで検索。
2つ出てきますが、内容は同じなのでどちらを選んでも良いと思います。
追加すると、パレットの左側「その他」というところに「homekit」ノードが作成されているので、こちらを以下のように繋げて動きの確認をします。
▼ノードの設定内容です
鉛筆アイコンを選び、アクセサリを追加していきます。
▼アクセサリ名やPINコードを変更できます。
製造元やシリアル番号とかモデルなんて何でも良いです。
▼廊下の照明用のダミースイッチを作成するため、Serviceを「SWITCH」としています。
これで、Homekitノードの設定は完了です。
Appleホームアプリにアクセサリを追加
Homekitノードを設置すると、ホームアプリ側に取り込めるようになります。
▼「コードがないか、スキャンができませんか?」をタップ。
近くのアクセサリが表示されています!!
キター!!!!!
※ 何度か試しているとアイコンが表示されない場合がありました。その場合、一度「ノードの設定」からアクセサリー情報を削除して再度、登録してみるとうまくいきます。
▼PINコードを入力します。
コードを入力して、「(アクセサリ名)が追加されました」というメッセージが出れば成功です♪
▼こんな感じで、アイコンが増えました。
Node-REDからステータス変更を確認
先ほどのNode-REDに戻ります。
以下のようなフローを作って、ホームアプリ側のステータスが変更されるか確認してみました。
Homekitノードに与える入力は、こちらのJSONです。
「"On": 1」を与えれば、ステータスはオンになります。逆に「"On": 0」を与えるとステータスはオフとなります。
設置したinjectノードをポチポチして、確認してみてください。僕がやってみた感じだと、再デプロイすると、連携が切れるためか反応しなくなりました。こうなると、一度ホームアプリ側のアクセサリを削除して再取り込みするしかありません。
これ、なかなか面倒だ..
AlexaノードからHomekitノードへ連携
こんな感じで作成しました。
アレクサからの入力で「オン」または「オフ」を判定して、Homekitノードに与えるパラメータを変えてます。
▼スイッチ判定は、「msg.payload」の中身をチェックする。
▼判定結果をもとにパラメータを設定する。
今回の場合であれば、「アレクサ、廊下をオンにして」と言ってみて、ホームアプリ側のステータスがオンになれば成功です。
[追記]
実際に運用していると、スイッチと電球のOn/Offステータスがずれることがあったので以下のフローに改善しました。一旦スイッチの足並みを揃えてから操作を実施してます。
オートメーションで照明デバイスを操作
最後の仕上げです。スイッチがオンになったら、廊下照明がオンになるようにオートメーションを設定します。
オートメーションの「+」ボタンが表示されない場合は、サードパーティ製アプリを利用することで使えるようになります。
https://chasuke.com/homekit-nohub/
▼トリガーに、作成した「ダミースイッチ」をセットします。
▼アクションに実際に操作した廊下の照明をセットします。
以上、完成です!!!!!
これで寝室に配置したEcho Dotから操作できるようになりました^^
最後に
Apple Homekit対応の製品をAlexaを通して音声操作できるようにしてみました。
海外では発売しているApple HomePodを利用すれば、一瞬で実現できる内容ですが、やりたいことが実現できてよかったです^^
それではまた!!