From 04ce1800ada4f966beba59c389ab12e82061d023 Mon Sep 17 00:00:00 2001
From: 沈斌 <bluelazysb@hotmail.com>
Date: Sun, 25 Dec 2016 21:27:27 +0800
Subject: [PATCH] 添加监听代码以便实时修改通讯配置
---
queue.js | 17 ++++++++
method.js | 65 +++++++++++++++++++++++++-------
server.js | 10 ++++
3 files changed, 77 insertions(+), 15 deletions(-)
diff --git a/method.js b/method.js
index 0148b5d..7ba59d9 100644
--- a/method.js
+++ b/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);
diff --git a/queue.js b/queue.js
index 841d19c..7d84d0c 100644
--- a/queue.js
+++ b/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 });
+ });
+ });
+ });
};
\ No newline at end of file
diff --git a/server.js b/server.js
index ae5b574..921b518 100644
--- a/server.js
+++ b/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);
-});
+});
\ No newline at end of file
--
Gitblit v1.8.0