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:
ToSa27
2014-07-26 11:28:57 +02:00
parent cc5a9fe9a8
commit 5968ddf219
5 changed files with 1129 additions and 1009 deletions
+23 -40
View File
@@ -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');
});