-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsigfox_downlink.js
89 lines (70 loc) · 2.21 KB
/
sigfox_downlink.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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
var express = require('express');
var Nexmo = require('nexmo');
var mongo = require('mongodb');
var assert = require('assert');
var util = require('util');
var fs = require('fs');
var app = express();
var MongoClient = require('mongodb').MongoClient;
var nexmo = new Nexmo({
apiKey: "",
apiSecret: ""
});
var uri = "";
app.use(express.json());
app.post('/downlink', function(request, response){
fs.writeFileSync('request', util.inspect(request) , 'utf-8');
console.log(request.body);
response.send("200");
var device = request.body.device;
var time = request.body.time;
var station = request.body.station;
var rssi = request.body.rssi;
var duplicate = request.body.duplicate;
var data = request.body.data;
var flag = request.body.flag;
var lat = request.body.lat;
var long = request.body.long;
MongoClient.connect(uri, { useNewUrlParser: true }, function(err, client) {
assert.equal(null, err);
var collection = client.db('connectedBottle').collection('messages');
collection.insertOne(
{
'device' : device,
'time' : time,
'data' : data,
'flag' : flag,
'lat' : lat,
'long' : long,
'station' : station,
'rssi' : rssi,
'duplicate' : duplicate
}
, function(err, result) {
assert.equal(err, null);
});
});
if(flag == "F") {
MongoClient.connect(uri, { useNewUrlParser: true }, function(err, client) {
assert.equal(null, err);
var collection = client.db('connectedBottle').collection('devices');
collection
.find({'id' : device})
.toArray(function(err, device) {
assert.equal(err, null);
// Sending a SMS with the fallen location
var message = "Chute détectée (Dispositif \"" + device[0].alias + "\"). Position :" + lat + "," + long + " (https://www.google.com/maps/?q=" + lat + "," + long + ")"
sendSMS(device[0], message);
});
client.close();
});
}
});
app.listen(3000);
function sendSMS(device, message) {
for(var i= 0; i < device.contacts.length; i++) {
console.log(message);
nexmo.message.sendSms("CONNECTEDBOTTLE", device.contacts[0], message);
console.log("sending to " + device.contacts[0]);
}
}