Skip to content

通用物模型

物模型的具体介绍

1. 概述

物模型是产品数字化的描述,定义了产品的功能,物模型将不同品牌不同品类的产品功能抽象归纳,形成“标准物模型”,便于各方用统一的语言描述、控制、理解产品功能。 物模型由若干条“参数”组成,参数按描述的功能类型不同,又分为属性、功能和事件。

2.功能说明

物模型是物理空间中的实体(如传感器设备、消防装置、园区、工厂等)在云端的数字化表示,属性、功能、事件三个维度,分别描述了该实体是什么、能做什么、可以对外提供哪些信息、可以自定义补充哪些信息。定义了物模型的这三个维度,即完成了产品功能的定义。

功能类型描述
属性(Property)用于描述设备运行时具体信息和状态。
例如,环境监测设备所读取的当前环境温度、智能灯开关状态、电风扇风力等级等。
属性可分为读写和只读两种类型。读写类型支持读取和设置属性值,只读类型仅支持读取属性值。
服务(Service)指设备可供外部调用的指令或方法。服务调用中可设置输入和输出参数。输入参数是服务执行时的参数,输出参数是服务执行后的结果。
相比于属性,服务可通过一条指令实现更复杂的业务逻辑,例如执行某项特定的任务。
服务分为异步和同步两种调用方式。
事件(Event)设备运行时,主动上报给云端的信息,一般包含需要被外部感知和处理的信息、告警和故障。事件中可包含多个输出参数。
例如,某项任务完成后的通知信息;设备发生故障时的温度、时间信息;设备告警时的运行状态等。
事件可以被订阅和推送。

3. 物模型支持的数据类型

物模型参数是物模型的具体实现,是物模型在具体设备上的应用。物模型参数由若干条“参数”组成,参数按描述的功能类型不同,又分为属性、功能和事件。

类型说明示例
integer整数类型-100, 0, 100
decimal小数类型-100.0, 0.0, 100.0
bool布尔类型。采用0(false)或1(true)来定义布尔值1表示是、0表示否
string字符串类型"hello", "JieIOT"
enum枚举类型[{"key": "red", "value": "红色"}, {"key": "green", "value": "绿色"}, {"key": "blue", "value": "蓝色"}]
array数组类型[1, 2, 3], ["hello", "JieIOT"]
object对象类型[{"id":"object","name":"对象","datatype":{"type":"object","params":[{"key1":"value1"}]}}]

4. 操作步骤

1.登陆JieIOT物联网平台。
2.左侧导航栏,选择设备管理>产品管理,进入产品详情页>产品模型。
3.点击 "新增" 或 "导入通用物模型" 按钮,根据设备实际情况,合理设计物模型。

4.1 物模型定义

在接入一个设备时,首先根据设备以及设备接入文档(报文说明), 将设备物模型的属性、功能以及事件设计好。
属性用于定义一些指标数据,如:电压,温度等。 属性都应该是简单的数据类型。
功能用于定义设备具有的一些可执行动作。
事件用于定义设备在特定条件时,发生的动作。

