2014-11-21 47 views
1

您好我一直有這個問題在過去的幾天,試圖連接到使用DBUS受保護的WiFi網絡。所以到目前爲止,我已經開發的代碼是:節點DBUS本地 - 傳遞口令,同時連接到WiFi服務使用康曼

註冊代理

var dbus = require('dbus-native'); 
var bus = dbus.systemBus(); 
bus.invoke({ 
     destination: 'net.connman', 
     path: '/', 
     'interface': 'net.connman.Manager', 
     member: 'RegisterAgent', 
     type: dbus.messageType.methodCall, 
     signature: 'o', 
     body: [ 
       '/test/agent' 
     ] 
}, function(error, response) { 
     if (error) { 
       console.error('Error', error); 
       //process.exit(1); 
     } else { 
       console.info('Success', response); 
       // process.exit(0); 
     } 
}); 

輸出

> Success 

掃描無線上網

var dbus = require('dbus-native'); 
var bus = dbus.systemBus(); 
bus.invoke({ 
     destination: 'net.connman', 
     path: '/net/connman/technology/wifi', 
     'interface': 'net.connman.Technology', 
     member: 'Scan', 
     type: dbus.messageType.methodCall, 
}, function(error, response) { 
     if (error) { 
       console.error('Error', error); 
       //process.exit(1); 
     } else { 
       console.info('Success', response); 
       //process.exit(0); 
     } 
}); 

輸出

> Success 

連接到WiFi服務

var dbus = require('dbus-native'); 
var bus = dbus.systemBus(); 
bus.invoke({ 
     destination: 'net.connman', 
     path: '/net/connman/service/wifi_00e04c81923e_4469676957494649_managed_psk', 
     'interface': 'net.connman.Service', 
     member: 'Connect', 
     type: dbus.messageType.methodCall, 
}, function(error, response) { 
     if (error) { 
       console.error('Error', error); 
       //process.exit(1); 
     } else { 
       console.info('Success', response); 
       //process.exit(0); 
     } 
}); 

輸出

> Error ['Invalid Arguments'] 

輸出fropm康曼日誌

connmand[1899]: src/agent.c:agent_receive_message() agent 0x55640fe8 req 0x55644378

connmand[1899]: src/service.c:request_input_cb() RequestInput return, 0x55649ad0

connmand[1899]:src/service.c:request_input_cb()error:org.freedesktop.DBus.Error.UnknownService

connmand[1899]: src/service.c:__connman_service_return_error() service 0x55649ad0 error 22 user_data (nil)

connmand[1899]: src/service.c:__connman_service_set_hidden_data() service 0x55649ad0 pending (nil)

connmand[1899]: src/service.c:service_save() service 0x55649ad0 new 1

connmand[1899]: src/connection.c:update_order()

connmand[1899]: src/service.c:__connman_service_get_order() service 0x55640a08 name Wired order 1 split 0

connmand[1899]: src/connection.c:find_default_gateway() default 0x5563b250 order 1

connmand[1899]: src/connection.c:__connman_connection_update_gateway() default 0x5563b250

connmand[1899]: src/service.c:connman_service_unref_debug() 0x55649ad0 ref 1 by src/service.c:6945:agent_context_unref()

所以基本上,如果有人能告訴我如何傳回包含WiFi網絡密碼的用戶數據,我將不勝感激。

任何幫助將不勝感激? (康曼版本1.20)

感謝

+0

看起來像你需要先註冊代理:https://pythonhosted.org/pyconnman/demo.html#setting-up-an-agent-to-connect-to-new-network-services – 2014-11-22 01:03:10

+0

也複查路徑拼寫正確 - connmand [1899]:SRC/service.c:request_input_cb()錯誤:org.freedesktop.DBus.Error.UnknownService是可疑 – 2014-11-22 01:04:19

+0

退房https://github.com/cfsghost/jsdx-connman它使用DBUS而不是dbus-native,但應該是一個好開始 – 2014-11-22 01:32:14

回答

0

我是無法得到的dbus本地工作。

我的解決方案是創建在wifi.config文件/ LIB /康曼/,其中包含每個服務的密碼短語:

wifi.config例如

[service_wifi_00e04c819295_4469679972434649_managed_psk] 
Type = wifi 
Security = wpa2 
Name = [service_] 
Type = wifi 
Security = wpa2 
Name = WiFiAP 
Passphrase = 12345 

然後,只需使用dbus-本機連接到WiFi服務:

連接

var dbus = require('dbus-native'); 
var bus = dbus.systemBus(); 
bus.invoke({ 
     destination: 'net.connman', 
     path: '/net/connman/service/wifi_48022aca514f_4469676957494649_managed_psk', 
     'interface': 'net.connman.Service', 
     member: 'Connect', 
     type: dbus.messageType.methodCall, 
}, function(error, response) { 
     if (error) { 
       console.error('Error', error); 
       //process.exit(1); 
     } else { 
       console.info('Success', response); 
       //process.exit(0); 
     } 
}); 
相關問題