Tako can fry!

とほほ・・・

THETA S の API を少々

せっかく発売日に届いた THETA S だけど、ようやく時間もできたので少々いじってみることに。
初代 THETA のときは PTP のドキュメントを読みながら探り探りいじったものだけど、今は Ricoh から API のリファレンスが公開されるようになったし、だいぶやりやすくなったのではなかろうか。

https://developers.theta360.com/ja/docs/


v2 の API から Web API になって、しかもパラメータを JSON でやりとりできるとあって、これは node.js と親和性が高いと思い、さっそく THETA S のシャッターをきるスクリプトを組んでみた次第。
request のモジュールを使って、サックリこんな感じ。
(ちなみに、Intel Edison で実行。)

var request = require('request');

var options = {
    uri: 'http://192.168.1.1/osc/commands/execute',
    headers: { 'Content-Type': 'application/json;charset=utf-8' },
    json: true,
    keepAlive: false,
    body: { "name": "camera.startSession" }
};

request.post(options, function(err, res, body) {
    if (err) {
	console.log(err);
	return;
    }

    if (res.statusCode == 200) {
	// Session Starts
	options.body = {
	    "name": "camera.takePicture",
	    "parameters": { 
		"sessionId": body.results.sessionId
	    }
	};
        // Take Picture
	request.post(options, function(err2, res2, body2) {
            // Close Session
            options.body.name = "camera.closeSession";
	    request.post(options);
        });
    }
});

と、まあ、node.js は作りやすいのはいいけど、あんまりいいアイデアも浮かばないので、続けて C# で THETA S のアプリ開発を開始。
JSON も DynamicJson を使えば C# で簡単に扱えるし、後は力技でなんとかなりそう。
今度こそ Windows タブレットと組み合わせて、ストリートマップ簡単作成アプリを完成させたいところ。