Posted at

iPhoneを持って帰宅/外出すると、自動で家電の電源をオン/オフさせるアプリ作った

More than 3 years have passed since last update.


自宅からの距離で、自宅の照明をオン/オフしたい

フューチャーホームコントローラー という面白いガジェットがあります。

音声で赤外線リモコン操作が出来るというものです。温度計、明るさセンサーも内蔵されています。

WEBページ経由でのリモコン操作も出来ますし、APIも公開されているのでアプリを作ってコントロールする事も出来ます。

Swift言語でiPhoneアプリを作ってみたかったので、自宅からの距離によってフューチャーホームコントローラーを

制御するアプリ FHCCommander (Future Home Controller Commander) を作ってみました。

多分このアプリを使いたい人は、世の中に数名いるかどうかなので、AppStoreで公開するよりはソースコードを公開する方が

多くの人の役に立ちそうなので、githubにて公開しました。 https://github.com/FUKUZAWA-Tadashi/FHCCommander.git

Swiftサンプルプログラムを読みたい人には有用かもしれません。

iPhoneアプリはこれで2作目で、とても馴れたとは言えず、常識的なiOSの作法もわかってない部分があるかと思いますが

笑って許して下さい。

SwiftプログラムはXcode6以上でなければビルド出来ません。iOSはバージョン8以上が必要です。

iOS Dev Center からダウンロードしてインストールする必要があります。


フューチャーホームコントローラーの設定

FHCCommanderは、「家電」と「操作」の組み合わせでFHCにコマンドを送ります。

それらが既に用意されていれば、FHC側の設定は必要ありません。

しかしFHCCommanderが呼び出すための専用家電カテゴリを作っておくと便利かと思います。

例えば、帰宅時に部屋が暗かった場合にのみ照明をつける、というような動作をさせたい場合とか、

一度に複数の家電の電源をオフにしたいといった場合に便利です。

あらかじめ、家電「照明」と、その操作「つける」「けす」が登録されているとします。

「設定画面に行く」→「コマンド設定を行う」でコマンドを追加します。


ittekimasu.js

function main(host, secret,command,args)

{
action("照明","けす");
// action("エアコン", "オフ");
}


tadaima.js

function main()

{
if (5 > sensor_lumi()) {
action("照明","つける");
}
}

リモコンの編集メニューから、「新規作成する」で新しい機材「FHCC」を作ります。

「動作を新規に追加する」をクリックします。

種類を「その他」に、その他種類名を「帰宅」にします。

操作方法を「コマンド実行」にして、追加したコマンド tadaima.js を選択します。

同様に、動作「外出」を新規追加して、コマンド ittekimasu.js を割り当てます。


iPhoneに FHC Commander を転送

ここでは細かいやり方は書きません。

iOS開発者ならわかるでしょう。


  • iPhoneをiOS8にアップデート

  • iPhoneを開発用機材として登録

  • Xcode6でFHCCommanderをビルド

  • Xcode6でFHCCommanderをiPhoneに転送


FHCCommanderの設定

FHCCommanderが起動したら、下のタブの Settings をタップして設定画面にします。

FHCアドレスの欄に、自分のフューチャーホームコントローラーのローカルIPアドレスを記入します。

mailaddressとpasswordの欄に、登録したメールアドレスとパスワードを記入します。

次に「自宅設定」ボタンをタップすると、現在位置情報から自宅緯度経度の欄が自動設定されます。

また、LANのSSIDと、フューチャーホームコントローラーのAPIを呼び出すのに必要なSECRETを自動取得し、

それぞれの欄を自動設定します。

パスワードが間違っていたりすると、SECRETは取得出来ません。

SECRETが取得できているようならば、フューチャーホームコントローラーに登録された機材と動作の一覧も取得できています。

画面下部の Action タブをタップして、外出/帰宅時の動作を選択します。

iOS Simulator Screen Shot 2014.09.15 23.55.51.png

これで設定完了。


動作確認

iPhoneを持って外出してみましょう。アプリがバックグラウンドになっていても、コマンドは実行されるはずです。

但し、自宅LANに接続されたかどうかのチェックはバックグラウンドでは出来ないようです。

「自宅LANに接続されたら」のスイッチは切っておく方が良いでしょう。(機能削除すべきかな)

Have fun !

iOS Simulator Screen Shot 2014.09.16 0.09.20.png


今後

登録した地点からの距離によって、URLスキームを使って他アプリを呼び出すアプリと、

URLスキームから呼び出されてFHCにコマンドを送るアプリの、2つのアプリに分離した方が

色々と応用が効いて楽しそうな気がします。

(バックグラウンドからURLスキームでアプリ呼び出しが出来ないと無理ですが、どうなんでしょう?)

なお今の所作る予定はないです。

フューチャーホームコントローラーがHomeKitに対応すれば、もっとマシなアプリから制御したり、

Siriを通して命令したり出来るようになると思います。 (HomeKitへの対応予定があるかどうかは知りません)


謝辞

フューチャーホームコントローラーを開発されました 株式会社rti技研 様、面白いガジェットを作って頂いてありがとうございます。

小飼弾さんの swift-json を使わせて頂きました。

Apple社の Reachability サンプルプログラムを使わせて頂きました。