mySerialPort.on('data', function(data) { var str = data.toString().trim(); if (str.length == 0) { return; } console.log('serial received ' + data.toString().length + ' bytes:' + ' trimmed string [' + str + ']'); var parts = str.split(' '); if (parts[1] == 'ds18x20') { // && parts[3] == '16') { var sensor = appConfig.nodes['id' + parts[0]].ds18x20['pin' + parts[2] + 'addr' + parts[3]]; //console.log(sensor); var temperature = parseFloat(parts[4]); console.log('Got new ds18x20 temperature ' + temperature + ' for ' + sensor.name + ', logging to ' + sensor.rrd.temperature); sensor.lastValue = temperature; //console.log(appConfig.nodes['id' + parts[0]].ds18x20['pin' + parts[2] + 'addr' + parts[3]]); rrd.update(rrd_file_root + sensor.rrd.temperature, 'temperature', [ [now(), temperature].join(':') ], function (error) { console.log(error === null ? '.' : error); }); } else if (parts[1] == 'dht11') { var sensor = appConfig.nodes['id' + parts[0]].dht11['pin' + parts[2]]; var temperature = parseFloat(parts[3]); var humidity = parseFloat(parts[4]); console.log('Got new dht11 temperature ' + temperature + ' and humidity ' + humidity + 'for ' + sensor.name + ', logging to ' + sensor.rrds.temperature + ' and ' + sensor.rrds.humidity); sensor.lastValues.temperature = temperature; sensor.lastValues.humidity = humidity; rrd.update(rrd_file_root + sensor.rrds.temperature, 'temperature', [ [now(), temperature].join(':') ], function (error) { console.log(error === null ? '.' : error); }); rrd.update(rrd_file_root + sensor.rrds.humidity, 'humidity', [ [now(), humidity].join(':') ], function (error) { console.log(error === null ? '.' : error); }); } else if (parts[1] == 'radio') { var node = appConfig.nodes['id' + parts[0]]; var temperature = parseInt(parts[2]); console.log('Got new radio temperature ' + temperature + ' for ' + node.name + ', logging to ' + node.rrds.temperature); node.lastValues.temperature = temperature; rrd.update(rrd_file_root + node.rrds.temperature, 'temperature', [ [now(), temperature].join(':') ], function (error) { console.log(error === null ? '.' : error); }); } else if (parts[0] == 'debug') { var node = appConfig.nodes['id' + parts[1]]; var rssi = parseInt(parts[2]); console.log('Got new radio rssi ' + rssi + ' for ' + node.name + ', logging to ' + node.rrds.rssi); node.lastValues.rssi = rssi; rrd.update(rrd_file_root + node.rrds.rssi, 'rssi', [ [now(), rssi].join(':') ], function (error) { console.log(error === null ? '.' : error); }); } //io.sockets.emit('flip', {flipid: 'lamp1', state: (str == '1' ? 'on' : 'off')}); });
Object.keys(stats).forEach(function (key) { var value = stats[key] if (value > 0) { //console.log(key+": "+value) }; filename = rrd_root+key+".rrd" rrd.update(filename, 'sum', [[now(), value].join(':')], function (error) { if (error !== null) { //console.log('Error:', error); } }); stats[key]=0 });
mqttclient.on('message', function (topic, message) { var filename = "data/" + topic.replace(/\//g, "_") + ".rrd"; var value = message; rrd.update(filename, 'datapoint', [[now(), value].join(':')], function (error) { if (error) { rrd.create(filename, 60, now(), ["DS:datapoint:GAUGE:120:0:U", "RRA:LAST:0.5:1:60"], function (error) { if (error) { console.log("rrdcreate error:", error); } else { console.log("rrdCREATED: " + filename); } }); } else { console.log("rrdupdated: " + filename + " " + message); } }); });