-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.js
73 lines (60 loc) · 1.37 KB
/
server.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
var mqtt = require('mqtt');
var conn = require('./config.json');
var client = mqtt.connect(
// `mqtts://${conn.username}:${conn.pass}@m24.cloudmqtt.com:${conn.port}`
`mqtt://localhost:1883`
);
var axios = require('axios');
var qs = require('qs');
const DB_URL = 'http://localhost:9000';
const config = {
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
};
client.on('connect', function() {
client.subscribe('#', function(err) {
if (err) throw err;
});
});
client.on('message', function(topic, message) {
// message is Buffer
var parsed = JSON.parse(message);
console.log(topic);
if (topic.includes('/d/s/')) {
triggerConnections(parsed);
}
// send socket message to frontend
// sendSocket()
// SEND TO DB
// queryAndStore(parsed);
});
triggerConnections = json => {
axios
.get(DB_URL + '/api/devices/did/' + json.id)
.then(res => {
var body = res.data;
var connections = body.connections;
var payload = { type: 'action' };
for (var connect of connections) {
client.publish('/s/d/' + connect.to.dId, JSON.stringify(payload));
}
})
.catch(err => {
#Device(json);
});
};
#Device = json => {
var data = qs.stringify(
{
dId: json.id
},
{ allowDots: true }
);
axios
.post(DB_URL + '/api/devices/', data, config)
// .then(res => console.log(res))
.catch(err => {
if (err) throw err;
});
};