意外之喜
之前通过涂鸦提供智能生活 App SDK的设备定时接口开发了一套定时业务,期间遇到一个双模设备在设备无外网情况下,无法成功添加定时的问题。文档中表明支持的设备为【Wi-Fi设备、蓝牙mesh子设备、zigbee子设备】,这些设备的特点是本身具备联网能力或者挂在网关下具备联网能力,所以需要设备联网才能成功设置定时。
但是,双模设备的特殊的地方在于它有蓝牙通道的,难道不能通过手机连接网络,然后手机与设备进行直连,走蓝牙通道将定时数据传递给设备吗?奈何涂鸦暂时不支持,这个问题也就一直搁置了。
或许是念念不忘,必有回响。最近在逛涂鸦官网的时候,发现他们新上了业务拓展SDK的模块,这个模块里有一个【设备定时】的内容。仔细看了下文档内容,发现与之前的【定时任务】功能上大致是相同,应该是对原来接口的一种封装。
不过机智的我敏锐的发现一个关键点:这个新的设备定时SDK,并没有强调哪些通信协议的设备可以添加定时。那是不是可以理解为,这个新SDK帮我们屏蔽了通信协议,我们可以不关心这些内容,更简单的使用定时。更进一步说,那是不是支持了蓝牙通道的定时设置。来吧,实践是检验真理的唯一标准,开干。
准备
在开始之前,得先梳理下整体的思路。要测试蓝牙通道的设置,大体步骤如下:
1.通过Wi-Fi通道将双模设备进行配网
2.拔掉双模设备连接的Wi-Fi的路由器的网线(形成设备无网的环境)
3.App与设备通过蓝牙方式进行连接
4.在App上设置定时
5.是否成功设置定时
6.查看设备是否正常执行定时
按照接入文档,简单的写了一个demo。手头上正好有一个【单路双模调光灯】的设备,这个设备正好具备Wi-Fi和蓝牙双通道的,就拿它尝试下能否完成蓝牙通道的定时。核心代码比较简单,大体如下:
开干
设备配完网之后,先不着急将路由器的网线拔掉,在设备有网情况,先配个定时,作为控制组。
控制组
条件:设备连接Wi-Fi且有网络,手机有网络,设备与手机未进行蓝牙连接(关闭手机蓝牙)
预期:设备定时设置成功,且正常执行定时
操作结果:
1.日志反馈成功添加了定时,速度很快
2.定时列表中增加了一条定时记录
3.到设定时间时,灯自动打开了
实验组
条件:断开设备连接Wi-Fi点外网,手机有网络,设备与手机进行蓝牙连接
预期:设备定时设置成功,且正常执行定时
操作结果:
1.日志反馈成功添加了定时,但较慢
2.定时列表中增加了一条定时记录
3.到设定时间时,灯自动关闭了
结论
完美!!!通过上述的实验结果,证明了新的设备定时SDK是具备通过蓝牙通道给设备添加定时的能力。不过细心的你可能已经发现,通过蓝牙通道给设备设置定时所消耗的时间比直接通过Wi-Fi定时慢一秒左右。猜测大概是蓝牙通道传输数据稍微慢导致的。不过现在蓝牙传输效率也很快的,也可能是内部针对蓝牙定时做一些逻辑处理导致的。暂且按下不论。
最后
虽然证明了新的设备定时SDK是具备通过蓝牙通道给设备添加定时的能力,但还有一些问题待深究。例如:
1.单纯的蓝牙设备能不能设置成功?
2.是不是支持所有的双模设备?
3.通过蓝牙通过设置定时为什么会消耗更多时间?
受限于手头上的设备,这些问题待有更多的设备的时候再一一检验。敬请期待!