|
3.3. 配置设备入网部分控制设备前,需要先让设备连到路由器上。连上路由器的设备,如果路由器能接入外网,设备会自动注册到机智云。
有两种配置方式能够让设备连到路由器上,一种是Airlink方式,一种是Softap方式,APP可以根据产品需求采取相应的配置方式。在开始配置前,设备要先进入配置模式,然后APP调用配置接口发送要配置的路由器ssid和密码。设备配置成功后,SDK给APP返回已配置成功的设备mac地址和产品类型标识,便于APP做下一步的操作。如果设备是重置后进入的配置模式,如果配置成功时设备还来不及从云端获取到DID,则APP得到的DID为空。
SDK的设备配置接口如果超时时间还未结束,无法进行下一次配置。此外,因为设备配置成功的广播包只有APP连到同一路由上才能收取,因此这个超时时间应该预留出APP连接路由器的时间。
需要注意的是,如果配置上线的设备不是APP要获取的产品类型,该设备就不会出现在设备列表中。
3.3.1. 设备配置流程图
3.3.2. AirLink配置AirLink使⽤UDP广播方式,由手机端发出含有目标路由器名称和密码的广播,设备上的Wifi模块接收到广播包后自动连接目标路由器,连上路由器后发出配置成功广播,通知手机配置已完成。 模块开启AirLink模式后,如果一分钟内未收到AirLink广播或无法正确连上路由器,将进入SoftAP模式。
【示例代码】
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| // 让手机连上目标Wifi
// MCU发出开启AirLink串口指令,通知模组开启AirLink模式。详情请参考《智能云空调-机智云接入串口通信协议文档》
//配置设备入网,发送要配置的wifi名称、密码
GizWifiSDK.sharedInstance().setListener(mListener);
List<GizWifiGAgentType> types = new ArrayList<GizWifiGAgentType> ();
types.add(GizWifiGAgentType.GizGAgentESP); GizWifiSDK.sharedInstance().setDeviceOnboarding("your_ssid", "your_key", GizWifiConfigureMode.GizWifiAirLink, null, 60, types);
GizWifiSDKListener mListener = new GizWifiSDKListener() {
//等待配置完成或超时,回调配置完成接口
@Override
public void didSetDeviceOnboarding (GizWifiErrorCode result, String mac, String did, String productKey) {
if (result == GizWifiErrorCode.GIZ_SDK_SUCCESS) {
// 配置成功
} else {
// 配置失败
}
}
};
| 3.3.3. SoftAP配置设备进入SoftAP模式后,会产生一个Wifi热点。手机连上此热点后,将要配置的SSID和密码发给设备。设备上的Wi-Fi模块接收到SoftAP配置包后自动连接目标路由器,与airlink一样,连上路由器后发出配置成功广播,通知手机配置已完成。
使用机智云提供的模组固件,设备产生的Wifi热点以“XPG-GAgent-”开头,密码为” 123456789”。其他厂商提供的模组,SoftAP热点名称由各自厂商指定。APP可以根据需要传入正确的热点前缀。
【示例代码】
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| // MCU发出进入SoftAP串口指令,通知模组开启SoftAP模式。详情请参考《智能云空调-机智云接入串口通信协议文档》
//让手机连接模组的SoftAP热点
//配置设备入网,发送要配置的wifi名称、密码
GizWifiSDK.sharedInstance().setListener(mListener);
GizWifiSDK.sharedInstance().setDeviceOnboarding("your_ssid", "your_key", GizWifiConfigureMode.GizWifiSoftAP, "your_gagent_hotspot_prefix", 60, null);
//模块收到配置信息,尝试连接路由器并自动关闭热点
//让手机连接到配置的wifi上
GizWifiSDKListener mListener = new GizWifiSDKListener() {
//等待配置完成或超时,回调配置完成接口
@Override
public void didSetDeviceOnboarding (GizWifiErrorCode result, String mac, String did, String productKey) {
if (result == GizWifiErrorCode.GIZ_SDK_SUCCESS) {
// 配置成功
} else {
// 配置失败
}
}
};
|
|
|