最終的な目標は、ワイヤレス接続のセットアップに失敗した理由を教えてくれるモジュールを作成することです。node.jsのwpa_supplicantインターフェイスのリストを取得する
現在、node-dbusモジュールを使用してwlan0インターフェイスにアクセスしようとしています。 wpa_supplicantはwlan0を認識していないと伝えている。
'wpa_supplicantはこのインターフェースについて何も知らない。'
ご意見やご提案は大変ありがとうございます。
コード:
var dbus = require('dbus-native');
var util = require('util');
var bus = dbus.systemBus();
var wpas = bus.getService('fi.w1.wpa_supplicant1');
var wpai = wpas.getInterface('/fi/w1/wpa_supplicant1'
, 'fi.w1.wpa_supplicant1', function (err, iface) {
//console.log(err, iface);
iface.on('PropertiesChanged', function(dict) {
console.log('interface properties have changed!');
console.log(dict);
});
iface.on('InterfaceAdded', function(path, dict) {
console.log('interface has been added!');
console.log(path, dict);
});
iface.on('InterfaceRemoved', function(path) {
console.log('interface has been removed!');
console.log(path);
});
iface.GetInterface('wlan0', function (err, iface2) {
console.log(err, iface2);
});
console.log(util.inspect(iface, true, 3));
});
アップデート1:
私は、インタフェースの特性を調べるためにDバスのプロパティのAPIを使用し、プロパティ自体がnullであることを発見しました。
wpas.getInterface('/fi/w1/wpa_supplicant1', 'org.freedesktop.DBus.Properties', function(err, device) {
device.GetAll('fi.w1.wpa_supplicant1', function(err, prop) {
var props = arrToMap(prop);
console.log(err,props);
});
});
function arrToMap(arr) {
var output = {};
for (var i = 0; i < arr.length; i++) {
output[arr[i][0]] = arr[i][1][1][0];
}
return output;
}
唯一の結論は、wpa_supplicantがdbusに新しいインターフェイスを登録しないことです。
(私はターミナルコマンドを使用してwpa_supplicantのを使用して、私のwlan0を設定することを確保しています)