我需要将无头物联网设备(Raspberry Pi)连接到Wi-Fi网络。我有使用YoctoProject构建的自定义Linux。我没有安装 connman 或网络管理器。只有WPA请求者。
我的服务是用Golang编写的。
调用 wpa_cli 太棘手,也不可靠。
尝试一些可用的软件包,我决定编写自己的软件包。
参见下面的答案。
最佳答案
回答我自己的问题...
wpa-connect -用于将Linux设备连接到Wi-Fi网络(Golang)的API
此程序包是作为IoT项目的一部分开发的,目的是为无头Raspberry Pi之类的设备添加Wi-Fi连接。无需安装 connman 或网络管理器。
wpa-connect 通过D-Bus(Linux消息总线系统)与WPA请求方通信。
Github仓库
https://github.com/mark2b/wpa-connect
例子
连接到Wi-Fi网络
import wifi "github.com/mark2b/wpa-connect"
if conn, err := wifi.ConnectManager.Connect(ssid, password, time.Second * 60); err == nil {
fmt.Println("Connected", conn.NetInterface, conn.SSID, conn.IP4.String(), conn.IP6.String())
} else {
fmt.Println(err)
}
扫描Wi-Fi网络
import wifi "github.com/mark2b/wpa-connect"
if bssList, err := wifi.ScanManager.Scan(); err == nil {
for _, bss := range bssList {
print(bss.SSID, bss.Signal, bss.KeyMgmt)
}
}
根据MIT许可证发布的软件包。