# 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"
}

发送的数据需遵循以下规则:

  1. ssid 字段必不为空;
  2. bssid 字段非必传;
  3. password 字段可能不存在,但若存在,则长度等于 5 (WEP) 或 8 到 63 (WPA2);
  4. auth_code 字段必不为空。

若设备端收到正常数据则返回如下数据代表传输成功,而后关闭 AP 开始尝试连接 WiFi。

{"code":1}

若收到不合法数据则回复相关错误

{"code":-1,"message":"PASSWORD_ILLEGAL"}

codemessage 对应关系

code message 备注
-1 PASSWORD_ILLEGAL WiFi 密码不合法
-2 INVALID_AUTH_CODE 传参中未包含 auth_code