1. 设备功能描述规范
1. 设备功能描述规范
物模型2.0-基础框架
设备具备的功能

抽象成功能组

设备具备的功能组

- 不同产品的功能可拆分为多个独立功能分组
- 不同产品也会有相同的功能
- 功能和功能分组在不同产品下有可复用性
功能-属性、操作、事件
设备的功能,按照设备行为和交互方式分三类描述方式:属性、操作、事件。
属性:用于表达设备的状态/参数类功能,可以被使用方查询、设置、订阅,如电源开关、工作模式、工作状态、当前温度、设定温度等;
操作:用于表达设备的复杂控制功能或独立的控制动作,如开始煮饭、开始清扫、滤网寿命重置等;
事件:用来描述设备发生的情况或通知,如洗衣完成、烹饪完成、门锁开锁。
模块
模块指相对独立的一组设备功能
一个模块可以由多个设备功能组成(即多个属性操作事件)
规范详情-模块
模块是独立的能力集合,可通过模块内的属性、操作、事件完成一类功能交互,而不依赖其他模块的能力。模块由多个属性、操作、事件组成。
可以通过多个模块描述的例子
- 风扇灯,可以由一个风扇模块和一个灯模块组成
- 多孔插排,可以由多个插座模块组成
- 净水器多个滤芯,可以通过多个滤芯模块描述
规范详情-属性
属性可以独立存在,独立的被应用侧使用,定义中描述了属性的可操作性;支持的数据类型:数值类型(枚举也通过数值类型表达),和非数值类型(bool、hex、string、array、object),数值类型的属性会描述单位,也会描述上报的规则。
规范详情-操作&事件
操作:用于表达设备的复杂控制功能,操作内需要描述输入参数和输出参数
事件:用来描述设备发生的情况或通知,事件内需要描述事件携带的信息
操作和事件的参数,有两种描述方式
1:参数是单纯的参数,没有独立存在的含义,这种情况需要描述参数的详细定义(描述方式与属性类似)
2:参数本身也是单独的属性,可以选择直接引用同模块内的属性作为参数
标准库
标准库包括标准品类模板、标准模块、标准属性、标准操作、标准事件,其中标准模块的定义由标准的属性操作事件组成,标准品类的定义由标准模块组成。
同一层级定义全局可复用
标准库定义
物模型标准库按品类进行定义
此处品类为新增字段智能产品品类category,并非已有的品类码(服务器跳转码),可以不与品类码一一对应
标准库中定义了什么?
品类下标准功能的语义和具体定义
产品实例引用标准库时的规则和限制
可选、必选“required”——此功能在实例化时是否必须存在
约束“constraint”——此功能在实例化时修改的限制
产品实例
- 一个产品的产品物模型实例由多个模块组成
- 一个模块由多个设备功能组成
- 产品实例中功能,是引用自标准库中定义的标准功能,然后在标准库规范的范围内做差异化功能描述。
- 举例说明:
空调有设定温度功能。
标准库会定义空调品类模板,空调模块,和设定温度属性。
一款产品的空调功能,在实例中引用标准的设定温度属性后,可以根据这款空调温度的范围精度做修改。
标准库如何在实例中使用
即如何在标准库的基础上,描述一个产品的功能;
举例后续可能的使用场景来描述:事业部开发者到平台配置物模型时,如何完成一个产品物模型实例的配置;
- 选择产品品类,自动带出标准品类模板中必选和可选模块
- 根据实际功能选择需要使用标准模块,可以删除可选模块,也可以添加其他标准模块
- 每个模块内,按产品实际功能确定有哪些属性操作事件,可以删除可选的属性操作事件
- 属性操作事件,按实际产品功能调整具体配置。比如修改属性数据类型和数值范围,删除操作事件的可选参数,调整操作事件参数的数据类型等。
- 标准库未覆盖的个性化功能,在自定义模块中描述
- 按此方式将产品所有功能完整的、准确的配置出来,即完成了产品物模型实例的配置
产品接入物模型2.0
一款产品要接入物模型2.0,需要两步:
- 功能定义(即配置产品实例)
品类标准库确定后,根据标准库完成产品实例定义 - 功能实现(按功能定义实现对应功能)
物模型2.0支持两类功能实现方式:非原生脚本转换、电控原生物模型
目前实现方式主要为 非原生脚本转换,即通过脚本内实现电控-物模型的翻译逻辑(通过物模型lua),在云端完成指令转换。