连接自测指南

更新时间:2019-02-18 22:17:10

下载测试使用的APP

详见自有品牌APP和公版APP的介绍

undefined

测试前设置

权限配置——》注册测试账户——》用户登入成功界面

1、APP安装后最好允许所有的权限,防止因为权限的问题导致wifi设备配网失败
手机设置->安全设置->权限管理->智能家居->允许所有权限(不同手机设置路径可能不太一样)
2、安装智能家居后,请注册有效的测试账户(手机账号即可注册)
3、一个账户只能同时在一台手机上登入

undefined

设备配网

通过以下配网方式将设备添加至个人账户并绑定使用

  1. 一键配网
  2. 热点配网
  3. 零配
  4. 局域网内绑定

一键配网

前置条件:手机需要连接设备预连接的路由器
1、APP:打开手机APP,以测试版APP为例,选择“扫描”图标添加设备。
2、APP:输入Wi-Fi密码,点击“下一步”按钮,注意这里不要更改Wi-Fi的SSID,因为待配网设备需要和手机连在同一个路由器下。
3、设备端:按下开发板上的“BOOT”键,进入待配网模式,使能设备端配网,从log中可以看到enable awss。

undefined
4、APP:点击“我确认在闪烁”按钮,使能APP配网。
5、设备端:设备端收集 APP 发的广播配网包,Log中的X+Y表示该包的序列,X表示组,Y表示组内的包序号。例如:0+4,表示第0组第4包数据。

undefined
备注:可以通过wireshark抓取无线空口包,分析配网的过程。配网起始帧包含至少3个长度一致的数据包。数据长度在1300字节~1400字节之间。根据加密方式和抓包方式,长度稍有不同。

undefined
6、设备端:收了所有的配网包后,解析出SSID和PASSWORD。

undefined
备注:如果用的是Android版APP,并且SSID和PASSWORD长度总和小于26字节,则只需通过一个管理帧广播,无需配网包序列。
7、设备端:连接路由器,获取SSID和密码后,就可以连接路由器了,获取IP地址。

F00B5638-004B-4c99-AFFD-4EBFEA272FBC.png
8、设备端:MQTT建连:MQTT与云端建立连接,连接成功后可以从log中看到mqtt connect success。

undefined
9、设备端:连接路由器广播在MQTT建连的同时,设备也会创建CoAP的Topic 并在本地注册用于设备绑定等。设备端接收到CoAP消息后,只处理在本地注册过的消息,否则直接丢弃

undefined

undefined
然后通过CoAP广播“连接路由器成功”的消息

undefined
10、设备端:发送token:MQTT建连成功后,发送token给云端

undefined
接收云端的回复,表示该token已被云端接受

undefined
11、设备端:token广播:设备端收到云端token消息的回复后,通过CoAP广播包含token的“设备信息”

undefined
在最新版的设备端sdk中,发送“设备信息”的log已被屏蔽。可以参考wireshark的抓包

undefined
12、设备端:APP通过该消息中的token,进行设备绑定。但有时候APP还会下发“设备信息查询”消息来重新获取 token

undefined
13、APP:点击开始“开始使用”,使之设备与APP端绑定
14、APP:控制设备设备绑定成功,可以在APP上控制设备。如linkkit_example_solo这个例子程序,可以打开开关,设置亮度等

undefined
备注:一键配网APP流程图如下

undefined

热点配网

1、APP:热点配网入口:在一键配网失败后,选择“试试另一种配网方式”,切换至热点配网模式。
2、APP:设置热点按照提示,设置手机热点SSID:aha,密码:12345678,设置完成,并打开手机热点后,勾选“确认已完成上述指引的操作”,点击“操作完成,进入有下一步”。(注:IOS手机需要手动开启热点)

undefined
3、设备端:连接热点按下待配网设备的“BOOT”键,进入待配网模式,开发板会自动连上aha热点。

undefined
4、设备端:设备端Wi-Fi列表设备端本地创建CoAP的Topic并注册

undefined
收到APP的“查询Wi-Fi列表”消息,设备端回复本地扫描到的所有Wi-Fi路由器的SSID。

undefined

undefined

undefined
5、设备端:Wi-Fi SSID和密码设备端收到“切换路由器”消息,该消息内包含Wi-Fi路由器SSID和密码

undefined

undefined
6、设备端:连接路由器及绑定断开与当前热点的连接,连接路由器。后续MQTT建连及绑定流程与一键配网相同

undefined

零配

