可实现airkiss一键配网的微信小程序
修改时间 | 更新日志 |
---|---|
2021.11.24 | 首次发布 |
2022.6.6 | 更新airkiss底层库版本,修复当mac地址为空的bug |
本开源工程由半颗心脏基于微信配网airkiss协议做的一个开源微信配网小程序,适合于安信可在售的众多款Wi-Fi模组,包括 ESP32C3\ESP8266\ESP32\ESP32S2系列的模组。
如果您需要对应支持airkiss配网协议的无线模组,请到安信可淘宝店购买:点击访问
AirKiss是微信硬件平台为Wi-Fi设备提供的微信配网、局域网发现和局域网通讯的技术。开发者若要实现通过微信客户端对Wi-Fi设备配网、通过微信客户端在局域网发现Wi-Fi设备,或者把微信客户端内的音乐、图片、文件等消息通过局域网发送至Wi-Fi设备。
设备进入 Wi-Fi 混杂模式(promiscuous mode)以监听捕获周围的 Wi-Fi 报文。由于设备暂未联网,且 Wi-Fi 网络的数据帧已通过加密,设备无法获取 payload 的内容,但可以获取报文的某些特征数据,例如每个报文的长度,同时对于某些数据帧;例如 UDP 的广播包或多播包,其报文的帧头结构比较固定,较容易识别。
此时在手机 App 或者小程序侧,即可通过发送 UDP 的广播包或多播包,并利用报文的特征,例如长度变化进行编码。
将目标 Wi-Fi 路由器的 SSID/PSW 字符以约定的编码方式发送出去,设备端在捕获到 UDP 报文后,按约定的方式进行解码,即可得到目标 Wi-Fi 路由器的相关信息并进行联网。
更多关于关于微信airkiss说明,请查阅官网文档:点击我访问
自行注册一个微信小程序,请下载最新版的微信开发者工具。
新建项目之后,打开 app.js
文件添加下面代码:
"plugins": {
"airkiss": {
"version": "1.1.2",
"provider": "wx610ea582556c983e"
}
}
然后,会有提示是否添加插件,按照下面提示添加插件使用。
下面举例说明了如何使用,更多使用技巧和方法参考本小程序。
const airkiss = requirePlugin('hello-plugin');
//获取版本
console.log( airkiss.version)
//这里最好加微信小程序判断账号密码是否为空,以及其长度和是否为5G频段
airkiss.startAirkiss(this.data.ssid, this.data.password, function (res) {
switch (res.code) {
case 0:
wx.showModal({
title: '初始化失败',
content: res.result,
showCancel: false,
confirmText: '收到',
})
break;
case 1:
wx.showModal({
title: '配网成功',
content: '设备IP:' + res.ip + '\r\n 设备Mac:' + res.bssid,
showCancel: false,
confirmText: '好的',
})
break;
case 2:
wx.showModal({
title: '配网失败',
content: '请检查密码是否正确',
showCancel: false,
confirmText: '收到',
})
break;
default:
break;
}
})
//停止配网,建议在页面 unload 等生命周期里面调用,释放线程
airkiss.stopAirkiss()
airkiss.startAirkiss(ssid,password,funtion())
开始配置,需要入参路由器的SSID、密码以及回调函数,出参说明见示例。
Note:请自行处理是否为2.4G频段路由器,以及密码是否正确。
airkiss.stopAirkiss()
停止配置,释放配网线程的内存。
Note:建议在建议在页面 unload 等生命周期里面调用。
airkiss.version
获取版本
Q1: 看样子是加载一个配网插件,这个插件开源吗?
Answer:考虑到部分版权问题,我把此做成了小程序插件,暂不开源,如需了解此插件更多使用资料,请到安信可小程序配网插件详情页:点击访问
Q2: 这个配网插件是微信官方适配的吗?可商业吗?
Answer:不是微信官方适配的,是本人适配的,现已上架小程序插件, 可商业用途。
QQ群号:434878850 |
本人微信公众号:徐宏blog |
私人工作微信,添加标明来意 |