こんにちは、Hackeyのプロダクトマネージャーを担当している小薬(こぐすり)です。
元々DMM 3Dプリントサービスでシステム周りのお手伝いをしていたのですが、ハードウェアの開発をしたくてCerevoに入りました。
Hackeyの企画から、どうやったらユーザーさんに使ってもらえるかを苦心しました。ふわっとした製品なので、作例をどんどん記事に書いてみなさんの参考になれば幸いです。
今回はHackeyと「IRKit」というネットに繋がるリモコンを使って、簡単に色々家電を操作します。IRKitとは無線LANと赤外線を搭載したデバイスで、テレビやリモコンなど赤外線で操作できる家電を、スマートフォンやタブレットからIRKitを通じてコントロールできる、という製品です。
IRKit – Open Source WiFi Connected Infrared Remote Controller
http://getirkit.com/
通常はスマートフォンやタブレットを使ってIRKitを操作するのですが、Hackeyと連携することで「鍵をひねって」操作することも可能です。今回はそのサンプルとして、「Hackeyの鍵をひねると、IRKitを通じてリモコン付きLEDキャンドルをON/OFFをする」という動作を設定してみます。
[全体概要]
大まかな流れは以下のとおりです。
- IRKitをペアリングし、[clienttoken]、[deviceid]、[clientkey]を取り出す
- IRKitのリモコンシグナルを取り出す
- IFTTTにレシピを登録する
- DashboardにMaker ChannelのURLを設定する
1. IRKitをペアリングし、[clienttoken]、[deviceid]、[clientkey]を取り出す
まず、IRKitのウィザードを参考にペアリングを行ってください。
ちなみに、私はここで引っかかったのですが、
- 赤点灯 : ネットワークに接続できてない
- 緑点滅 : 接続試行中
- 青点滅 : サーバー接続中
- 青点灯 : 接続完了、待機中
なかなか青点灯にならなかったのですが、2.4Ghz帯しか対応してなかった、チャンネルは下の方(1~12?)じゃないと動かない、みたいな何かがあったようです。
私の手元ではMacbook Proをインターネット共有してWPA2、チャンネルは1~11の設定で動作できました。
接続が完了したら、こちらの本家URL(http://ifttt.getirkit.com)を参考に、手順を進めます。必要なコマンドは4つです。
※ IRKitのファームウェアアップデート情報が出ています。
2015/10/29時点で最新のファームは3.0.0です。こちらで記載したコマンドは3.0.0で使用しています。
1. IRKitのインスタンス名を確認する
$ dns-sd -B _irkit._tcp
Browsing for _irkit._tcp
DATE: ---Thu 29 Oct 2015---
18:18:14.737 ...STARTING...
Timestamp A/R Flags if Domain Service Type Instance Name
18:18:14.988 Add 2 12 local. _irkit._tcp. iRKit0000
18:18:15.984 Add 2 5 local. _irkit._tcp. irkit0000
^C
2. IPアドレスを取り出す
$ dns-sd -G v4 irkit0000.local
DATE: ---Thu 29 Oct 2015---
18:30:53.919 ...STARTING...
Timestamp A/R Flags if Hostname Address TTL
18:30:54.325 Add 2 12 irkit0000.local. 192.168.2.4 10
18:30:55.193 Add 2 5 irkit0000.local. 192.168.2.4 10
^C
3. デバイスIDを取り出す
$ curl -i "http://192.168.2.4/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":"D59FB397F8D04A588B10415234A0xxxx"}
4. デバイスIDとクライアントキーを取り出す
$ curl -i -d "clienttoken=D59FB397F8D04A588B10415234A0xxxx" "https://api.getirkit.com/1/keys"
HTTP/1.1 200 OK
Server: ngx_openresty
Date: Thu, 29 Oct 2015 09:38:54 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":"72EC5FC2707F4216A9B1E6EC11E5xxxx","clientkey":"C1D3CA0731CA4BE8822F363F823xxxx"}
2. IRKitのリモコンシグナルを取り出す
上記のデバイスIDとクライアントキーの他に、送信用シグナルの情報が必要です。
送信用シグナルは、最後にIRKitに対して送信された情報が戻されます。
先ほど取り出したIRKitのIPアドレスを使用して、curlコマンドを送信します。
送信用シグナルを取り出す
$ curl -i "http://192.168.2.4/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":[18031,8755,1111,~~,4400,1111]}
3. IFTTTにレシピを登録する
IFTTT側にレシピを作成します。
this側にMaker Channelを入れます。
トリガー設定を指定し、イベント名を設定します。
That部にWordpressを指定します。
アクションはcreate a postになります。
レシピを保存します。
4. DashboardにMaker ChannelのURLを設定する
IFTTT MakerChannel(https://ifttt.com/maker)にトリガーURLを作成します。
トリガーのURLをコピーして、Hackeyのダッシュボードにwebhookを追加します。
これで設定完了です。
うまく動きましたか?
これを活用すれば、部屋に入った時に鍵をひねると、照明やエアコン、テレビを全部まとめてつける! なんて使い方も可能になります。
アナログなのにデジタルハックなHackeyをどうぞよろしくお願いします〜!
IndiegogoでHackeyが特別価格になってます!
https://www.indiegogo.com/projects/hackey-a-smart-wi-fi-connected-key-switch#/
著者プロフィール
- ほそぼそとPM