From 9ae70c74a3b70be7c52d1eb1ac69504bd1aa5639 Mon Sep 17 00:00:00 2001 From: 沈斌 <bluelazysb@hotmail.com> Date: Thu, 04 Jan 2018 15:42:45 +0800 Subject: [PATCH] updated --- create_minutely_data.js | 92 ++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 92 insertions(+), 0 deletions(-) diff --git a/create_minutely_data.js b/create_minutely_data.js index e69de29..de315ec 100644 --- a/create_minutely_data.js +++ b/create_minutely_data.js @@ -0,0 +1,92 @@ +var mysql = require('mysql'); +var moment = require('moment'); +var config = require('./config'); +var mongoClient = require('mongodb').MongoClient; + +var mysqlClient = mysql.createConnection(config.mysql); + +mysqlClient.connect(function(error) { + if (error) return; + console.log("connected to MySQL"); +}); + + +var start_date = '2017-11-12'; +var end_date = '2017-11-12'; + +var days = moment(end_date).diff(moment(start_date), 'days'); +for (var i = 0; i <= days; i++) { + var date_day = moment(start_date).add(i, "days"); + for(var j = 0; j < 24; j++) { + var date_hour = moment(date_day).add(j, "hours").format("YYYY-MM-DD HH:00:00"); + for(var k = 0; k < 60; k++) { + var start = moment(date_hour).add(k, 'minutes').format("YYYY-MM-DD HH:mm:00"); + var end = moment(date_hour).add(k+1, 'minutes').format("YYYY-MM-DD HH:mm:00"); + // console.log(start + " : " + end); + + fetchDeviceMinutelyData(start, end); + } + } +} + +mysqlClient.end(); + +function fetchDeviceMinutelyData(start, end) { + var devices = {}; + var sql = "SELECT mac, mac_key, avg(mac_value) as avg_val, min(mac_value) as min_val, max(mac_value) as max_val FROM history WHERE time >= '" + start + "' AND time < '" + end + "' GROUP BY mac, mac_key ORDER BY mac"; + //console.log(sql); + mysqlClient.query(sql, function (error, results, fields) { + if (error) throw error; + + results.forEach(function(data) { + var mac = data.mac; + var key = data.mac_key; + var val = data.avg_val; + if(devices[mac] == null) { + devices[mac] = { + mac: mac, + time: moment(moment(start, 'YYYY-MM-DD HH:mm:00').valueOf() + 8*60*60*1000).toDate() + }; + } + devices[mac][key] = val; + + if(devices[mac]["wave"] == null) { + devices[mac]["wave"] = {}; + } + devices[mac]["wave"][key] = [data.min_val, data.max_val] + }); + + var device_data = []; + for(var mac in devices) { + device_data.push(devices[mac]); + } + + // console.log(JSON.stringify(device_data)); + if(device_data.length > 0) { + insertDeviceData(device_data); + } + }); +} + +function insertDeviceData(docs) { + mongoClient.connect(config.mongo, { + poolSize: 10, + keepAlive: 300000, + auto_reconnect: true, + reconnectTries: 1000, + reconnectInterval: 5000, + connectTimeoutMS: 30000 + }, function(err, client) { + if (err) { + console.log(err.message); + return; + } + client.db('monitor').collection('data_minutely').insertMany(docs, function(err2, doc2) { + if (err2) { + console.log(err2.message); + return; + } + client.close(); + }); + }); +} \ No newline at end of file -- Gitblit v1.8.0