# uniapp微信小程序UDP开发WIFI设备AP配网(uniapp开发环境) **Repository Path**: twinklestar005/wifi-config-dev-board-user ## Basic Information - **Project Name**: uniapp微信小程序UDP开发WIFI设备AP配网(uniapp开发环境) - **Description**: uniapp微信小程序UDP开发WIFI设备AP配网(uniapp开发环境) - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 12 - **Created**: 2025-01-16 - **Last Updated**: 2025-01-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 使用微信小程序给WiFi设备配网 在业务中使用,为了区分不同设备,在首页有一个扫码操作,扫码结果里面是填写的设备mac地址。测试可以使用mac地址生成二维码,然后扫描进入下一步。 界面截图 ![image-20240219114331329](unpackage/images/wxa-demo-screen.png) > 请将设备热点信息设置为 > SSID: 'z_' + this.deviceInfo.mac, > password: 'z_123456', ### 1. 原理介绍【[文档链接](https://blog.csdn.net/weixin_38800446/article/details/124061838)】 传统的一键配网指的是smartconfig、airkiss这些通过已经连接的无线路由器发送广播给设备,在使用过程中兼容性差、不稳定, * 很多路由器不支持udp广播 * 如果广播通过5G频段广播,设备无法收到 * 路由器名称冲突会导致连接错误路由器等问题 * 这两个协议都封装的比较多,不便于自己控制 根据微信官方提供API能力中的WiFi、UDP能力,可以用来开发Soft AP配网。加上良好的设计,可以实现一键配网的体验。同时成功率、适配率大大提升。 首先约定协议 ### 2. 基础描述 WiFi设备进入配网状态,实际是进入AP模式,设备开放一个Wifi热点出来。手机通过连接上设备Wifi模块的热点,将路由器名字和密码直接发送给Wifi设备,同时从Wifi设备那边拿到MAC地址,然后与云端校验。 #### 2.1. 各端交互流程图 此图来自腾讯云 ![输入图片说明](unpackage/images/image.png) ### 3. 操作过程 1. 用户长按按钮,触发WiFi设备进入配网模式。设备在此模式下创建wifi热点(单纯AP模式),开启UDP服务(默认 IP 为**192.168.4.1**,端口为**8266**),使指示灯闪烁 2. 小程序按照提示依次获取 Wi-Fi 列表,输入家里目标路由器的 SSID/PSW,再选择设备 softAP 热点的 SSID/PSW。 3. 手机连接设备 softAP 热点成功后,小程序作为 UDP 客户端会连接 Wi-Fi 设备上面的 UDP 服务。 4. 小程序给设备 UDP 服务,发送目标 Wi-Fi 路由器的 SSID/PSW 以及配网 Token,JSON 格式为: ```json { "cmdType":1, "ssid":"Home-WiFi", "password":"abcd1234" } ``` | 属性名 | 属性描述 | 类型 | | -------- | --------------------------- | ------ | | cmdType | 消息类型,手机向设备发送为1 | 整数 | | ssid | Wi-Fi 的 SSID | 字符串 | | password | Wi-Fi 的 密码 | 字符串 | 发送完成后,等待设备 UDP 回复设备信息及配网协议版本号: ```json { "cmdType":2, "mac":"xxxxxxxx", "protoVersion":"2.0" } ``` | 属性名 | 属性描述 | 类型 | | -------- | --------------------------------- | ------ | | cmdType | 消息类型,设备手机发送正常响应为2 | 整数 | | mac | 设备的mac,无分隔符 | 字符串 | | 固件版本 | 固件的版本 | 字符串 | 如果配网过程中出错,需要退出配网操作,那么响应 ```json { "cmdType":3, "log":"错误描述" } ``` | 属性名 | 属性描述 | 类型 | | ------- | --------------------------------- | ------ | | cmdType | 消息类型,设备手机发送异常响应为3 | 整数 | | log | 错误描述 | 字符串 | 5. 如果2秒之内,未收到设备回复,则重复步骤4,UDP 客户端重复发送目标 Wi-Fi 路由器的 SSID/PSW 。(如果重复发送5次,都没有收到回复,则认为配网失败,Wi-Fi 设备有异常) 6. 如果步骤4收到设备回复,则说明设备端已收到 Wi-Fi 路由器的 SSID/PSW,正在连接 Wi-Fi 路由器,并连接物联网平台。此时小程序会提示手机也将连接 Wi-Fi 路由器,并轮询物联网后台,来确认配网及设备绑定上线成功。 7. 设备端在成功连接 Wi-Fi 路由器后,通过 MQTT 连接物联网后台。如果连接不上,那么重新进入配网模式,指示灯再次闪烁