智能硬件开发系列
博客创建时间:2023.03.19
博客更新时间:2023.03.24
以Android studio build=7.0.0,SDKVersion 31来分析讲解。如图文和网上其他资料不一致,可能是别的资料版本较低而已。
设备配网: 设备接入互联网并与用户的账户进行绑定,如果没有云端后台配网只完成了一半。 只有将设备归属到用户的账户下,用户才能控制、获取信息,此即绑定。
配网与绑定应该是一起谈论的。因为硬件设备没有操作交互界面且无强大的操作系统,配网的重点是如何让硬件难道接入网络的参数信息。
配网目的
1)配网是让设备接入互联网
2)脱离了服务端,缺少设备和用户的绑定关系,单纯的手机与蓝牙模块连接通信的过程并不是配网。
关键字
配网ssid、pwd:设备需要连接的路由器或热点的网络名称和密码
智能设备的配网流程基本是一致的,不管是蓝牙配网还是AP或其他配网方式,大体步骤一样。
个人总结蓝牙配网的操作步骤分为如下几步:
蓝牙的配对连接能成功对Android 6.0及以上有一个前提条件:要有蓝牙权限和位置定位开启。
蓝牙权限检查不通过,不能进行蓝牙的其他操作。检查不通过的原因应该弹出提示给用户
位置权限
在Android 高版本中,蓝牙扫描需要打开位置定位开关,打开后蓝牙才能进行扫描设备。 定位开关Android中需要跳转到系统页面进行打开
权限申请顺序
蓝牙权限授予后,才继续进行定位开关的打开,如果蓝牙权限未授权,后续操作无意义。
蓝牙使用中,蓝牙必须是开启状态,才能进行后续操作,否则其他操作无意义。检测蓝牙是否开启前需要进行蓝牙权限授权,通过方可进行后续。
蓝牙硬件可用判断
用户的手机各种各样,有可能使用中蓝牙模块已经损坏,在使用时可以进行判断并进行必要的提示。
当进行手机蓝牙配对连接时,当前面的流程已经走过后,可能需要先判断一下蓝牙是否已经连接成功且是与目标设备建立的连接,如果是则可以直接判定蓝牙配对连接成功,否则需要进行扫描重新配对连接。
当蓝牙已检查开启可用且获得权限后,可以进行蓝牙的扫描,并计划进行配对连接。蓝牙配对成功是执行后续智能硬件配网的前提。
蓝牙搜索
蓝牙搜索会在一定时间内进行结果反馈,搜索结束后会出现两种情况:
1)搜索到设备:设备可能有一个或多个被扫描到
2)未搜索到设备:此时搜索页面会提示未搜索到设备,用户可以排查后重新搜索。
当设备和APP建立连接后,接下来就可以进行设备接入网络的操作了。
1)App通过蓝牙连接向设备发送获取wifi列表指令
3)当设备得到WiFi扫描指令后,会自动进行Wifi扫描并将结果反馈给App,App获取Wifi列表
4)App获得wifi列表后选择一条可访问互联网WiFi热点,将热点的ssid和密码、配网token等信息传输给设备
5)设备在获取到可用准确的配网信息后,会先连接如路由器热点接入互联网
发送获取wifi列表指令
App发送指令给设备,获取设备的可用wifi列表信息。此流程中需要注意如下几点
1)过程中需要进行蓝牙连接状态的判断,此时蓝牙是连接状态设备才能收到指令
2)该指令设备可能由于某些原因未收到,需要采取机制进行判定,然后提示用户重新发送指令
设备连接互联网成功后,就可以进行将设备信息注册到服务平台,同时通知注册结果到APP。设备进行服务端注册是为了让设备和APP用户间形成绑定关系,方便绑定的用户控制设备,排除其他指令干扰
常见的配网失败原因可能有如下:
【注1】
蓝牙配对不成功
蓝牙配对过程中,可能会失败,配对失败后进行最多3次的重连,如重连3次后还没成功,则提示用户可能的失败原因,让用户排查后,重新发起 蓝牙扫描配对 流程,
1)设备或手机 蓝牙已关闭
2)设备蓝牙可能已与其他设备连接
3) 手机或设备的蓝牙硬件已损坏
【注2】
** 无法获取wifi列表**
手机软件未接收到蓝牙可用wifi列表,可能是wifi信号太弱、设备硬件故障。 此无可用Wifi列表返回的情景,通信中硬件应给软件反馈一个异常resultCode
【注3】
扫描不到wifi的特定原因
根据【注1】中的resultCode判定,如果是类似wifi信号太弱,硬件偶发性故障造成的 设备扫描可用wifi列表失败,此时是应该允许设备重新扫描wifi,并将信息再次传递给手机软件
【注4】
wifi连接不上原因
1)配网信息包括wifi的ssid、pwd、后台域名、uid及配网code等基础信息错误
2)wifi模块是否损坏
3)连接时,wifi热点是否已关闭
在设备与App进行蓝牙通信过程中,很多操作指令及操作回调都需要在蓝牙通信连接成功且可正常通信的前提下,否则可能出现指令操作一直无响应,用户傻等的情况。对于解决方案一般有如下解决方案
因为蓝牙BLE数据传输比较小,如果硬件不支持扩大,一般支持20byte大小的数据。如果指令数据数据在APP<—>BLE BT过程中数据超过20byte,则发送前需要进行数据的切割分包。
在蓝牙数据传输过程中,如突然断开链接等特殊情况,可能会有蓝牙数据的丢包,所以蓝牙数据分包时应该有一定的规则和校验机制 。如:
1byte | 1byte | 1byte | 1byte | 1 - 15byte | 1 byte |
---|---|---|---|---|---|
0xC4 | Total packag | Current package num | Total data length | app_code | check |
优点:稳定、快速,成功率高,成功率接近100%
缺点:流程相对较长,耗时
主要流程:
优点: 配网方便新颖,流程简单
缺点: 需要摄像头,加大成本
二维码配网的方式,是将硬件获取网络ssid、pwd等信息的方式由扫二维码获取得到。
无法复制加载中的内容
使用声波通信来实现wifi配网其实很简单,其核心就是把wifi热点的名字和密码通过声波传输给智能硬件,然后智能硬件通过wifi热点的名字和密码连接wifi热点从而完成wifi配网
流程:
优点:
优点:
5. 速度快、操作简单
缺点:
6. 成功率低,主要不同厂商WiFi兼容性很差,比如有的路由器能够发广播包、有的WiFi Soc芯片不能抓到广播包,适合定制系统的toB产品,不适合toC产品
智能硬件配网不管是蓝牙、AP还是其他方式,配网的核心目的和手法是不变的,都是将可用网络的ssid 和 密码告诉智能硬件,使固件能在服务端进行注册实现固件和用户之间的一一绑定关系
相关链接:
扩展链接:
博客书写不易,您的点赞收藏是我前进的动力,千万别忘记点赞、 收藏 ^ _ ^ !