Send reboot msg after message retrieval to deal with sensors going to sleep
minimal adjustment to the dallas temperature sensor as an example added scripts to drop the database and to set a reboot manually for debugging purposes
This commit is contained in:
+23
-40
@@ -1,45 +1,28 @@
|
||||
var NodeIdToReboot = 1;
|
||||
|
||||
var gwType = 'Ethernet';
|
||||
var gwAddress = '10.0.1.99';
|
||||
var gwPort = 9999;
|
||||
const dbAddress = '127.0.0.1';
|
||||
const dbPort = 27017;
|
||||
const dbName = 'MySensorsDb';
|
||||
|
||||
var BROADCAST_ADDRESS = 255;
|
||||
var NODE_SENSOR_ID = 255;
|
||||
|
||||
function encode(destination, sensor, command, acknowledge, type, payload, binary) {
|
||||
var msg = destination.toString(10) + ";" + sensor.toString(10) + ";" + command.toString(10) + ";" + acknowledge.toString(10) + ";" + type.toString(10) + ";";
|
||||
if (binary) {
|
||||
for (var i = 0; i < payload.length; i++) {
|
||||
if (payload[i] < 16)
|
||||
msg += "0";
|
||||
msg += payload[i].toString(16);
|
||||
}
|
||||
} else {
|
||||
msg += payload;
|
||||
var dbc = require('mongodb').MongoClient;
|
||||
dbc.connect('mongodb://' + dbAddress + ':' + dbPort + '/' + dbName, function(err, db) {
|
||||
if (err) {
|
||||
console.log('Error connecting to database at mongodb://' + dbAddress + ':' + dbPort + '/' + dbName);
|
||||
} else {
|
||||
db.collection('node', function(err, c) {
|
||||
c.update({
|
||||
'id': NodeIdToReboot
|
||||
}, {
|
||||
$set: {
|
||||
'reboot': 1
|
||||
}
|
||||
}, function(err, result) {
|
||||
if (err)
|
||||
console.log("Error writing reboot request to database");
|
||||
else
|
||||
console.log("Reboot request saved to database");
|
||||
});
|
||||
});
|
||||
}
|
||||
msg += '\n';
|
||||
return msg.toString();
|
||||
}
|
||||
|
||||
function rebootNode(destination, gw) {
|
||||
var sensor = NODE_SENSOR_ID;
|
||||
var command = 3; // C_INTERNAL
|
||||
var acknowledge = 0; // no ack
|
||||
var type = 13; // I_REBOOT
|
||||
var payload = "";
|
||||
var td = encode(destination, sensor, command, acknowledge, type, payload, false);
|
||||
console.log('-> ' + td.toString());
|
||||
gw.write(td);
|
||||
}
|
||||
|
||||
var gw = require('net').Socket();
|
||||
gw.connect(gwPort, gwAddress);
|
||||
gw.setEncoding('ascii');
|
||||
gw.on('connect', function() {
|
||||
console.log('connected to ethernet gateway at ' + gwAddress + ":" + gwPort);
|
||||
rebootNode(NodeIdToReboot, gw);
|
||||
console.log('reboot request submitted for ' + NodeIdToReboot);
|
||||
}).on('end', function() {
|
||||
console.log('disconnected from gateway');
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user