From a54c0b4d0b675d201ec640557c245aa5d00724a7 Mon Sep 17 00:00:00 2001 From: 沈斌 <bluelazysb@hotmail.com> Date: Sat, 21 Jan 2017 00:04:48 +0800 Subject: [PATCH] 修正错误 - 只有在警报等级在1级以上才发布通知 --- method.js | 178 ++++++++++++++++++++++++++--------------------------------- 1 files changed, 79 insertions(+), 99 deletions(-) diff --git a/method.js b/method.js index 48aea6b..d3f34e9 100644 --- a/method.js +++ b/method.js @@ -131,6 +131,10 @@ mac = mac.toLowerCase(); this.updateDeviceLastUpdated(db, mac, function(data) {}); + //������������������������������������������������������ + //var ver = this.toDec(fields[18]) * 256 + this.toDec(fields[19]); //��������� + + var x1 = this.toDec(fields[20]) * 256 + this.toDec(fields[21]); //PM2.5������ var x2 = this.toDec(fields[22]) * 256 + this.toDec(fields[23]); //PM10 var x3 = this.toDec(fields[24]) * 256 + this.toDec(fields[25]); //0.1���0.3um��� @@ -172,22 +176,29 @@ _config = { mac: mac, address: "���������������������������������", - location: {��� + location: { lat:31.430616, - lng:120.988327��� + lng:120.988327 }, notice: { - tel: "15950198162",��� - email: "it01@moral.org.cn",��� + tel: "15950198162", + email: "it01@moral.org.cn", open_id: "o-RTuwvMHWotyirPHLmdSB_dKoQU" + }, + options: { + 1: [1000, 2000, 3000], + 2: [1000, 2000, 3000], + 3: [1000, 2000, 3000], + 4: [1000, 2000, 3000], + 5: [1000, 2000, 3000] } - configs[mac] = _config; - } + }; + configs[mac] = _config; } var current = moment(); - queue.pushToMQ('ex_data_screen', { + var sensor_data = { mac: mac, location: _config.location, data: { @@ -199,34 +210,10 @@ x5: x10, //������ x6: x14 //������������ }, + options: _config.options, time: current.valueOf() - }); - - if(x1 > 250) { - var level = 1; - if(x1 > 750) { - level = 3; - } else if(x1 > 500) { - level = 2; - } - queue.pushToMQ('ex_data_alarm', { - mac: mac, - address: _config.address, - location: _config.location, - data:{ - x0: ferval, - x1: x1, //PM2.5 - x2: x3, //PM2.5 - x3: x9, //������ - x4: x11, //������ - x5: x10, //������ - x6: x14 //������������ - }, - level: level, - notice: _config.notice, - time: moment.valueOf() - }); - } + }; + queue.pushToMQ('ex_data_screen', sensor_data); var rank = 0; if(s > 0) { @@ -246,6 +233,7 @@ }, function(err, result) { }); } + var _this = this; db.collection("data").insertOne({ mac: mac, x1: x1, @@ -275,10 +263,40 @@ mcu: mcu, day: current.format('YYYYMMDD'), created: current.valueOf() - }, function(err, result) { + }, function(err, doc) { if (err) return; - callback(result, rank); + + var level1 = _this.getLevel(x1, _config['options'][1]); + var level2 = _this.getLevel(x9, _config['options'][2]); + var level3 = _this.getLevel(x11, _config['options'][3]); + var level4 = _this.getLevel(x10, _config['options'][4]); + var level5 = _this.getLevel(x14, _config['options'][5]); + var level = Math.max(level1, level2, level3, level4, level5); + if(level > 0) { + sensor_data._id = doc.insertedId; + sensor_data.level = level; + sensor_data.notice = _config.notice; + sensor_data.address = _config.address; + sensor_data.data = { 1: [x1, level1], 2: [x9, level2], 3: [x11, level3], 4: [x10, level4], 5: [x14, level5] }; + queue.pushToMQ('ex_data_alarm', sensor_data); + } + + callback(doc, rank); }); +}; + +module.exports.getLevel = function(val, option) { + var level = 0; + if(option == null || option.length < 3) return level; + if(val > option[0]) { + var level = 1; + if(val > option[2]) { + level = 3; + } else if(val > option[1]) { + level = 2; + } + } + return level; }; module.exports.updateDeviceSleep = function(db, data, callback) { @@ -355,70 +373,32 @@ db.collection("devices").find().toArray(function(err, docs) { docs.forEach(function(doc) { var mac = doc.mac; - if(mac != null) { - var address = doc.address || ""; - var location = doc.location || {}; - var notice = doc.notice; - if(notice == null || notice == {}) { - var userID = doc.userID; - db.collection("users").find({"_id": userID}).limit(1).next(function(err, user){ - if(user) { - global.configs[mac] = { - mac: mac, - address: address, - location: location, - notice: { - tel: user.username, - email: user.email, - open_id: user.open_id - } - } - } - }); - } else { - global.configs[mac] = { - mac: mac, - address: address, - location: location, - notice: notice + var address = doc.address || ""; + var location = doc.location || {}; + var notice = doc.notice; + var options = doc.options; + var config = { + mac: mac, + address: address, + location: location, + notice: notice, + options: options + }; + if(notice == null || notice == {}) { + var userID = doc.userID; + db.collection("users").find({"_id": userID}).limit(1).next(function(err, user){ + if(user) { + config[notice] = { + tel: user.username, + email: user.email, + open_id: user.open_id + }; + global.configs[mac] = config; } - } + }); + } else { + global.configs[mac] = config; } }); }); -}; - -///////////////////////////////////////////////// -module.exports.insertDocument2 = function(db, data, rank, callback) { - var fields = data.match(/.{2}/g); - var mac = fields[6] + fields[7] + fields[8] + fields[9] + fields[10] + fields[11]; //Mac - - var x01 = this.toDec(fields[20]) * 256 + this.toDec(fields[21]); //PM2.5������ - var x02 = this.toDec(fields[24]) * 256 + this.toDec(fields[25]); //PM2.5������ - var x09 = this.toDec(fields[32]) * 256 + this.toDec(fields[33]); //������ - var x10 = this.toDec(fields[34]) * 256 + this.toDec(fields[35]); //������ - var x11 = this.toDec(fields[36]) * 256 + this.toDec(fields[37]); //������ - var x14 = this.toDec(fields[42]) * 256 + this.toDec(fields[43]); //������������ - - var fei = this.toDec(fields[58]); - var ferval = this.toDec(fields[59]); - var aqi = this.toDec(fields[60]) * 256 + this.toDec(fields[61]); - var ddv = this.toDec(fields[62]) * 256 + this.toDec(fields[63]); - var mcu = this.toDec(fields[64]) + this.toDec(fields[65]) / 100; - - db.collection("devices").find({ mac: mac }).limit(1).next(function(err, doc){ - if (err) return; - - var app = 0; - var app_status = doc.app_status; - var app_last_updated = doc.app_last_updated; - if(app_status == 1 && app_last_updated != null && Date.now() - app_last_updated <= 30000) { - app = 1; - } - db.collection(config.COLLECTION).insertOne({ mac: mac.toLowerCase(), data: data + ' - PM2.5:' + x01 + ', ������:' + x09 + ', ������:' + x10 + ', ������:' + x11 + ', ������:' + x02 + ', FEI:' + ferval + ', ������:' + fei + ', ������:' + x14 + ', AQI:' + aqi + ', ������������:' + ddv + ', MCU������:' + mcu + ', APP:' + app, date: Date.now() }, function(err, doc) { - if (err) return; - callback(doc); - }); - }); -}; - +}; \ No newline at end of file -- Gitblit v1.8.0