IRKitとPS3の赤外線アダプタが届いたので前回の記事の続きでtorneを起動するところまでやってみました。
動画はこちらです。
Wake up PS3 and torne with IRKit
IRKit - iPhone,iPadを使って外出先からエアコン等の家電を操作できる学習リモコン
- 出版社/メーカー: maaash.jp
- メディア: エレクトロニクス
- この商品を含むブログを見る
- 出版社/メーカー: サイバーガジェット
- 発売日: 2010/06/26
- メディア: Video Game
- クリック: 3回
- この商品を含むブログ (1件) を見る
準備
あらかじめ利用したいコマンドを保存しておきます。それを'data/ps3/ps3_power'といった風にファイルに保存しておきます。
$ curl -i "http://XX.XX.XX.XX/messages" > data/ps3/ps3_power {"format":"raw","freq":38,"data":[4713,1150,2368,1150,1150,1150,2368,1150,1150,1150,2368,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,2368,1150,2368,1150,1150,1150,1150,42612,4713,1150,2368,1150,1150,1150,2368,1150,1150,1150,2368,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,2368,1150,2368,1150,1150,1150,1150,42612,4713,1150,2368,1150,1150,1150,2368,1150,1150,1150,2368,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,2368,1150,2368,1150,1150,1150,1150]}
Node.js
ファイルをリストとして読み込んでforEachとsetTimeoutで実行しています。PS3の電源起動は時間がかかるので2つ目以降のコマンドは30秒のオフセット時間を入れています。ひとまず動くか見たかったのでif文で判定していますが、もう少し汎用的な命令体系を整備する必要がありそうです。
var request = require('request'); var fs = require('fs'); var baseUrl = 'https://api.getirkit.com/1/messages'; var filePathList = [ 'data/ps3/ps3_power', 'data/ps3/ps3_left', 'data/ps3/ps3_left', 'data/ps3/ps3_left', 'data/ps3/ps3_down', 'data/ps3/ps3_enter', ]; var dataList = new Array(); filePathList.forEach(function(filePath) { dataList.push(fs.readFileSync(filePath, 'utf-8')); }); dataList.forEach(Post); var delay = 0; function Post(data, index) { console.log(index); if(index > 0) { delay = 30000; } setTimeout( function() { request.post( baseUrl, { form: { clientkey : 'xxx', deviceid : 'yyy', message : data } }, function (err, res, body) { if (!err && res.statusCode == 200) { console.log('request succeed: ' + index + ', ' + filePathList[index]); } else { console.log(err); } } ); }, 1000 * index + delay); }
最後に
torne起動はずっと面倒だと思っていたのでこれでだいぶ楽になりました。具体的にどう使うかは考え中ですが、IFTTT連携で色々なことをトリガーにできているので、夢は広がります。