4. システム構成
サーバ
Facebook
ID 名 Apache / Perl
①
ブラウザ
②
JSON
HTML5 の
MongoDB
加速度センサ FB ID 名
API(Javascript)
③ 3次元
④
折れ線
グラフ
rmongodb rgl
スマホ
開発用 PC
5. プログラム: Javascript@ スマホ
window.addEventListener(
"devicemotion",
function(e){
aCount++;
var x = e.accelerationIncludingGravity.x;
var y = e.accelerationIncludingGravity.y;
var z = e.accelerationIncludingGravity.z;
var ad = { x:x, y:y, z:z };
// 中略
sendToServer(bData);
}, true);
function sendToServer(v) {
var req = new XMLHttpRequest();
req.open('POST','http://jiot.net/715/ajax/'+yourRole+'/'+yourName);
req.onreadystatechange = function() {
if (req.readyState==4) {
lab3.text = req.responseText;
}
}
req.setRequestHeader("content-type","application/x-www-form-urlencoded");
var json = JSON.stringify(v);
req.send("json="+escape(json));
}
6. プログラム: Perl@ サーバ
use MongoDB;
use JSON qw/encode_json decode_json/;
my $connection = MongoDB::Connection->new; # localhost
my $database = $connection->match;
my $collection = $database->evs;
# Perl/Dancer を使用
( 略)
post '/715/ajax/:role/:name' {
my $role = params->{'role'};
my $name = params->{'name'};
my $json = params->{'data'};
my $time=time();
my $data=decode_json($json);
$collection->insert({role=>$role,name=>$name,time=>$time,data=>$data});
// この辺でセンサーデータを分析する処理が入る
if ( マッチングに成功した ) {
redirect 'FB の ID 名を交換して表示するページ ';
}
};
7. プログラム: R@ 開発用 PC
library(rmongodb)
} else {
library(rgl)
col='red';
mongo <- mongo.create('jiot.net')
x<-lapply(data,function(a) {-a[[1]]})
one <- function() {
y<-lapply(data,function(a) {a[[2]]})
cur <- mongo.find(mongo, 'match.evs') z<-lapply(data,function(a) {-a[[3]]})
add=F
}
while (mongo.cursor.next(cur)) {
plot3d(x,y,z,type="l",col=col,add=add)
e <- mongo.cursor.value(cur) add=T
role <- mongo.bson.value(e,"role")
}
data <- mongo.bson.value(e,"data")
mongo.cursor.destroy(cur)
if (role==1) { }
col='blue';
x<-lapply(data,function(a) {a[[1]]})
y<-lapply(data,function(a) {a[[2]]})
z<-lapply(data,function(a) {a[[3]]})
role <- 値
{ role: 値 , name:”hoge”, time: 値 , x <- [ 1番目の x, 2番めの x,...]
data:[{x: 値 ,y: 値 ,z: 値 }, y <- [ 1番目の y, 2番めの y,...]
{x: 値 ,y: 値 ,z: 値 }, … ] } z <- [ 1番目の z, 2番めの z,...]