IRKit+IFTTTを使って指定した時間に家電を自動操作してみました
こんにちは、だいぱんまん(@donchan922)です。
少し前に以下の記事で紹介した自宅の家電を遠隔操作できるIRKit。リビングにいるときに寝室の冷房をつけたり、寝るときに布団に入りながら照明を消したりと我が家で大活躍中です。
Raspberry Pi+IRKit+Homebridgeを使って自宅の家電をSiriで音声操作してみました - 技術を磨くだいぱんまん
そんなIRKitについて先日、寝起きがすこぶる悪い妻から
毎朝決まった時間に自動で寝室の照明をつけて
と言われたので、まあこれで妻の寝起きが少しでもよくなればいいかと思い実現することにしました(たぶんよくならない)。仕組みについて
IFTTTを使って指定の時間にIRKitのAPIを実行し、家電を操作する仕組みです。
IFTTTは「If This Then That(これをしたら、次にあれをする)」の略で、Webサービス同士を連携させることのできるサービスです。例えば、以下のようなことが実現できます。
- Gmailにメールが届いたら、LINEに転送する
- Facebookのプロフィール写真を変えたら、Twitterのアイコンも変更する
- Kindleの日替わりセール情報が更新されたらiPhoneに通知する
今回の場合は、「指定した時間がきたらIRKitのAPIを実行する」を実現します。そのために使うのが以下の2つのWebサービスです。
- Date & Time:指定の日時をトリガーにする
- Webhooks:HTTPリクエストを送る
この仕組みを実現するためには以下の2つの作業が必要です。これらの設定は後ほど詳しく説明します。
- IRKitの設定
- IFTTTの設定
必要なもの
すでにPCがあることを想定しています。ちなみに今回のセットアップでは、Mac(macOS Sierra v10.12.5)を使用しました。以下、準備するものです。
IRKit
2021/2/9追記
現在は、販売停止しているようです。
今回の主役。
USBケーブル

Amazonベーシック USBケーブル 0.9m (2.0タイプAオス - マイクロBケーブル) ブラック
- メディア: Personal Computers
USB2.0ケーブル(タイプAオス-マイクロBオス)を用意しましょう。IRKitとACアダプタを接続するときに使います。
リモコンスイッチ

オーム電機 照明リモコンスイッチ OCR-CRS01W【品番04-9447】 OCR-CRS01W ホワイト
- 発売日: 2018/08/23
- メディア: ホーム&キッチン
照明をリモコンで操作できるようにするスイッチ。照明のON/OFFを切り替えたい場合はこれ使うと便利です。リモコン対応していない家電を操作したい場合は、リモコンコンセントを導入するのがいいと思います。
実装手順
IRKitの設定
インターネットを介してIRKitのAPIを使用する場合、以下の2つのリクエストパラメータが必要です。
ということで、上記2つのパラメータを取得します。まずは以下コマンドで、Instance Name
を取得します。
$ dns-sd -B _irkit._tcp Browsing for _irkit._tcp DATE: ---Mon 21 Aug 2017--- 22:14:46.590 ...STARTING... Timestamp A/R Flags if Domain Service Type Instance Name 22:14:46.817 Add 2 4 local. _irkit._tcp. irkitXXXX
以下コマンドで、IRKitのIPアドレスを確認します。Address
の値がそれにあたります。
$ dns-sd -G v4 irkitXXXX.local DATE: ---Mon 21 Aug 2017--- 22:15:12.044 ...STARTING... Timestamp A/R Flags if Hostname Address TTL 22:15:12.256 Add 2 4 irkitXXXX.local. 10.253.131.99 10
以下コマンドで、clienttoken
を取得します。CLIENTTOKEN
がそれにあたります。
$ curl -i "http://(IRKitのIPアドレス)/keys" -d '' -H "X-Requested-With: curl" HTTP/1.0 200 OK Access-Control-Allow-Origin: * Server: IRKit/3.0.0.0.g85190b1 Content-Type: text/plain {"clienttoken":"CLIENTTOKEN"}
以下コマンドで、deviceid
とclientkey
を取得します。DEVICEID
とCLIENTKEY
がそれにあたります。あとで使うのでメモしておきます。
$ curl -i -d "clienttoken=CLIENTTOKEN" "https://api.getirkit.com/1/keys" HTTP/1.1 200 OK Server: openresty Date: Mon, 21 Aug 2017 13:17:31 GMT Content-Type: application/json; charset=utf-8 Content-Length: 94 Connection: keep-alive Access-Control-Allow-Origin: * Access-Control-Allow-Headers: X-Requested-With X-Content-Type-Options: nosniff {"deviceid":"DEVICEID","clientkey":"CLIENTKEY"}
IFTTTの設定
IFTTTはWeb版とスマホ版があります。今回はWebから設定を行っていきます。まずはIFTTTのWebページに行き、会員登録を行います。その後、画面右上の「New Applet」を選択します。
「+this」を選択します。
「Date & Time」を選択します。
指定の時間の種類を選択します。今回は毎日決まった時間に実行するようにしたかったので、「Every day at」を選択しました。
実行する時間を選択します。今回は6時45分に設定しました。
「+that」を選択します。
「Webhoks」を選択します。
「Make a web request」を選択します。
設定するパラメータは以下のとおりです。
- URL:https://api.getirkit.com/1/messages
- Method:POST
- Content Type:application/x-www-form-urlencoded
- Body:clientkey=DEVICEID&deviceid=CLIENTKEY&message={"format":"raw","freq":...,"data":[....]}
DEVICEID
とCLIENTKEY
は、さきほどメモした値と置き換えてください。{"format":"raw","freq":...,"data":[....]}
は、対象の家電の赤外線信号と置き換えてください。
家電の赤外線信号を取得する場合は、対象の家電のリモコンをIRKitに向けて押します。その後以下コマンドを入力し、赤外線信号を確認します。今回は照明をOFFにする赤外線信号を取得しました。
$ curl -i "http://10.253.131.99/messages" -H "X-Requested-With: curl" HTTP/1.0 200 OK Access-Control-Allow-Origin: * Server: IRKit/3.0.0.0.g85190b1 Content-Type: text/plain {"format":"raw","freq":38,"data":[....]}
「finish」を選択すれば設定完了です。あとは指定した時間に対象の家電がきちんと操作されればOKです!お疲れさまでした。