沈斌
2017-08-11 cd83ef88f783205bc17d06b249fa62f9425957c6
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,20 +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"
            }
        };
        configs[mac] = _config;
        _config = config.ALARM_DEFAULTS;
        _config.mac = mac;
        global.configs[mac] = _config;
    }
    var current = moment();
@@ -197,15 +190,18 @@
            x3: x9,  //甲醛
            x4: x11, //温度
            x5: x10, //湿度
            x6: x14  //光线强度
            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,
@@ -221,6 +217,7 @@
        }, function(err, result) { });
    }
    var _this = this;
    db.collection("data").insertOne({
        mac: mac,
        x1: x1,
@@ -253,22 +250,37 @@
    }, function(err, doc) {
        if (err) return;
        if(x1 > 250) {
            var level = 1;
            if(x1 > 750) {
                level = 3;
            } else if(x1 > 500) {
                level = 2;
            }
            sensor_data._id = doc._id;
        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) {
@@ -342,37 +354,37 @@
};
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;
            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 || _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;
            }
        });
    });