整理智能家居功能资料时,读者可能看到一个端点列出了设备类型和版本,却没有额外的Parts。这并不自动表示它缺少功能。Google Home Developers的《The Device Data Model》在Descriptor Cluster一节,将集群、设备类型与组成端点分别列出。[1] 这些清单回答的本来就是不同问题。
Descriptor提供内省信息,用来描述一个端点有哪些Server Clusters、Client Clusters、Device Types及额外端点。原文将最后一类称为Parts。这里的自述不是给产品增加四组实体部件,而是将同一实例的功能内容和组成关系放进不同属性中,使模型能够表达得更具体。
ServerList列出端点中的Server Clusters,ClientList列出Client Clusters。它们关注集群在该端点中的角色,DeviceTypeList则列出端点支持的设备类型及各自的revision,并且至少包含一种类型。版本信息随设备类型一起出现,因此,整理资料时不能只留下一个没有对应类型的版本数字,再把它随意称为整机所有软件的共同版本。
设备类型与集群清单还存在联系。相邻文字说明,每个实现某种设备类型的端点,需要实现该类型的必需集群,也可以有可选集群,甚至类型之外的额外集群。类型给出功能要求的背景,集群清单则把实例中的内容进一步展开。只保存设备类型名称,会省掉这些实际列举的区别;只保存集群名字,又可能看不到它们所属的类型背景。
PartsList讨论的不是版本或集群角色,而是用于实现设备类型的端点。根设备类型定义在Endpoint 0,原文明确说,它的PartsList包含设备中除Endpoint 0自身以外的所有端点。根列表因此提供整棵端点树的入口,不能要求它把自身也再列一次,才算完整。
其他端点的PartsList通常为空,文中用温度传感器举例:该类型要求温度测量Server Cluster,没有另外的组成端点。但资料也保留复合情形。Video Player类型可以由TV、Video Player、Speaker以及不同Content App类型组成,各自在不同端点上。这说明空列表与有多个Parts都有具体模型背景,不能把其中一种提升成适用于所有端点的规则。
对智能家居说明书整理者,这套清单的用途是保留自述的对应关系:哪些集群属于这个端点,支持什么类型及其版本,又是否由额外端点组成。Google说控制设备可利用Descriptor中的实例信息组织模型及用户界面;本篇没有执行读取或验证某平台如何显示。页面标示2023年4月24日更新,首次发布日期未知,本文也不延伸到配网、密钥、门锁、电气控制或兼容认证。
信息来源
本文基于上述公开资料整理,未使用来源页面的图片、视频或嵌入媒体。