一、桥接设备的发现
桥接设备如何被其他Matter终端发现呢?一个Matter Node通过识别桥接器上的Aggregator端点的PartsList attributes属性和端点遍历整个端点树,以发现PartsList attributes中提到的所有桥接设备,同时读取这些桥接设备的设备类型和其他属性(公开的任何能被Matter系统识别的功能)。
在被发现的设备列表中,任何一个在设备类型属性中包含Bridged Node的端点都被视为桥接设备,或者说明这一组端点的其中一个出现在PartsList列表中(针对组合端点情况)。如果发现该桥接设备的Matter节点支持该桥接设备的设备类型,它可以将该桥接设备添加到自己的设备列表中,也可以进行相关配置。(比如开关设备找到了灯泡设备)
发现桥接设备的Matter节点应该根据从桥接器上获得的有用信息对桥接设备进行配置(可能需要用户输入),来决定将桥接设备和哪一个Matter设备绑定。(比如哪个开关控制哪个灯、或者用户在手机上控制哪个灯)
因为一个桥接器可能桥接了很多的桥接设备,所以发现设备应当读取每个桥接端点都具备的Bridged Device Basic Information cluster的NodeLabel attribute属性来获取精简后的信息,以使用户能够轻松识别各种桥接设备,并加速配置的过程。如果发现设备仅仅向用户提供一个没有任何注释的设备列表,比如20个灯、4个开关这样的信息,这将使用户感到困惑。这些精简的标签信息可以由网桥设备提供。
如果在桥接设备的Power Source Cluster中发现了电源相关信息,发现节点应该采用类似与和Matter本地节点电源交互的方式与其进行交互。这些信息可以实现通知用户有关桥接设备中电源的状态等功能。
二、桥接设备的配置
对于为发现的桥接设备进行配置,主要由两种基本方法:一种用于执行器,一种用于传感器/开关。
配置过程与对Matter设备的配置过程相似。这是因为即使是桥接设备,在设备类型和Matter设备相同的情况下,桥接设备具有和Matter设备相同的应用程序集群(clusters)。
2.1 桥接设备作为执行器
当桥接设备作为执行器时,需要一个对其发送命令的控制器,Matter生态系统中的控制器可以向桥接器上的一个或多个端点的相关Cluster发送命令(例如给桥接器上的on/off cluster 发送 on命令),桥接器完成协议间的转换后,将相关命令发送给具体的桥接设备。
举例如下:
现在有一组灯泡,里面既包含matter灯泡,也包含非matter协议的灯泡。
当控制器向这个组发送一个单一的on命令,即表示要打开这一组中的所有的灯,这条消息将被matter灯以及桥接器接收,桥接器进行相关的协议转换后送给相关的桥接设备。
2.2 从桥接设备接受状态/事件/命令
当桥接设备作为传感器或者开关时,桥接器将这些桥接设备更新的数据(例如Zigbee属性报告)、事件和/或命令进行接收并转换为matter数据结构中的attributes, events and/or commands呈现在相应桥接设备的端点上。
举例如下:
温度传感器通过非Matter接口向桥接器发送状态报告,桥接器接收到更新的数据后以此来更新相关桥接设备端点上Temperature Measurement cluster中的Measured Value attribute的属性值。
Matter生态系统中对该属性感兴趣的节点可以读取更新后的Measured Value attribute属性值,并可以订阅该属性。这与原Matter设备之间的订阅交互时一样的。
如果桥接设备作为开关使用,当用户按下开关按钮,开关桥接设备通过非matter接口向桥接器发送消息,桥接器根据收到的信息更新相关桥接设备端点上的Switch cluster中的InitialPress event事件。
matter生态系统中对该事件感兴趣的节点可以订阅该事件并进行设置,就像订阅matter设备的过程一样。
【参考目录】
- CSA-Matter协议官方文档
(注:任何相关问题,欢迎在文末技术交流QQ群中交流讨论。)