# AP 配网
本文档主要包含 iFLYOS 设备通过 AP 方式配置网络时,客户端与设备端的连接传输协议
# 概要
概要主要实现流程为:设备开启 AP 后,设备端作为 Socket 服务端,App 端作为客户端连接到设备端,通过 I/O 流通信。
# 建立连接
客户端尝试对网关的 8080 端口建立 Socket 连接(例如,如果网关为 192.168.0.0,那么尝试对 192.168.0.0:8080 建立连接)。需要注意的是,如果是微信小程序作为客户端连接到设备端,则是对网关的7070端口建立Socket连接。
Socket 连接成功后,向设备尝试通讯,发送带有 App 端当前时间戳(毫秒)的初始报文。以下是一个示例
{"timestamp":1591083122301}
设备的 Socket 服务端在收到客户端发送的初始报文后,根据设备端需要,可以根据时间戳同步系统时间,而后应当回复报文,将设备的 client_id
报给客户端
{"client_id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"}
客户端对此 client_id
进行判断,若不是期望配网的设备的 client_id
,那么可以断开与设备的连接并作出相应提示。
# 发送授权码
客户端在连接到热点之前需要根据 client_id
获取到一个用于授权的 auth_code
,在连接到热点并与设备建立 Socket 连接之后,与 ssid
和密码一同发送给设备。
{
"ssid":"iflytek",
"bssid":"a4:83:e7:22:08:d1",
"password":"iflytek123",
"auth_code":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
发送的数据需遵循以下规则:
ssid
字段必不为空;bssid
字段非必传;password
字段可能不存在,但若存在,则长度等于 5 (WEP) 或 8 到 63 (WPA2);auth_code
字段必不为空。
若设备端收到正常数据则返回如下数据代表传输成功,而后关闭 AP 开始尝试连接 WiFi。
{"code":1}
若收到不合法数据则回复相关错误
{"code":-1,"message":"PASSWORD_ILLEGAL"}
code
和 message
对应关系
code | message | 备注 |
---|---|---|
-1 | PASSWORD_ILLEGAL | WiFi 密码不合法 |
-2 | INVALID_AUTH_CODE | 传参中未包含 auth_code |