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