83. •
var serialport = require('serialport')
, plotly = require('plotly')('Username','API Key')
, token = 'Streaming API Your token';
var portName = '/dev/tty.usbmodemfd121';
var sp = new serialport.SerialPort(portName, {
baudRate: 9600,
dataBits: 8,
parity: 'none',
stopBits: 1,
flowControl: false,
parser: serialport.parsers.readline("rn")
});
// helper function to get a nicely formatted date string
function getDateString() {
var time = new Date().getTime();
// 32400000 is (GMT+9 Japan)
// for your timezone just multiply +/-GMT by 36000000
var datestr = new Date(time +
32400000).toISOString().replace(/T/, ' ').replace(/Z/, '');
return datestr;
}
サンプルプログラム
var initdata = [{x:[], y:[], stream:{token:token, maxpoints:
500}}];
var initlayout = {fileopt : "extend", filename : "sensor-test"};
plotly.plot(initdata, initlayout, function (err, msg) {
if (err) return console.log(err)
console.log(msg);
var stream = plotly.stream(token, function (err, res) {
console.log(err, res);
});
sp.on('data', function(input) {
if(isNaN(input) ¦¦ input > 1023) return;
var streamObject = JSON.stringify({ x : getDateString(),
y : input });
console.log(streamObject);
stream.write(streamObject+'n');
});
});
1/2
2/2
※一つのファイルです
83
Plotly
101. •
var serialport = require('serialport')
, AWS = require('aws-sdk');
var portName = 'XXXXXX';
var sp = new serialport.SerialPort(portName, {
baudRate: 9600,
databits: 8,
parity: 'none',
stopBits: 1,
flowControl: false,
parser: serialport.parsers.readline("rn")
});
// data from Serial port
var lastData = 0;
sp.on('data', function(input) {
console.log(input);
lastData = input;
});
// helper function to get a nicely formatted date string
function getDateString() {
var time = new Date().getTime();
// 32400000 is (GMT+9 Japan)
// for your timezone just multiply +/-GMT by 36000000
var datestr = new Date(time + 32400000).toISOString().replace(/
T/, ' ').replace(/Z/, '');
return datestr;
}
サンプルプログラム
AWS.config.loadFromPath('./config.json');
var kinesis = new AWS.Kinesis();
var kinesisloop = setInterval(function () {
if(lastData == 0) {
return;
}
var dt = new Date();
var params = {
Data: new Buffer(JSON.stringify({ x : getDateString(), y :
lastData })).toString('base64'),
PartitionKey: 'test_key',
StreamName: 'sensor-test'
};
kinesis.putRecord(params, function(err, data) {
if(err) console.log(err, err.stack);
else console.log(data);
});
}, 5000);
1/2
2/2
※一つのファイルです
101
Kinesisのサンプル (書き込み)
102. •
var AWS = require('aws-sdk')
, base64_decode = require('base64').decode;
AWS.config.loadFromPath('./config.json');
var kinesis = new AWS.Kinesis();
var describeParams = {
StreamName: 'sensor-test',
Limit: 1000
};
kinesis.describeStream(describeParams, function(err, data) {
if(err) console.log(err, err.stack);
else console.log(data);
var shardParams = {
ShardId: data.StreamDescription.Shards[0].ShardId,
ShardIteratorType: 'LATEST',
StreamName: data.StreamDescription.StreamName
};
var getRecords = function(shardIterator) {
var getParams = {
ShardIterator: shardIterator,
Limit: 1000
};
サンプルプログラム
kinesis.getRecords(getParams, function(err, data) {
if (err) return console.log(err, err.stack); // an error occurred
console.log(data);
if (data['Records'].length > 0) {
for (var i in data['Records']) {
var js = JSON.parse(base64_decode(new
Buffer(data['Records'][i]['Data'] ¦¦ '', 'base64').toString('utf8')));
console.log(js.y);
}
}
getRecords(data['NextShardIterator']);
});
};
kinesis.getShardIterator(shardParams, function(err, data) {
if(err) console.log(err, err.stack);
else console.log(data);
getRecords(data.ShardIterator);
});
1/2
2/2
※一つのファイルです
102
Kinesisのサンプル (読み込み)