Telink Mesh简单安卓app分析

最近开始接触Mesh这个概念,看了蓝牙技术联盟关于Mesh所有文档,再接触TelinkMesh发现和说好的Mesh不一样啊!

技术联盟里的Mesh应该叫SIG-Mesh,相对TelinkMesh更加复杂。具有蓝牙技术联盟文档里所叙述的mesh所有性质,有看到貌似是基于蓝牙5.0。

这个是蓝牙技术联盟文档汇总https://blog.csdn.net/zhanghuaishu0/article/details/78770486

TelinkMesh则不一样,他的连接方式依旧基于BLE,而且他的连接过程在看app代码时候我发现仅仅比连接普通BLE设备多出一个登陆的过程,所以我觉得芯片的代码才是最核心的部分,能够实现mesh的节点互相转发消息的功能。

TelinMesh写入命令是登陆之后,具体实现方式和ble蓝牙通信没有任何区别。

TelinkMeshAPP存在两种扫描方式,一种是meshscan一种普通scan。

meshscan中会扫描所有名为telinkmesh_1(出厂的所有设备默认名称)的ble设备,连接

后发送加密后默认的用户名和密码(存在一个确认的过程),然后修改成你在app设置的用户名和密码。

注意:用户名和密码是mesh节点判断广播信息是否接收的依据,猜测可能由这两个参数组成了第三个参数LTK:longtermkey只有相同的名称的设备才组成一个mesh网络。

和普通的ble蓝牙不同的还有,mesh增加了一个meshAddress的概念,我觉得十分有趣,当接入mesh网络后,就会给你分配一个meshAddress,这个非常重要的是,和mac地址不一样,他是可以变得,是被分配的。

连接,登陆,我推荐这个https://blog.csdn.net/javasxl/article/details/83241611

写的比较完整,只是还没有讲到发送命令和后续加组。

加组就是,把mesh网络下的设备进行分组,比如同一个网络,不同场地,厨房,浴室,把设备加入不同的组就可以分开对每个组进行操作。具体实现方式是将meshaddress和group的meshaddress都会写入数据包中,发送至连接的设备。之后用group的meshadrress(虚拟)加入命令数据包就可以转发至之下所有设备。具体比如全部设备的meshAddress是0xFF,可以用此进行全开全关的设置。

猜测在mesh节点解析数据时候会吧0XFF的命令发往所有节点。

TelinkMeshAndroid的app代码十分复杂,咸鱼看的心累,有不懂的人欢迎提问。

猜你喜欢

转载自blog.csdn.net/weixin_42039823/article/details/88890832