本文介绍蓝牙mesh开发中的部分常见问题及排查方法。
问题:天猫精灵播报找不到设备
需要排查以下几点:
检查mesh设备是否有广播Unprovisioned device beacon。
检查Unprovisioned device beacon中的UUID是否符合UUID格式。
检查Unprovisioned device beacon的发送频率是否符合Mesh数据发送和接收。
问题:天猫精灵播报发现的设备类型与实际产品不符合
检查Unprovisioned device beacon中UUID里的Product ID是否正确,控制台页面与下载的Product ID是10进制,实际使用的时候需要转为16进制。详细格式请参见UUID格式。
问题:天猫精灵播报配网失败
需要排查以下几点:
检查设备证书,即Product ID、MAC(即Device Name)、Device Secret 是否烧录正确。
确认天猫精灵音箱的WiFi连网链路是否通畅。
参考配网流程确认整个过程是否全部正确:
注意Provisioning Capabilities的计算都符合规范。
检查随机数是否出现重复。
在Provision完成配置阶段,设备是否回复了成功的状态消息给天猫精灵。
检查设备是否能收到天猫精灵音箱发出来的广播报文。
问题:天猫精灵App配网时找不到设备
需要排查以下几点:
检查设备证书,即Product ID、MAC(即Device Name)、Device Secret 是否烧录正确。
该产品是否在生活物联网平台控制台-人机交互中,完成了配网引导页面配置。
确认设备固件里是否打开了手机配网与Proxy连接的功能。如果基于天猫精灵Mesh SDK开发,检查宏CONFIG_BT_MESH_PB_GATT与CONFIG_BT_MESH_GATT_PROXY是否打开。
问题:配网成功率低
模组或者产品测试时如果遇到配网成功率不达标,或者部分手机型号App配网时经常配不上的问题,需要排查以下几点:
确认对模组做过频偏校正或者设置过正确的频偏参数。此问题可以通过Ellisys软件抓指定设备的空口包后查看RF Channel信息中的Initial Center Frequency参数来确认,检查实际频偏是否控制在-40KHz~+40KHz之内,频偏较大可能在部分手机型号上导致大概率失败。
检查是否有连续一段时间一直失败,并确认音箱的WiFi连网链路是否是通畅。
检查出现配网失败时,随机数是否出现重复。
问题:有天猫精灵音箱时设备本地硬件重置,没有提示设备解绑/删除
如果设备本地硬件重置后音箱没有语音提示设备解绑,同时App上设备列表里面没有删除设备,需要排查以下几点:
检查在该产品的功能定义里面是否有定义硬件复位事件(hardwareReset,0x0023),没有定义的话要添加。
检查固件里有上报硬件复位事件的逻辑,并且有若干次重传。请参考设备复位规范
查看音箱的WiFi网络连接没有问题。
问题:无天猫精灵音箱在线时设备本地硬件重置未成功上报
无天猫精灵音箱在线环境下,需要天猫精灵App将设备上报硬件重置事件转发给服务端。要确认设备可以与天猫精灵App通信,并且测试手机上行网络是通的,否则硬件重置事件无法上报。
问题:天猫精灵配网成功后,语音控制反馈无法控制或不支持的功能
需要排查以下几点:
在生活物联网平台上该产品的功能定义页面检查是否添加了正确的属性。
尝试使用生活物联网平台设备调试页面-在线调试功能进行指令下发,不使用语音控制。
问题:天猫精灵配网成功后,语音控制之后反馈控制成功但设备无反应
需要排查以下几点:
在Provision完成配置阶段,设备是否根据自己的UUID版本做了对应配置。
如有接设备端日志,查看配网绑定是否都成功。
检查设备与天猫精灵之间的距离,移除遮挡物。
通过生活物联网平台设备调试页面-在线调试功能进行二进制指令下发,检查设备是否可以收到下发的指令。
确认账号下是否绑定了多个同类型设备,并且无法受控的设备是否配置了对应品类的组播地址。品类组播地址请参见设备组播地址。
问题:天猫精灵下发控制指令后,设备也正常按照指令执行,但向天猫精灵查询设备状态出错
需要排查以下几点:
检查设备端是否上报了正确的设备状态给天猫精灵。
检查设备端在状态改变后是否用Vendor Model的Indication上报状态给天猫精灵,且天猫精灵回复了Confirmation消息给设备端。
问题:在生活物联网平台设备调试页面-在线调试功能下发指令无效
需要排查以下几点:
检查调试选择的天猫精灵是否为当前测试使用的天猫精灵。
检查调试选择的设备是否为当前正在使用的设备。
检查下发指令是否有格式错误。
问题:天猫精灵配网成功后,语音控制反馈设备不在线
主要排查设备是否遵循设备上电与重启规范。
检查设备上电后是否将设备属性值通过Indication上报给天猫精灵并收到Confirmation消息。
检查设备上电后是否将设备上电事件通过Indication上报给天猫精灵并收到Confirmation消息。
问题:无天猫精灵音箱环境下,设备发送数据有概率无法到达App
如果基于TG7100B或者TG_B_7101模组开发,请注意升级Mesh SDK到V1.2.6版本,请参见获取SDK。
问题:无天猫精灵音箱环境下,App无法控制设备
排查以下几点:
注意设备固件里是否打开了使能Proxy功能的宏,如天猫精灵Mesh SDK中的对应宏为CONFIG_BT_MESH_GATT_PROXY。
注意创建该产品时有没有选择低功耗。对于低功耗设备,设备会进入睡眠。
问题:OTA界面一直在设备连接中
需要参考蓝牙BLE OTA规范并排查以下几点:
检查设备的蓝牙MAC地址与设备证书中的Device Name是否保持一致,开发调试时更换设备证书后,注意把MAC地址也相应更换。
请确认设备是否低功耗设备,设备需要先发广播包,才能建立GATT连接,如果设备在睡眠,要确认是否有唤醒机制并能正确唤醒发出广播包。
OTA时手机App会与设备建立GATT连接,一般设备只允许建立一个GATT连接,需要排查是否设备已建立GATT连接且并未断开。
确认对模组做过频偏校正或者设置过正确的频偏参数,频偏过大可能影响部分手机建立GATT连接。
问题:OTA界面提示设备不允许OTA
需要参考蓝牙BLE OTA规范并排查以下几点:
检查是否在生活物联网平台推送的版本号比当前设备烧录的版本号大。
检查推送OTA的设备MAC地址是否与设备里实际烧录的MAC地址一致。
确认上传的bin文件是否正确,设备端会检查文件大小,如果超出flash OTA存储空间大小会拒绝升级。
问题:设备实际升级成功但是App提示失败
需要参考蓝牙BLE OTA规范并排查以下几点:
问题:传感器类产品需要支持GLP吗
需要区分该传感器是否要支持下行的设置指令。
如果不需要支持下行指令,传感器仅上报数据,可以不支持GLP,此时创建产品时不必选择“低功耗”而是选择“非低功耗”。
如果传感器需要支持下行的设置指令,需要根据产品交互、用户体验、功耗要求来综合评估是否支持GLP。可以按照GLP规范来实现,此时创建产品时选择“低功耗”;也可以通过按键唤醒设备,在一段时间内处于唤醒状态,然后此时下发设置指令,按键或者超时退出唤醒状态重新睡眠。