沈斌
2017-01-31 c0378660fd4af2280e5d08594f0ad85f8cd73e12
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量
@@ -169,23 +173,9 @@
    var _config = global.configs[mac];
    if(_config == null) {
        _config = {
            mac: mac,
            address: "江苏省昆山市摩瑞尔电器",
            location: {

                lat:31.430616,
                lng:120.988327

            },
            notice: {
                tel: "15950198162",

                email: "it01@moral.org.cn",

                open_id: "o-RTuwvMHWotyirPHLmdSB_dKoQU"
            },
            options: {
                1: [500, 700, 900]
            }
        };
        configs[mac] = _config;
        _config = config.ALARM_DEFAULTS;
        _config.mac = mac;
        global.configs[mac] = _config;
    }
    var current = moment();
@@ -225,6 +215,7 @@
        }, function(err, result) { });
    }
    var _this = this;
    db.collection("data").insertOne({
        mac: mac,
        x1: x1,
@@ -257,18 +248,18 @@
    }, function(err, doc) {
        if (err) return;
        var opt1 = _config['options'][1];
        if(x1 > opt1[0]) {
            var level = 1;
            if(x1 > opt1[2]) {
                level = 3;
            } else if(x1 > opt1[1]) {
                level = 2;
            }
        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);
        }
@@ -276,6 +267,20 @@
    });
};
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) {
    var mac = this.getMac(data);
    var collection = db.collection("devices");