跳至主要內容

通用物模型

fastbee2024年9月27日大约 7 分钟

物模型的具体介绍

1.概述

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

2.功能说明

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

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

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

参数说明示例
int整型100
double小数型100.45
boolean布尔型。采用0(false)或1(true)来定义布尔值1表示是、0表示否
enum枚举型。定义枚举项的参数值和参数描述。[{key:1,value:1}]
string字符串你好!fastbee平台
array数组。需声明数组内的元素类型、数组元素个数和元素标识。需确保同一个数组元素类型相同。[1, 2, 3, 4, 5, 6]
Object对象型[{id:"Object",name:"对象",datatype:{type:"object",params:[{key1:value1}]}}]

4.操作步骤

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

4.1.物模型定义

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

4.2.物模型新增

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

5.配置物模型

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

属性

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

数据结构

    {
  "properties": [
    {
      "id": "co2",
      "name": "二氧化碳",
      "isChart": 1,
      "isMonitor": 1,
      "isHistory": 1,
      "isSharePerm": 0,
      "isReadonly": 1,
      "datatype": {
        "max": 6000,
        "min": 100,
        "step": 1,
        "type": "integer",
        "unit": "ppm"
      }
    },
    {
      "id": "temperature",
      "name": "空气温度",
      "isChart": 1,
      "isMonitor": 1,
      "isHistory": 1,
      "isSharePerm": 0,
      "isReadonly": 1,
      "datatype": {
        "max": 120,
        "min": -20,
        "step": 0.1,
        "type": "decimal",
        "unit": "℃"
      }
    }
  ]
}

功能

根据设备可供外部调用的指令或方法,定义设备功能。平台可主动调用设备功能。例如:设备运行档位、开关操作等。
数据结构:
    {
  "functions": [
    {
      "id": "status",
      "name": "上报状态",
      "isHistory": 0,
      "isSharePerm": 0,
      "isReadonly": 0,
      "datatype": {
        "type": "enum",
        "showWay": "button",
        "enumList": [
          {
            "text": "更新状态",
            "value": "update_status"
          }
        ]
      }
    },
    {
      "id": "irc",
      "name": "射频遥控",
      "isHistory": 1,
      "isSharePerm": 0,
      "isReadonly": 0,
      "datatype": {
        "type": "enum",
        "showWay": "button",
        "enumList": [
          {
            "text": "遥控学习",
            "value": "FFXX01"
          },
          {
            "text": "遥控清码",
            "value": "FFXX02"
          },
          {
            "text": "打开开关",
            "value": "FFXX03"
          },
          {
            "text": "关闭开关",
            "value": "FFXX04"
          },
          {
            "text": "暂停",
            "value": "FFXX05"
          },
          {
            "text": "锁定",
            "value": "FFXX06"
          }
        ]
      }
    },
    {
      "id": "report_monitor",
      "name": "上报数据",
      "isHistory": 0,
      "isSharePerm": 0,
      "isReadonly": 0,
      "datatype": {
        "max": 10,
        "min": 1,
        "step": 1,
        "type": "integer",
        "unit": "次数"
      }
    },
    {
      "id": "switch",
      "name": "设备开关",
      "isHistory": 1,
      "isSharePerm": 0,
      "isReadonly": 0,
      "datatype": {
        "type": "bool",
        "trueText": "打开",
        "falseText": "关闭"
      }
    },
    {
      "id": "gear",
      "name": "运行档位",
      "isHistory": 1,
      "isSharePerm": 0,
      "isReadonly": 0,
      "datatype": {
        "type": "enum",
        "showWay": "select",
        "enumList": [
          {
            "text": "低速档位",
            "value": "0"
          },
          {
            "text": "中速档位",
            "value": "1"
          },
          {
            "text": "中高速档位",
            "value": "2"
          },
          {
            "text": "高速档位",
            "value": "3"
          }
        ]
      }
    },
    {
      "id": "message",
      "name": "屏显消息",
      "isHistory": 1,
      "isSharePerm": 0,
      "isReadonly": 0,
      "datatype": {
        "type": "string",
        "maxLength": 1024
      }
    },
    {
      "id": "reset",
      "name": "设备重启",
      "isHistory": 1,
      "isSharePerm": 0,
      "isReadonly": 0,
      "datatype": {
        "type": "enum",
        "showWay": "button",
        "enumList": [
          {
            "text": "重启",
            "value": "restart"
          }
        ]
      }
    },
    {
      "id": "array_01_light_color",
      "name": "灯光色值1",
      "isHistory": 1,
      "isSharePerm": 0,
      "isReadonly": 0,
      "datatype": {
        "max": 100,
        "min": 0,
        "step": 1,
        "type": "integer",
      }
    }
  ]
}

事件

用于设备的额外属性,添加拓展字段。例如:环境温度过高、设备发生异常等。
数据结构:
    {
  "functions": [],
  "events": [
    {
      "id": "height_temperature",
      "name": "环境温度过高",
      "isHistory": 1,
      "isSharePerm": 0,
      "isReadonly": 0,
      "datatype": {
        "max": 100,
        "min": 0,
        "step": 0.1,
        "type": "decimal",
        "unit": "℃"
      }
    },
    {
      "id": "exception",
      "name": "设备发生异常",
      "isHistory": 1,
      "isSharePerm": 0,
      "isReadonly": 0,
      "datatype": {
        "type": "string",
        "maxLength": 1024
      }
    }
  ]
}

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

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