前置条件
准备新开发板按照上文中的步骤,DeviceName为test_01的开发板已配网并绑定成功,在这个测试环境的基础上,准备一块新的开发板test_02
1、设备端:待配网设备信息通告待配网的开发板test_02上电后,会进入monitor模式。同时它也会发送probe request,里面携带了自己的 ProductKey和DeviceName。

undefined
2、设备端:上报设备信息已配网设备收到probe request之后,会将待配网设备信息保存到本地的列表

undefined
然后已配网设备会将本地发现的待配网设备,通过MQTT上报给云端

undefined

undefined
3、APP:添加设备手机 APP 上点击“+”,APP会从云端拉取设备列表,选择“添加”,在下个页面点击“我确认在闪烁”,同时按下待配网的开发板上的“BOOT”键,进入待配网模式

undefined
4、设备端:设备信息同步APP将所选设备的信息同步给云端,云端会将该待配网设备的信息下发给已配网设备。从已配网设备的log里面可以看到“给待配网设备配网”指令。

undefined
已配网设备向云端查询待配网设备的secret。

undefined
5、设备端:已配网设备发送probe request,里面包含Wi-Fi路由器的SSID和密码(密码经过特殊加密处理)。

undefined
从抓包文件中,也可以看到该数据包。

undefined
待配网设备接收 Wi-Fi路由器SSID和密码

undefined
7、设备端:连接路由器及绑定连接路由器以及后续MQTT建连和绑定流程与一键配网相同。

局域网内绑定

同一局域网内可以发现已经配好网但是没有绑定的设备,可以直接绑定,不需要再重新配网

常见配网失败的原因:

一、日常问题分析
1.设备类型选择错误,导致wifi密码解析错误
2.Wifi密码输入错误,导致设备连接不上wifi
3.配网时设备没有在正确的配网状态,导致设备不接收手机发出广播
4.手机权限没有允许,导致手机开启热点失败与切换wifi失败
5.手机未开启数据流量,导致热点配网时无法拿到解析password的密钥
6.配网时同时有其他同学在配网,存在互相的干扰
二、技术分析
1、未配网的Wi-Fi设备上电后,没有扫描到附近Wi-Fi的SSID。
原因:HAL 层函数适配不当。调用 HAL_Awss_Open_Monitor()函数会指定一个callback。在Wi-Fi驱动程序的接收函数里面需要调用该callback。示例伪代码如下:

undefined
其中回调函数的参数说明如下:
其中回调函数的参数说明如下:

int (cb)(char buf, int length, enum AWSS_LINK_TYPE link_type, int with_fcs,
signed char rssi)

⚫ buf:包含 IEEE802.11 的 header 和 payload。
⚫ length:IEEE802.11 的 header 长度加上 payload 长度,不包含最后 4 字节的 FCS。
⚫ link_type:设为 AWSS_LINK_TYPE_NONE。
⚫ with_fcs:设为 0。
⚫ rssi:当前数据包的信号强度。

2、无法收全配网包无法收全配网包,超时后重新开始扫描各个信道。

undefined
原因 1:待配网设备、路由器、手机距离太远,造成Wi-Fi丢包严重。建议缩短三者的距离再测试。
原因 2:有些路由器会做优化:路由器上没有其他的设备,不转发广播包。再增加一个额外的设备或手机连接到该路由器下。
原因 3:检查待配网设备的Wi-Fi驱动,确保其能接收from DS的包,也能接收to DS的包。
3、Wi-Fi密码解密出错接收配网包完成,但是Wi-Fi密码解密出错。

undefined
原因 1:Wi-Fi密码是经过加密的,密钥是根据待配网设备的信息生成的。所以有可能APP添加设备的时候,选错了产品,ProductKey不匹配,导致解密出错。
原因 2:HAL 层解密函数对接的有问题。可用以下代码验证:

undefined
4、连接路由器失败
原因 1:用户在APP上设置了错误的Wi-Fi密码,导致APP发给待配网设备的密码是错误的。
原因 2:HAL 层函数HAL_Awss_Connect_Ap()实现时,使用auth和encry参数,而配网库调用该函数时,这两个参数未必是正确的。所以请使用Wi-Fi路由器的加密方式去连接路由器,忽略auth和encry 参数。

undefined
5、APP端显示“需要授权绑定”
该设备已被其他账号绑定,需要先与其他账号解绑,才能重新绑定。
6、APP端显示“Token not found”
原因 1:由于网络,账号等原因,MQTT连接云端失败。
原因 2:设备发送了token给云端,没有收到云端的回复。
原因 3:设备在局域网广播了token,手机APP没有收到。
原因 4:手机APP发送“查询设备信息”指令,设备没有收到;也有可能设备回复了设备信息,手机APP没有收到。

results matching ""

    No results matching ""