【活动报名】2023.03.03
【拿破仑】芯科Matter实战分享
https://jinshuju.net/f/Ob2hRC
本次分享活动特点:
【1】完全站在开发者的角度思考问题
【2】在官方指导的基础上,进一步简化开发流程
【3】所有例程、开发板等软硬件资料全部免费提供
【4】零基础可上手
【5】所有演示可100%轻松复现
Bridge(桥接器)存在的意义在于让Matter生态系统能够兼容非Matter的设备,从而达到用户可以同时使用原本就存在的智能设备和新的Matter设备。
下图从逻辑上简单表明了桥接设备实现的功能:非matter设备被视Matter生态系统中桥接设备上的一个节点。 Matter节点既可以和Matter设备通信,同时也可以和桥接器上的Bridged Device(桥接设备)节点进行通信(网桥设备需要实现两种协议之间的转换)。
接下来说明如何基于数据模型的概念认识桥接设备。
当桥接器成功入网后,其被Matter生态系统视为至少一个节点。在这个节点中必须包含以下信息。
当一个桥接器需要桥接多种技术/逻辑分组的情况下,可以在桥接器的数据结构中进行对应的分层与集合,来区分不同的桥接技术以及他们分别对应的设备,并且每一个分层都有自己的Aggregator 的端点来表示相关信息。
上面两幅图的桥接设备都使一样的,唯一的不同点在于分类方法。
桥接器需要包含桥接设备的拓扑或者逻辑分组信息。假设桥接器包含了50盏灯却不包含这些灯的逻辑分组或者命名信息,那么用户在控制器上只能看见一个由50盏灯组成的列表,而不知道这些灯在那间屋子里,或起到什么功能,这显然是不能接受的。
如果桥接器包含了拓扑或逻辑分组信息,那么这些信息会在Aggregator 端点的ActionList cluster的EndpointLists attribute中进行公开,而ActionList attribute在没有动作时为空。桥接设备可以有选择性地向Matter生态系统公开部分或者全部拓扑信息。
以下图片展示了包含拓扑或逻辑分组信息的桥接器。需要注意的是除此之外还有组合桥接设备的组合端点情况(EP24,25,26),称EP24为根端点,EP25、26为叶端点。并且可以看到EP 25,26被列在EP 24的PartsList中,这表明它们继承了EP24的设备类型和基本信息。
此时用户在控制器上所看到的界面就是明确有序的。
桥接器除了具有桥接功能外完全还可以具有原生Matter功能,其原生Matter功能也抽象为一个端点(endpoint)存在于网桥的数据结构之中,但不同的是对应的EP数据结构有所不同(例如没有Bridged Node设备类型等)。
而且Aggregator 端点的ActionList cluster的EndpointLists attribute属性中也不会包含原生Matter功能对应的端点。
下图黄色部分代表Matter原生功能。
桥接器上的每一个由桥接设备抽象来的端点都应该包含一个名为Bridged Device Basic Information 的cluster来体现这个桥接设备基本信息。
而桥接器本身应该包含一个Descriptor cluster ,其中的PartsList属性包含所有的由桥接设备抽象而来的端点,并且每个端点的设备类型属性后都要加上Bridged Node。(上面的图中都表现出了这一点。)
当一个桥接设备被抽象为多个端点时,此时端点的Bridged Device Basic Information 和桥接器的Descriptor cluster都应该只针对这一组端点的根端点。(如图43、EP24所示)
当桥接设备包含电源并且桥接器能够获得有关电源状态的信息时,桥接设备对应的端点上应该包含Power Source Configuration cluster 和 Power Source cluster来展示相关信息。(如图43、EP23所示)
还有两种特殊情况需要说明:
当桥接设备不包含电源或者电源信息对桥接器不可见的情况下,桥接设备的端点不包含Power Source Configuration cluster和Power Source cluster。
对于每个桥接设备,桥接器应将其相对应的Matter设备类型的所需的Cluster都展示出来。
这样就使得Matter设备可以识别桥接设备的设备类型并与它的Cluster进行交互,就像是与相应类型的原生Matter设备的交互那样。
(注:任何相关问题,欢迎在文末技术交流QQ群中交流讨论。)