沈斌
2017-01-21 a54c0b4d0b675d201ec640557c245aa5d00724a7
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,14 +176,21 @@
        _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;
@@ -199,6 +210,7 @@
            x5: x10, //湿度
            x6: x14  //光线强度
        },
        options: _config.options,
        time: current.valueOf()
    };
    queue.pushToMQ('ex_data_screen', sensor_data);
@@ -221,6 +233,7 @@
        }, function(err, result) { });
    }
    var _this = this;
    db.collection("data").insertOne({
        mac: mac,
        x1: x1,
@@ -253,22 +266,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 = { 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) {
@@ -345,34 +373,31 @@
    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;
            }
        });
    });