4.2 物模型新增
配置项说明
模型名称必填,物模型名称
模型标识必填,后端识别的标识符
模型排序必填,物模型展示顺序
模型特性勾选,属性:图表展示,实时监测,是否只读数据,历史存储,分享权限(注意:图表展示、实时监测仅支持整数和小数)。
属性类型必选,设备变量,云端录入型变量、云端运算型变量
数据类型单选下拉框,整数、小数、布尔、枚举、字符串、数组、对象
取值范围仅整数和小数显示,取值区间,最小值和最大值
单位仅整数和小数显示,如:元,℃
步长仅整数和小数显示,取值间隔,步长是指设备上报或下发数值时,递增或递减的间隔。
小数位数仅小数显示,如:1
布尔值布尔类型显示,0、1对应文本(打开或关闭)
枚举值枚举类型显示,枚举值
展示方式仅枚举类型显示,单选下拉框
枚举项[{"text:"1",value:"1"},{"text":"2",value:"2"}]
最大长度仅字符串类型显示,字符串的最大长度
数组类型仅数组类型显示,单选,整数、小数、字符串、对象
元素个数仅数组类型显示,数组元素个数
元素标识仅数组类型显示,每个元素的序号标识,可根据具体情况配置,比如:子设备 1、3、5
对象参数仅 数组--对象 类型显示,在数组中添加具体的对象参数

5. 配置物模型

配置设备模型分为: 属性properties,功能functions,事件events。 设备模型使用场景:

  1. 前端通过模型定义动态展示设备运行状态或者设备操作界面
  2. 服务端可通过统一的API获取设备模型并进行相关操作,如:在发送设备消息时进行参数校验, 在收到设备消息进行类型转换处理。 数据结构:
json
{
    "properties":[...属性],
    "functions":[...功能],
    "events":[...事件],
    "tags":[...标签]
}
属性

用于定义设备属性,描述设备运行时的具体信息和状态。 例如: 设备温度,co2等。 平台可主动下发指令获取设备属性,设备也可以通过消息上报属性。

数据结构
json
{
  "properties": [
    {
      "key": "co2",
      "name": "二氧化碳",
      "order":4,
      "desc":"",
      "extFlag":{
        "isChart": 1,
        "isMonitor": 1,
        "isHistory": 1,
        "isSharePerm": 0,
        "isReadonly": 1,
      },
      "valueType": {
        "type": "integer",
        "max": 6000,
        "min": 100,
        "step": 1,
        "unit": "ppm"
      }
    },
    {
        "key":"temperature", // 属性标识
        "name":"温度",        // 属性名称
        "order":1,           // 排序
        "desc":"温度描述",    // 描述
        "extFlag":{          // 附加标志
            "isChart":1,      // 是否图表展示(0-否,1-是)
            "isMonitor":1,    // 是否实时监测(0-否,1-是)
            "isReadonly":1,   // 是否只读数据(0-否,1-是)
            "isHistory":1,    // 是否历史存储 (0-否,1-是)
            "isSharePerm":0   // 是否设备分享权限(0-否,1-是)
        },
        "valueType":{
            "type":"decimal", // 类型:bool、integer、decimal、string、enum、object 
            "max":100,        // 最大值
            "min":-50,        // 最小值
            "decimals":1,     // 小数位数
            "unit":"℃",       // 单位
            "step":0.1,        // 步长
            "fromType":"device", //  属性来源类型:device设备变量,cloud_inpu云端录入型变量,cloud_calculate云端运算型变量 
            "formula":"",      //  公式 "temperature * 12 + 3"
            "defalutValue":""  // 云端录入型变量默认值
        }
    },
  ]
}
功能

用于定义设备功能,描述设备可执行的动作。 例如: 设备开关,风扇风力等。 平台可主动下发指令获取设备功能,设备也可以通过消息上报功能。

数据结构
json
{
  "functions": [
     {
            "key":"function_key",   // 功能标识
            "name":"功能名称",      // 功能名称
            "order":1,             // 排序
            "inputs":[            // 输入参数列表
                {
                    "key":"in_param_1",
                    "name":"输入参数1",
                    "order":6,
                    "desc":"输入参数1描述",
                    "extFlag":{
                        "isChart":0,
                        "isMonitor":0,
                        "isReadonly":0,
                        "isHistory":0,
                        "isSharePerm":0
                    },
                    "valueType":{
                        "type":"integer",
                        "max":100,
                        "min":-50,
                        "decimals":1,
                        "unit":"℃",
                        "step":0.1
                    }
                }
            ],
            "outputs":[            // 输出参数列表
                {
                    "key":"out_param_1",
                    "name":"输出参数1",
                    "order":7,
                    "desc":"输出参数1描述",
                    "extFlag":{
                        "isChart":0,
                        "isMonitor":0,
                        "isReadonly":0,
                        "isHistory":0,
                        "isSharePerm":0
                    },
                    "valueType":{
                        "type":"integer",
                        "max":100,
                        "min":-50,
                        "decimals":1,
                        "unit":"℃",
                        "step":0.1
                    }
                }
            ],
            "desc":""
        }
  ]
}
事件

用于定义设备事件,描述设备在特定条件时,发生的动作。
例如: 环境温度过高、设备发生异常等。

数据结构
json
{
  "events": [
    {
            "key":"low_power",       // 事件标识
            "name":"低电量",          // 事件名称
            "order":1,               // 排序
            "inputs":[              // 输入参数列表
                {
                    "key":"power",
                    "name":"电量",
                    "order":8,
                    "desc":"电量描述",
                    "extFlag":{
                        "isChart":0,
                        "isMonitor":0,
                        "isReadonly":0,
                        "isHistory":0,
                        "isSharePerm":0
                    },
                    "valueType":{
                        "type":"integer",
                        "max":100,
                        "min":0,
                        "decimals":0,
                        "unit":"%",
                        "step":1
                    }
                }
            ],
            "desc":""
        }
  ]
}

6. 产品与设备物模型关系

产品有物模型配置。一个产品可以添加多个设备。设备会继承产品下所有的物模型配置。