物模型

物模型是对物理世界中的实体对象的抽象与数字化。物模型是对连入EnOS Cloud的对象在云端的功能总述,包括设备的属性、测点和服务。

在EnOS中,定义物模型即定义产品的功能。物模型描述产品是什么,能做什么,可以对外提供哪些服务。在EnOS平台上,物模型的描述语言采用JSON格式,你可以根据物模型的语法组装上报设备的数据。

物模型组成要素

用户可根据产品的实际需求定义以下要素用以定义一个物模型。

模型要素 描述 例子
属性 描述设备的静态属性。用户可自定义自定义属性的名称以及标识符,名称相当于是一个描述,允许中文输入。 名称、型号、位置、设计参数、经度等
测点 描述设备运行时的状态。测点允许用户自定义测点的名称以及标识符,名称相当于是一个描述,允许中文输入。 温度、压力、电流、电压、各类状态等
服务 可被外部调用的能力或方法。可设置输入参数和输出参数。相比于属性,服务可通过一条指令实现更复杂的业务逻辑。 下发的指令、执行的任务等
事件 设备运行时上报的事件,一般包含需要被外部感知和处理的通知信息。可以包含多个输出参数。 设备状态变更、指令执行完毕等

数据类型

模型的属性、测点、服务、事件,都需要通过数据来描述,每一个数据都有一个类型。EnOS模型的要素支持以下数据类型:

  • int32:32位带符号整数
  • float:浮点型数据
  • double:双精度浮点型
  • enum:枚举型数据
  • boolean:布尔类型数据
  • string: 字符串类型,长度为1-1024个字节
  • timestamp:时间戳类型数据,格式为UTC时间,精确到毫秒
  • date: 日期类型数据
  • struct:构造体类型数据,不允许嵌套struct,成员字段只能是int32、float、double、enum、bool、string、date类型
  • array:数组类型数据。数组成员只能是int32、float、double、string类型。使用时需要声明数组内元素的数据类型。数组长度支持不定长,最长不超过128个元素。
  • file:文件类型数据

当数据类型不是enum或struct时,你可以选用系统内置的一些单位,如:千米,分米,百分比等。

模型关系

创建模型的时候,有拷贝继承两种模式。两种不同的创建模式主要体现在模型关系上。

拷贝

基于拷贝模式创建的模型。新建模型与被拷贝模型有完全相同的四要素,两个模型相互独立,模型变更互不影响。

继承

基于 继承 模式创建的模型。新建的模型被定义为 子模型,被继承的模型定义为 父模型。子模型主要有以下特性:

  • 子模型继承父模型的所有要素,继承自父模型的元素无法被修改。
  • 子模型可以再被继承,支持多层的继承关系。
  • 子模型可以创建独立的要素,但子模型中新增的要素不可与所有上级父模型中的元素重名。
  • 当父模型中的四要素发生变更,则子模型中继承自父模型的四要素同步变更,保持与父模型一致。

模型权限

模型分为 公共模型私有模型 两类。各自权限策略不同。

公共模型

公共模型是EnOS沉淀的领域标准模型,对所有OU开放。所有OU都具有读权限,任何OU都不具有写权限。

私有模型

在本OU下创建的模型都属于私有模型。私有模型不对其他OU开放。OU内所有用户都有读权限,被授权的用户拥有私有模型的写权限。

相关信息