読者です 読者をやめる 読者になる 読者になる

AkeomeStudio

開発の忘備録、日常の雑記など

MacとIRKitさえあれば「Hey Siri」で家電操作できちゃう話

Swift IRKit ガジェット

昨年IRKitを導入してからというもの、もはやすっかり手放せない存在となってくれました。
特にこの時期、帰宅中の電車内なんかでエアコンONにしておくと帰宅時にはキンキンに冷えてやがるお部屋が待ってくれてます。


さて、これを使ってSiriで家電操作できるようにすることが今回のテーマです。
ググるRaspberry Piを使った記事はいくつか出てきますが、今回紹介するやり方ではIRKitとMac(と、Siriが入ってるiOS端末)があればOKです。


実現方法

やり方は簡単。
各家電操作に対応したiOSアプリを作ってしまいます。
アプリなんか作ったことないし作り方も分からないという方でも意外と簡単に作れますのでお試しあれ。
開発ツールであるXcodeは無料で、実機での自作アプリの実行も現バージョンのXcode7から無料となりました。

完成イメージとなる動画を用意しました。
この記事は僕のYoutubeデビューを兼ねてますw


HeySiriで家電を操作!



動画を見ていただければわかりますが

Siriにはアプリ名を言えばそのアプリを起動してくれる機能があります。
「起動時にIRKitに信号を送るアプリ」を作り、Siriに起動してもらうことによって家電操作しちゃおうというわけです。

つまり、一つの信号ごとに一つのアプリを作る必要があります。

この動画では照明の消灯の信号を送るアプリを「ショート」、
点灯の信号を送るアプリを「ピカチュウ」と言う名前で作ってます。
「消灯」や「点灯」や「電気つけて」という名前のアプリを作っても、賢いSiriさんはHomekitの機能を発動させてしまうためアプリの起動ができません(動画の0:20〜)




起動時にIRKitに信号を送るアプリの作り方

IRKitの導入と、Xcodeのインストールが完了していることを前提とします。


以下からソースコードをダウンロードしてください。
Clone or Download→DownloadZIPからできます。

この記事は僕のGitHubデビューを兼ねてますw
github.com


ダウンロードしてきたフォルダ内のプロジェクトファイル(.xcodeproj)から開けます。
f:id:akeomeYama:20160716203316p:plain

f:id:akeomeYama:20160716203431p:plain

このソースコード
あなたの家の家電を操作するために書き換えが必要な箇所が2箇所あります。
1.送信先となるIRKitのIPアドレスと、2.送信する信号の中身です。

ViewController.swiftというソースコード内にある、TODO:って記載してある箇所です。
書き換えるために必要な情報は、Macにプリインストールされている「ターミナル」を使って取得します。

1.IRKitのIPアドレス取得

以下のURLを参考にしました。
qiita.com


ターミナルを起動後、以下のコマンドを打ち込みます。

dns-sd -B _irkit._tcp

するとIRKitの名前が出てきます。
f:id:akeomeYama:20160716203515j:plain


この名前を元にIPアドレスを取得します。
control+Zで上記のコマンドを停止させ、次のコマンドを打ち込みます。
「iRKitXXXX」の部分には上記で取得した名前を入れて下さい。(大文字小文字は問われないみたいです)

dns-sd -G v4 iRKitXXXX.local

f:id:akeomeYama:20160716203546j:plain

これで、IRKitのIPアドレスが取得できました!

2.リモコンの信号取得

次はリモコンの信号を取得します。
信号信号と言ってますが実体はJSON形式のデータです。

まずはIRKitに向かって取得したいリモコンのボタンを押しましょう。
例えば照明のリモコンのONボタンを押し、IRKitが点滅するのを待ちます。

点滅後、その信号を取得するために以下のコマンドを入力します。
「192.XXX.XXX.XXX」の部分には先ほど取得したIRKitのIPアドレスを入れて下さい。

curl -i "http://192.XXX.XXX.XXX/messages" -H "X-Requested-With: curl"

すると、なにやら数字の羅列が出力されるはずです。
これが照明ONの信号であり、必要な情報となります。
f:id:akeomeYama:20160716203608j:plain



さて取得したIPアドレスと信号を持って意気揚々とソースコードに戻りましょう。

変更箇所は以下の2箇所です。

f:id:akeomeYama:20160716204038j:plain


書き換えたら後はMaciPhoneを接続し、左上の再生ボタンで実行すればあなたのiPhoneで信号を送るだけのアプリが動きます!


レッツHey Siri


「Hey Siri
 ピカチュウ!!!」

と叫びましょう!
まばゆい光が辺りを明るく照らします・・・


アプリ名はデフォルトでピカチュウにしておりますが変更する場合は
Xcode画面左のファイル一覧から「info.plist」を選んで
Bundle display name をジバニャンひこにゃんなどの好きな名前に変えてください。

f:id:akeomeYama:20160716204359p:plain



あとこのアプリは起動後5秒経過すると自動で終了するようになってます。
App Storeにリリースするアプリにこんな機能を搭載することはできませんが、自分用に、自分で作るアプリなので自由に使いやすいように実装できます。
もちろん、信号部分を変えることによって好きなリモコン操作の信号を飛ばすアプリを作ることができます。

iOSアプリは開発言語にSwiftが登場し、実機でのアプリ実行に開発者登録の必要がなくなりました。以前と比べるとアプリ作りの敷居はかなり下がっていると思います。
この記事が誰かのアプリ作りのきっかけになりましたら幸いです。



IRKitは当然ながら、自分でアプリ作らなくても超便利アイテムです


天井照明器具専用 リモコンスイッチOCR-04 07-0154

天井照明器具専用 リモコンスイッチOCR-04 07-0154

こいつがあればお部屋の照明をリモコン操作に対応できます。うちもこれ



参考:
IRKit - Open Source WiFi Connected Infrared Remote Controller
NSURLConnectionでHTTPやFTP通信する - Swiftサラリーマン