From 8fbd26ea16e81c29926188ec5a8e149c032d102f Mon Sep 17 00:00:00 2001
From: 沈斌 <bluelazysb@hotmail.com>
Date: Thu, 03 May 2018 14:23:26 +0800
Subject: [PATCH] 代码优化 - 去掉无效的queue
---
method.js | 141 ++++++++++++++++++++++++++++++++++------------
1 files changed, 104 insertions(+), 37 deletions(-)
diff --git a/method.js b/method.js
index af6b0f2..254054f 100644
--- a/method.js
+++ b/method.js
@@ -4,6 +4,7 @@
var moment = require('moment');
var config = require('./config');
+var queue = require('./queue');
module.exports.toDec = function(hex) {
if(typeof hex === 'number') {
@@ -130,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���
@@ -159,18 +164,47 @@
var p3 = this.toDec(fields[47]);
var p4 = this.toDec(fields[48]);
var fei = this.toDec(fields[58]);
- var ferval = this.toDec(fields[59]);
+ //var ferval = this.toDec(fields[59]);
+
+ var feival = this.toDec(fields[71]) == 0 ? (this.toDec(fields[72]) * 256 + this.toDec(fields[73])) : -1 * (this.toDec(fields[72]) * 256 + this.toDec(fields[73]));
+
var t = this.toDec(fields[56]);
var aqi = this.toDec(fields[60]) * 256 + this.toDec(fields[61]); //AQI
var ddv = this.toDec(fields[62]) * 256 + this.toDec(fields[63]);
var mcu = this.toDec(fields[64]) + this.toDec(fields[65]) / 100;
+ var _config = global.configs[mac];
+ if(_config == null) {
+ _config = config.ALARM_DEFAULTS;
+ _config.mac = mac;
+ global.configs[mac] = _config;
+ }
+
var current = moment();
+
+ var sensor_data = {
+ mac: mac,
+ location: _config.location,
+ data: {
+ x0: feival,
+ x1: x1, //PM2.5 - (������:ppm)
+ x2: x3, //PM2.5 - 0.1���0.3um���
+ x3: x9, //������
+ x4: x11, //������
+ x5: x10, //������
+ x6: x14, //������������
+
+ mcu: mcu
+ },
+ options: _config.options,
+ time: current.valueOf()
+ };
+ queue.pushToMQ('ex_data_screen', sensor_data);
var rank = 0;
if(s > 0) {
- rank = this.random(1000, 99999);//this.random(1000, 99999999);
+ rank = this.random(100200, 102000);//this.random(1000, 99999999);
db.collection("device_ranks").insertOne({
mac: mac,
rank: rank,
@@ -186,6 +220,7 @@
}, function(err, result) { });
}
+ var _this = this;
db.collection("data").insertOne({
mac: mac,
x1: x1,
@@ -207,7 +242,7 @@
p3: p3,
p4: p4,
fei: fei,
- ferval: ferval,
+ ferval: feival,
aqi: aqi,
s: s,
rank: rank,
@@ -215,10 +250,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.levels = [level1, level2, level3, level4, 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) {
@@ -291,37 +356,39 @@
}
};
-/////////////////////////////////////////////////
-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);
+module.exports.initConfigs = function(db) {
+ var _address = config.ALARM_DEFAULTS.address;
+ var _location = config.ALARM_DEFAULTS.location;
+ var _options = config.ALARM_DEFAULTS.options;
+ db.collection("devices").find().toArray(function(err, docs) {
+ docs.forEach(function(doc) {
+ var mac = doc.mac;
+ var address = doc.address || _address;
+ var location = doc.location || _location;
+ var options = doc.options || _options;
+ var notice = doc.notice;
+ 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;
+ }
});
});
-};
-
+};
\ No newline at end of file
--
Gitblit v1.8.0