Matter Standard
Matter介绍
市场上对于IoT领域生态有很多,例如:苹果生态(Homekit)、谷歌生态(Weave)、亚马逊生态(Echo)、三星生态、小米生态。设备厂商针对某一个生态生产的设备仅支持这个生态(苹果生态),不能支持其他生态(谷歌生态、三星生态),形成了生态壁垒。
用户:
如果用户使用苹果手机,那么用户只能购买支持苹果生态的IoT设备。一旦用户不在使用苹果手机,而使用谷歌手机,那么支持苹果生态的IoT设备就成了一堆废品。现在用户想使用IoT设备,那么必须再购买支持谷歌生态的IoT设备,对于用户来说,这又是一笔不小的开销。
厂商:
如果厂商生产了支持苹果生态的IoT设备,那么它的目标用户是持有苹果手机的用户。对于同一款产品(例如:色温灯),厂商为了获取更多的用户,就必须开发支持各种生态的产品(例如:苹果生态色温灯、谷歌生态色温灯…)。对于厂商来说,产品还是一样的,只是软件层面的不同,不得不生产支持不同生态的同一款产品,生产成本又是一个的问题。
Matter:
如果厂商生产的IoT产品支持Matter标准,那么对于用户来说,不管你使用的是苹果手机,还是谷歌手机,你都可以将IoT产品添加到你当前的生态中。对于用户,购买的IoT产品适配各种生态,完全不用担心换手机会导致IoT产品无法使用的问题。对于厂商,不用再投入很大的成本去生产支持各种生态的IoT设备,仅需要生产支持Matter标准的IoT产品。
甚至,IoT产品添加到苹果生态后,你还可以将该产品分享给其他生态(谷歌生态、亚马逊生态、三星生态…)使用,完全打破了生态壁垒。
Matter是由CSA发布的一个应用层标准,它的传输是建立在支持IPv6的TCP和UDP协议上的,Matter不对传输层进行约定,Matter也不对网络进行约定,但是Matter约定了只能使用 Thread/Wi-Fi/Ethernet 三种连接协议,也就是说Matter可以让不同网络中的设备进行互联互通通信,这个主要是指Thread Board Router 可以实现 Wi-Fi 和 Thread 通信互转。不仅如此,Matter还允许接入其他网络设备,比如ZigBee设备,这主要通过一个 Matter bridge 设备来实现。
在Matter拓扑结构中,还有一个节点非常重要:Matter controller,Matter controller用来完成配网和远程控制设备,比如苹果的 HomePod mini & Home app 组合就是一个典型的Matter controller节点。
Thread协议由Thread Group制定,所以Matter over Thread产品必须通过Thread Group的认证。Wi-Fi则由Wi-Fi联盟进行规范,所以Matter over Wi-Fi产品必须通过Wi-Fi Alliance认证。
Matter over WiFi:指使用WiFi网络来传输Matter协议的信息。
Matter over Thread:指使用Thread网络来传输Matter协议的信息。
文档:
Matter官方文档(主要有3份):
- Matter 1.3 Device Library Specification:对设备层面的一些约束和规定
- Matter 1.3 Core Specification:核心规范
- Matter 1.3 Application Cluster Specification:对Matter组件Cluster进行了详细规定
2024年,Matter最新版本是V1.3,随着Matter的版本更新,文档也会随着更新。
关于Matter协议文档中 Conformance(一致性)
解释:
- M:Mandatory,强制性的
- O:Optional,可选的
- P:Provisional,临时的
- D:Deprecated,废弃的
- X:Disallowed,禁止的
来源于:Matter-1.4-Core-Specification-1.pdf 第7.3节
关于Matter协议文档中 Access(访问权限)
解释:
- R:仅读
- W:仅写
- R[W]:读和可选的写
- R*W:废弃的,使用R[W]
Privileges
- V:Read Access or Invoke Access requires View Privilege
- O:Read Access,Write Access,or Invoke Access requires Operate Privilege
- M:Read Access,Write Access,or Invoke Access requires Manager privilege
- A:Read Access,Write Access,or Invoke Access requires Administer privilege
Fabric
- F:Fabric-Scoped Quality
- S:Fabric-Sensitive Quality
Timed
- T:Write Access or Invoke Access with timed Interaction only
Matter 协议栈
Matter 规范定义了基本要求,以便通过互联网协议为智能家居设备提供可互操作的应用层解决方案。
Fabric:
一个Matter网络就是一个Fabric,也可以说一个生态就是一个Fabric。
Data Model(数据模型)
Node(节点)
节点(Node)是一个逻辑上独立的设备,有自己唯一的网络地址。每个Matter设备由一个或多个Node组成。通常是用户可以识别为整个设备的物理设备,例如一个有两盏灯的灯具(一盏可调光灯和一盏普通灯)。
节点是网络中具有唯一标识且可寻址的资源,用户可以将其视为功能完整的整体。Matter 中的网络通信始于节点并在节点中终止。
参考:Matter-1.4-Core-Specification-1.pdf 第 7.8 节
Endpoint(端点)
一个Node包含多个Endpoint,每个endpoint是一个逻辑上独立的功能模块。端点可以看作是提供逻辑分组在一起的虚拟设备。例如色温灯,具备两个Endpoint,其中Endpoint 1是可调光灯,EndPoint 2是开/关灯。
注意:Endpoint 0 预留给 Matter 的 utility cluster,而且每个 Matter 设备都必须强制包含 Endpoint 0。
Cluster(集群)
一个Endpoint由一个或多个cluster组成,cluster可以认为是一个基本功能集,它包含 attributess, commands和 events三个组件。
对于色温灯,其中Endpoint 1是可调光灯,它有两个cluster,分别是:On/Off cluster 和 Level Control cluster 。
Matter定义了两种类型的cluster:
- server:提供Attributes、Commands、Events,通常指 Matter 设备。
- client:对server发起交互(interaction)操作,通常指 Matter Controller。
attributes(属性)
属性表示节点所持的状态,例如:LevelControl Cluster 的CurrentLevel Attribute,可以用来表示灯光的亮度。属性可以读取或写入的内容,但要以Matter 协议文档定义为准。
对于色温灯的Endpoint 1,其中On/Off cluster 的 attributess 是 OnOff 。
对于色温灯的Endpoint 1,其中Level Control cluster 的 attributess 是 CurrentLevel 。
对于 FeatureMap Attribute,它是一个全局元素,任何一个cluster实例都必须支持这个Attribute。
Command(命令)
命令提供在集群上调用特定行为的能力,即可执行的操作。命令在 Matter 的 Data Model 中相当于远程过程调用(RPC)。命令可能会生成响应和结果,在 Matter 中,此类响应也定义为命令,方向相反。
对于色温灯的Endpoint 1,其中On/Off cluster 的 Commands 有:On、Off、Toggle
对于色温灯的Endpoint 1,其中Level Control cluster 的 Commands 有:MoveToLevel 。
Event(事件)
事件定义为过去发生的事情的记录,Event其实是一种特殊的attributes,它用来更新设备的状态。
Interaction Model(交互模型)
交互模型(IM)用于定义节点与其他节点的数据模型(Data Model)之间通信的通用语言。
通俗地讲,Interaction model(IM)就是用来规定交互命令集的,我们把发起交互的节点叫initiator (一般都是client设备),而相应的节点称为target (一般为server设备)。
Interaction(交互)由transaction(事务)组成,而transaction又由action(操作)组成,每个action包含1条或者多条信息。
Matter定义了如下interaction类型:
- Read
用来读取attributes或events的值
- Write
用来修改attribute的值
- Invoke
用来发送commands
- Subscribe
用来订阅target的数据报告,从而不用定时去查询相关数据,我们可以订阅attribute,也可以订阅event。因此,在订阅成功后,系统可能会根据定期数据更新生成相同的“报告数据操作”。
设备发现
设备发现可以通过以下三种方式:
Bluetooth 低功耗(BLE)
Wi-Fi 软AP
IP网络上的 DNS-SD
Thread 设备不会直接使用 DNS-SD,而是使用 Thread 边界路由器提供的代理方法。
用于设备发现的 DNS-SD 实例名称为
_matterc._udp
,主机名由 48 位 MAC 地址或 64 位 MAC 扩展地址构建,以十六进制字符串(例如A5F15790B0D15F32.local.
)表示。发现后,系统会在 AAAA 记录中返回 IPv6 地址,并在 DNS‑SD TXT 记录中返回键值对。键值对包含分辨标识符、供应商 ID 和产品 ID 等信息。
操作发现:指发现和识别已委托节点的过程。操作发现仅通过基于 IP 的 DNS-SD 方法进行。节点实例名称将由 64 位压缩 Fabric ID 和 64 位节点 ID 组成。然后,这些十六进制 ID 会通过连字符连接起来,如 2906C908D115D362-8FC7772401CD0696.local.
中所示。操作发现与 DNS-SD 设备发现共用相同的目标主机名称。
无论使用哪种方法,都会通告如下信息:
字段 | 长度 | 必须 |
---|---|---|
判别器 | 12 位 | 是 |
供应商ID | 16 位 | 否 |
产品ID | 16 位 | 否 |
扩展数据 | 变量 | 否 |
参考
Matter: Clusters, attributess, Commands
https://developers.home.google.com/matter/primer/device-data-model?hl=zh-cn