Skip to content

Instantly share code, notes, and snippets.

@saravanan10393
Forked from Maksims/wifi_rssi_windows.js
Last active August 29, 2015 14:24
Show Gist options
  • Save saravanan10393/b2d183f7afc65ca0a34c to your computer and use it in GitHub Desktop.
Save saravanan10393/b2d183f7afc65ca0a34c to your computer and use it in GitHub Desktop.
var spawn = require('child_process').spawn;
wifiNetworksRSSI(function(err, data, raw) {
if (!err) {
console.log(data); // formatted data with SSID, BSSID, RSSI
// console.log(raw); // raw output from netsh
} else {
console.log(err);
}
});
function wifiNetworksRSSI(fn) {
// prepare result string of data
var res = '';
// spawn netsh with required settings
var netsh = spawn('netsh', ['wlan', 'show', 'networks', 'mode=bssid']);
// get data and append to main result
netsh.stdout.on('data', function (data) {
res += data;
});
// if error occurs
netsh.stderr.on('data', function (data) {
console.log('stderr: ' + data);
});
// when done
netsh.on('close', function (code) {
if (code == 0) { // normal exit
// prepare array for formatted data
var networks = [ ];
// split response to blocks based on double new line
var raw = res.split('\r\n\r\n');
// iterate through each block
for(var i = 0; i < raw.length; ++i) {
// prepare object for data
var network = { };
// parse SSID
var match = raw[i].match(/^SSID [0-9]+ : (.+)/);
if (match && match.length == 2) {
network.ssid = match[1];
} else {
network.ssid = '';
}
// if SSID parsed
if (network.ssid) {
// parse BSSID
var match = raw[i].match(' +BSSID [0-9]+ +: (.+)');
if (match && match.length == 2) {
network.bssid = match[1];
} else {
network.bssid = '';
}
// parse RSSI (Signal Strength)
var match = raw[i].match(' +Signal +: ([0-9]+)%');
if (match && match.length == 2) {
network.rssi = parseInt(match[1]);
} else {
network.rssi = NaN;
}
// push to list of networks
networks.push(network);
}
}
// callback with networks and raw data
fn(null, networks, res);
} else {
// if exit was not normal, then throw error
fn(new Error(code));
}
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment