hubot-irkit で Hubot と対話しながら IRKit を操作する。

何か Hubot とハードウェアが連携するものを作りたかったので、既に、仕事部屋とリビングに2台所有している、オープンソース赤外線リモコンデバイス IRKit を操作するスクリプトを作りました。

ngs/hubot-irkit

コマンド

こんな感じで操作します。

# オフィスのアンプを登録する
me > hubot irkit register device XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX office-amp
hubot > Registering client: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX as office-amp...
hubot > Device: office-amp is successfully registered.

# 電源オンボタンを登録する
me > hubot irkit register message poweron for office-amp
hubot > Waiting for IR message... # ここで IRKit に向けてリモコン操作
hubot > Message: poweron for office-amp is successfully registered.

# 電源オン信号をアンプに送信する
me > hubot irkit send message poweron for office-amp
hubot > Sending poweron for office-amp..
hubot > Successfully sent message: poweron for office-amp

登録したデバイス、メッセージは Hubotbrain に保存されます。

redis-brain を使っている場合は、Redis に hubot:storage というキーで JSON データが保存されます。

インストール

このスクリプトを追加するには npm install コマンドを Hubot ディレクトリで実行して、

npm install --save hubot-irkit

hubot-irkitexternal-scripts.json に追加してください。

["hubot-irkit"]

セットアップ手順

1. IRKit を入手する

大前提ですが、IRKit 本体が必要です。もしよろしければ、アフェリエイトリンクからお買い上げ下さい :)

家に届いたら、公式アプリのセットアップ手順にしたがって、ローカルネットワークに接続してください。

2. クライアントトークンを取得する

オフィシャルドキュメントに記載されている通り、dns-sd コマンドで Instance Name を見つけます。

dns-sd -B _irkit._tcp

こんなレスポンスが返ってきます。

Browsing for _irkit._tcp
DATE: ---Mon 09 Jun 2014---
 1:22:43.931  ...STARTING...
Timestamp     A/R    Flags  if Domain               Service Type         Instance Name
 1:22:44.104  Add        2   4 local.               _irkit._tcp.         irkita1EC
 1:22:44.105  Add        2   4 local.               _irkit._tcp.         iRKit928E

Instance Name を選んで、.local の接尾辞をつけて、アドレスを調べます。

dns-sd -G v4 irkita1EC.local
DATE: ---Mon 09 Jun 2014---
 1:24:14.248  ...STARTING...
Timestamp     A/R Flags if Hostname                               Address                                      TTL
 1:24:14.524  Add     2  4 irkita1ec.local.                       192.168.1.29                                 10

クライアントトークンを取得します。

curl -i -XPOST http://192.168.1.29/keys
HTTP/1.0 200 OK
Access-Control-Allow-Origin: *
Server: IRKit/1.3.6.0.g96a9b88
Content-Type: text/plain

{"clienttoken":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}

3. IRKit デバイスを登録します。

取得したクライアントトークンを使って Hubot brain に IRKit デバイスを登録します。

hubot irkit register device XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX office-amp