IRKitで赤外線操作する
2, 3年前から、居間寝室の電気、エアコンのオンオフ、プロジェクターのオンオフあたりは、irkitを使ってスマホから操作してます。
普段はherokuで動かしたり、monacaで作ったアプリから操作したり、iftttと連携したりといろいろ使っていますが、
今回は、curlを使ってインターネットのIRKitサーバを通してIRKitデバイスに赤外線を送るところを書きます。
詳細は、オフィシャルサイトを見ればわかると思います。
IRKit - Open Source WiFi Connected Infrared Remote Controller
デバイスIDとクライアントキーを求める
以下、コピペで実行すると取得できます。
IPアドレス取得 -> クライアントトークン取得 -> デバイスIDとクライアントキーという流れで取得しています。
インターネット経由(Wifiの外から)でHTTPアクセスするにはこの2つが必要になります。
dns-sd -B _irkit._tcp | head -n 5 | awk 'END {print}' | awk '{print $7}' > irkit dns-sd -G v4 `cat irkit`.local | head -n 4 | awk 'END {print}' | awk '{print $6}' > ip export IP=`cat ip` curl -i "http://$IP/keys" -d ' ' | awk 'END {print}' | sed 's/\":\"/=/g' | sed 's/[{|}|\"]//g' > clienttoken curl -i -d `cat clienttoken` "https://api.getirkit.com/1/keys" # ここで取得できます # ↓後片付け rm irkit rm ip rm clienttoken
最新の赤外線信号を取得する
事前にIRKitに向かって赤外線信号を送信しておきます。
送信後、以下のコマンドを実行することで最新の赤外線信号を取得できます。
curl -i "https://api.getirkit.com/1/messages?clientkey=XXXXXXXXXXXXXXXX"
ここで取得した信号は以下のように書き換えて、次で使います。
{"message":{"format":"raw","freq":38,"data":[xxxx,xxxx,xxxx,xxxx]},"hostname":"XXXXXXXXXXXXXX","deviceid":"XXXXXXXXXXXX"}
↓
'message={"format":"raw","freq":38,"data":[xxxx,xxxx,xxxx,xxxx]}'
赤外線信号をIRKitデバイスから送信する
以下のコマンドを実行すると、インターネット経由で赤外線を送信することができます。
信号の情報はデバイスが保持してくれるわけではないので、実行するたびに引数として渡す必要があります。
何かのアプリを作るときは、アプリ側で覚えておく必要があるので注意しましょう。
curl -i "https://api.getirkit.com/1/messages" \ -d 'clientkey=XXXXXXXXXXXXXXXXXXXXXXXXXX' \ -d 'deviceid=XXXXXXXXXXXXXXXXXXXXXXXXXXX' \ -d 'message={"format":"raw","freq":38,"data":[xxxx,xxxx,xxxx,xxxx]}'
最後に
今回は基本的なところを書きました。
これを応用して各アプリを作成しています。
いろいろ試したけど、IFTTTと連携させるのが一番使い勝手がいいですね。
blog.hello-world.jp.net
気が向いたら、また書きます。