本日のネタは、irkitという学習リモコンとiPhoneを使って家電をSiriでコントロールしてみようというものです。
そもそもはリモコンをまとめようと学習リモコンを購入したいと思ったのがきっかけ。そのなかで目についたのがカスタマイズ性が高くしかも比較的安価だったirkitです。
irkitは単体では使用できず、iPhone等と連携しての使用が前提となる製品。調べてみるとirkit+Homekitで家電を音声でコントロールすることができるようです。これは面白そう、さっそく試してみました。
必要となるもの
- irkit
- iOS9以降がインストールされている端末(推奨iOS10)
- homebridgeを稼働させるサーバ
この仕組みはAppleが提唱するスマート家電用のプラットフォームHomekitを利用します。ただ通常Homekitから制御できる家電はそれに対応しているもののみ。irkitそれ自体はHomekitに対応していません。そこでHomekitとirkitを文字通り橋渡しするものとしてhomebridgeというソフトウェアを導入する必要があります。
irkitを設定する
irkitの設定自体は非常に簡単です。iPhone等に専用アプリ(IRKitシンプルリモコン)をインストールしたらその指示に従えばいいだけ。その指示も非常にわかりやすいです。
irkitのIPアドレスを調べる
homebridgeサーバを構築する前にirkitのIPアドレスを調べておきます。下記コマンドで調べられます。
#dns-sd -B _irkit._tcp
#dns-sd -G v4 <irkitの名前>.local
homebridgeサーバを構築する
今度はhomebridgeサーバを構築します。こちらが作動していないとirkitを通じてSiriでのコントロールができません。なのでhomebridgeサーバは常時稼働しているのが望ましいでしょう。
そうなるとやはり消費電力が低い端末が候補に挙がります。調べるとやはりRaspberry Piを利用したものが多数ありました。私もそちらを利用してもいいのですがいかんせん持っていない。。。高価なものではないので購入してもいいのですが。
そこで省エネではRassberry Piには及びませんが、500円で手にいれたHP製シンクライアント t5570を利用してみようかと思います。このシンクライアントいままでもたびたびブログに出ていますが安かったの3つほど入手してあったものです。
HP製シンクライアント t5570をファイルサーバにしてみる
なおシンクライアントはx86CPU搭載なのでRaspbianは動作しません。またストレージが2GBしかありませんので使用するOSも限られます。そこでファイルサーバを構築するときにも利用したArchLinuxを使用して構築してみようと思います。
ArchLinuxをインストールする
ArchLinuxは最低限のパッケージからインストールできるためこのような用途にはもってこいです。ただその分コマンドを叩く必要があるので若干敷居は高いかもしれません。
詳細なインストール方法は下記サイトが詳しいと思います。なお私が使用するシンクライアントはUEFIなんてものはないのでBIOS、MBR、GRUBを使用してインストールしていきます。
http://archlinux-blogger.blogspot.jp/p/blog-page.html
Homebridgeをインストールする
homebridgeをインストールする前に遠隔から操作できるようSSHをインストールします。
#cd
#pacman -S openssh
#systemctl enable sshd
#systemctl start sshd
続いて以下をインストールしhomebridgeを設定します。
#pacman -S git python2 npm nss-mdns nodejs avahi
#systemctl enable avahi-daemon
#systemctl start avahi-daemon
#npm install -g homebridge
#npm install -g homebridge-irkit
#mkdir .homebridge
#cd .homebridge
#vi config.json
config.jsonは以下のように記述しました
上記で登録してあるのは、部屋の照明のオン/オフ、テレビのオン/オフ、クロームとあるのはテレビのHDMI入力への切り替えになります。
"on_form"、"off_form"以下の部分はirkitに向けてリモコンを操作した後下記コマンドで取得します
#curl -i "http://<irkitのIPアドレス>/messages" -H "X-Requested-With: curl"
最後に下記コマンドで起動します。
#homebridge
きちんとconfig.jsonが読み込まれれば起動するはずです。
iPhoneのHomeアプリに登録する
iPhoneからはHomeアプリでコントロールします。HomeアプリはiOS10以降であれば標準で入っているはず。
Homeアプリを起動してアクセサリを登録します。きちんと認識されていればあっけなく見つかるはず。見つからないときは再起動などを行ってみてください。
使用してみる
Siriを起動して例えば"ライトをオフ"と話しかければいいだけです。見事に照明が落ちたら結構感動するかと。

さらに"それらしく"するのであれば"Hey Siri"を有効にするといいでしょう。"Hey Siri"を有効にするとiPhoneに触れることなく家電をコントロールすることが可能です。有効にするには設定>Siriと辿り"HeySiri"を許可します。最もあまり認識率が高くないためストレスは溜まるかもしれないですが。
うまく動かない!
さて設定してみたのですがうまく動かない。具体的には最初は動いているのですがしばらくするとhomebridgeサーバにアクセスすることができなくなってしまいます。そうなってしまうとどうすることもできず最初からhomebridgeサーバを構築する羽目に。
そこで理由を探るべく検証用のESXi環境にhomebridgeサーバを構築して検証してみました。その結果iPhoneがロックされて復帰するところでhomebridgeサーバを見失うよう。そこで持ち歩くiPhoneでの使用をあきらめ、現在使用していないiPhone5sをロックしない設定にして使用することにしました。
しかしこれでは外出先からコントロールするのは無理ですね。。。もう少し検証してみる必要がありそうです。手持ちのiPadをハブとして使用する構成に変更してもいいかもしれないです。
終わりに
ところで自室の照明はリモコンに対応している製品ではありません。そこでこんな製品を購入して取り付けてります。ペンダント式の照明だとそれほど違和感なく取り付けられますのでご参考までに。
では。