「Hey!Siri、電気消して!」をできるようにしたらSiriが可愛くなった件について

公開日: 

Raspberry Pi Zero W + HomebridgeによるHomeKitエミュレートからの、Remo、Siriを使ってお家を近未来仕様にしてみました。

私は所以Apple信者です。

世の中ではGoogleHomeやAmazon Echo、Clova Waveが話題になっておりますが、私はHomePodがほしいんです。

そのため、将来に備えてHey! Siri!で色々できるように準備しておこうとお家をスマートホーム化頑張ってみました。

そしたら・・・Siriがかわいいんじゃ・・・と言った感じのお話。

以下「Hey!Siri電気つけて!」ができるまでの道のりを綴っていきます。

sponcer link

概要

完成体はこんな感じになります。

基本はNature Remo と HomebridgeをインストールしたRaspberry Pi 3 で家電をSiri(音声)でコントロールしてみた!を参考にやっています。

構成イメージ図はこんな感じ。
SiriがHomebridgeを通してRemoに命令して家電操作する感じです。
hey-siri-architecture-graph

物理的に必要なものはRaspberry Piと、Nature Remoが必要になります。HeySiri用のiPhoneやiPadとかはApple信者の皆様は言うまでもなくお持ちですよね?
IMG_3595

Nature Remoの設定や使い方などは以前書いた「Remoを使ってあらゆるリモコンを排除してみた」を参照。

Raspberry Piの設定

基本設定は前回記事「Raspberry Pi Zero Wをキーボードとマウスを使わずにインストールしてwifi設定する」で終えてネットワーク上に接続されていることが前提です。

RemoをiOSのHomeKitで扱えるようにするためにはHomebridgeというものをインストールする必要があるため、必要なものをインストールして設定していきます。
Raspberry Piで以下をインストール

このままだと古いnodeが入ってくるので最新のnodeが入るように以下を実施
cf: 第三回 Raspberry Pi 3に最新のNode.jsをインストールする

いよいよHomebridgeとRemoの操作に使うhomebridge-irkitのプラグインをインストールします。

※ちなみに–unsafe-permをつけないと、以下のエラーが大量に出た

gyp WARN EACCES attempting to reinstall using temporary dev dir “/usr/local/lib/node_modules/homebridge/node_modules/mdns/.node-gyp”

しかし、インストール後、homebridgeコマンドを実行すると、以下のエラーが出てしまった。

module.js:515
throw err;
^

Error: Cannot find module ‘../build/Release/dns_sd_bindings’
at Function.Module._resolveFilename (module.js:513:15)
at Function.Module._load (module.js:463:25)
at Module.require (module.js:556:17)
at require (internal/module.js:11:18)
at Object. (/usr/local/lib/node_modules/homebridge/node_modules/mdns/lib/dns_sd.js:32:22)
at Module._compile (module.js:612:30)
at Object.Module._extensions..js (module.js:623:10)
at Module.load (module.js:531:32)
at tryModuleLoad (module.js:494:12)
at Function.Module._load (module.js:486:3)

Cannot find module ‘../build/Release/dns_sd_bindings’ #1315より、以下を実行した。

再度実行したら無事「[2017-10-29 04:42:09] config.json (/home/pi/.homebridge/config.json) not found.」といわれて起動を確認できた。

Nature Remoの設定確認

先にRemoのIPを確認する。Mac上で下記コマンドを実施する。
cf: RemoのIPアドレスを確認したい

上記でIPは192.168.2.20とわかったので、以下を実行して赤外線情報をゲットする。。。ができない

どうやら、物理リモコンを、Remoに当ててからでないとGETできないらしい。
試しにリモコンをRemoに直接照射してから再度GETしてみると無事取得できた。

APIの結果をメモしておく。

Homebridgeの家電設定

再びRaspberry Piに戻り、MACアドレスを確認する。

link/etherのところに記載されているのがMACアドレスなのでメモしておく。

configを生成する

MACアドレスは大文字なので要注意です。

あと、pinコードの途中の「-」は必須なので要注意。

homebridgeを起動しPIN番号が表示されていることを確認する。

自動起動設定

このままではRaspberry Piが落ちるとhomebridgeも落ちてしまうため、自動起動するようにする。
cf: Running Homebridge on Bootup (init.d)
cf: homebridgeでsiriから家電コントロール

まずは、スクリプトの準備

自動起動の設定を行う

最後に試しに起動してるのを確認してみる。

Homeアプリ登録

iPhoneで「ホーム」アプリを起動して、「アクセサリを追加」を押下。
IMG_3616

「コードがないか、スキャンできませんか?」を押下
IMG_3617

Homebridgeを選択
IMG_3618

pin番号を入力すると認定されていないアクセサリと言われるが、「このまま追加」
IMG_3619

追加中…
IMG_3620

無事追加されると登録できるアプリが出て来るので、よく使うものであれば「よく使う項目に含める」にチェックを入れて「次へ」をどんどん押していく。
IMG_3621

全部追加されるとアプリが使えるようになります。
IMG_3622

Hey!! Siri!!

Hey,Siriしたあとに家電名に「エアコン」と登録していれば「エアコンつけて」とか言えばエアコンが起動します。

近未来の世界へようこそ!!!!

追加案件

より複雑なことをした場合はHomeアプリの「シーン」を使う。

やりかたはまたhomebridgeを色々と弄る必要があるので別記事「homebridge-nremoを使ってホームアプリのシーンに対応してみた」参照。

課題

スリープ問題

おうちから返ってくるとHomebridgeからRemoに指示を送ってもRemoが赤く光って反応してくれず、しばらくなんどかチャレンジしてるとHeySiriからようやくRemoが反応してくれる状態だったので、なんだかRemoがスリープに入ってすぐ反応しないように見えました。

そのため、Raspberry Piから1時間に1回cronでrmeoに対して特に影響のないリモコン操作を送りつけるようにしたところ無事すぐ反応するようになりました。

オートメーションできない

ホームアプリには家に近づいたら電気をつけるみたいなことができます。

ただし、条件として第4世代のApple TVか、充電中にしているiPadをハブとして準備しておく必要があります。

我が家ではiPadをハブとして準備しているのですが、充電中にしていてもオートメーションが発動しません。。。

仕方ないので、Remoのルールで回避するようにしていますが、なんとかホームでやりたいです。。。

誰か原因等ご存知でしたら教えてくださいー!

まとめ

スマートホーム化すると近未来をとても感じます。

さらに手を伸ばさなくていいのでリモコンをなくしても問題ない!!

とても便利です!!

更に、HeySiriを何度も呼びたくなってSiriを一層愛でたくなります!!!!!!!!

皆様も是非快適な近未来ライフをお楽しみください。

  • このエントリーをはてなブックマークに追加
  • Pocket
PAGE TOP ↑