沈斌
2016-12-25 04ce1800ada4f966beba59c389ab12e82061d023
添加监听代码以便实时修改通讯配置
3 files modified
92 ■■■■ changed files
method.js 65 ●●●● patch | view | raw | blame | history
queue.js 17 ●●●●● patch | view | raw | blame | history
server.js 10 ●●●●● patch | view | raw | blame | history
method.js
@@ -167,14 +167,27 @@
    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 = {
            address: "江苏省昆山市摩瑞尔电器",
            location: {

                lat:31.430616,
                lng:120.988327

            },
            notice: {
                tel: "15950198162",

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

                open_id: "o-RTuwvMHWotyirPHLmdSB_dKoQU"
            }
        }
    }
    var current = moment();
    queue.pushToMQ('ex_data_screen', {
        mac: mac,
        location: {
            lat: 31.430616,
            lng: 120.988327
        },
        location: _config.location,
        data: {
            x0: ferval,
            x1: x1,  //PM2.5 - (单位:ppm)
@@ -196,11 +209,8 @@
        }
        queue.pushToMQ('ex_data_alarm', {
            mac: mac,
            address: "江苏省昆山市摩瑞尔电器",
            location: {
                lat:31.430616,
                lng:120.988327
            },
            address: _config.address,
            location: _config.location,
            data:{
                x0: ferval,
                x1: x1,  //PM2.5
@@ -211,11 +221,7 @@
                x6: x14  //光照强度
            },
            level: level,
            notice: {
                tel: "15950198162",
                email: "it01@moral.org.cn",
                open_id: "o-RTuwvMHWotyirPHLmdSB_dKoQU"
            },
            notice: _config.notice,
            time: moment.valueOf()
        });
    }
@@ -343,6 +349,37 @@
    }
};
module.exports.initConfigs = function(db) {
    db.collection("devices").find().toArray(function(err, docs) {
        docs.forEach(function(doc) {
            var mac = doc.mac;
            var address = doc.address;
            var location = doc.location;
            var notice = doc.notice;
            if(notice == null) {
                var userID = doc.userID;
                db.collection("users").find({"_id": userID}).limit(1).next(function(err, user){
                    global.configs[mac] = {
                        address: address,
                        location: location,
                        notice: {
                            tel: user.username,
                            email: user.email,
                            open_id: user.open_id
                        }
                    }
                });
            } else {
                global.configs[mac] = {
                    address: address,
                    location: location,
                    notice: notice
                }
            }
        });
    });
};
/////////////////////////////////////////////////
module.exports.insertDocument2 = function(db, data, rank, callback) {
    var fields = data.match(/.{2}/g);
queue.js
@@ -24,4 +24,21 @@
            conn.close();
        }, 500);
    });
};
module.exports.listenToMQ = function(ex) {
    amqp.connect(uri, function(err, conn) {
        conn.createChannel(function(err, ch) {
            ch.assertExchange(ex, 'fanout', { durable: false });
            ch.assertQueue('', {exclusive: true}, function(err, q) {
                ch.bindQueue(q.queue, ex, '');
                ch.consume(q.queue, function(msg) {
                    var message = JSON.parse(msg.content);
                    var mac = message.mac;
                    var data = message.data;
                    global.configs[mac] = data;
                }, { noAck: true });
            });
        });
    });
};
server.js
@@ -19,6 +19,8 @@
    "5a000001000c": 20   //联云通知
};
global.configs = {};
function handleData(db, socket, value) {
    //1.心跳命令行
@@ -119,6 +121,12 @@
    }
    console.log('Connecting to Mongo DB at ' + config.URL);
    //初始化三级警报通讯方式
    method.initConfigs(db);
    //监听三级警报通讯方式的变化
    queue.listenToMQ("ex_data_config");
    net.createServer().on('connection', function(socket){
        console.log('CONNECTED: ' + socket.remoteAddress +':'+ socket.remotePort);
@@ -158,4 +166,4 @@
    }).listen(config.PORT, config.HOST);
    
    console.log('TCP Server listening on ' + config.HOST + ':' + config.PORT);
});
});