Skip to content
清晨的一缕阳光
返回

物联网物模型详解:从概念到实战

前言

物联网的核心目标是将现实世界中的万”物”通过网络连接在一起,并将其数字化为云端的服务或资源。在这个过程中,首先需要对”物”有一个清晰、统一的定义——物模型应运而生。本文将从物模型的基本概念出发,结合行业标准(YD/T 4915-2024),详解物模型的设计方法和实战应用。

一、什么是物模型

物模型是物理空间中的实体(如传感器、车载装置、楼宇、工厂等)在云端的数字化表示,从属性、服务和事件三个维度,分别描述了该实体是什么能做什么可以对外提供哪些信息

简单来说,物模型就是对物理设备的一种标准化抽象。以智能灯为例,不同品牌的灯规格各异,但它们都有”开关状态”的属性,功能逻辑也相仿。将这些共同特征标准化,就形成了智能灯的物模型。

物的抽象模型

物的抽象模型是对设备的完整描述,包含三个部分:

组成部分说明
物的状态(Status)设备在线/离线、激活/未激活的状态
物的档案信息(Profile)设备身份详情的静态描述,包含设备身份标识和设备描述信息
物的功能定义(Functionality)属性、服务、事件三大功能要素

为什么要使用物模型

  1. 统一处理逻辑:基于共同的抽象特征,应用程序不再针对一个个产品设备,而是同一类设备采用相同的处理逻辑。即使是不同品牌的烟感产品,应用程序也可以对数值做相同的处理和判断
  2. 场景联动:物模型中设备的功能是明确定义的,可以方便地实现场景联动。例如,光线传感器基于光照强度,向智能电灯发送亮度控制命令
  3. 标准化开发:新增加的设备遵循相同的功能定义,降低开发和维护成本

二、物模型三大功能要素

物模型将产品功能分为三类:属性(Property)服务(Service)事件(Event)。定义了这三类功能,即完成了物模型的定义。

2.1 属性(Property)

属性用于描述设备运行时可持续存在的状态,是设备是什么的体现。

特性说明
含义设备运行时的状态信息
示例电源开关状态、空调目标温度、灯的亮度、环境温度
访问模式只读(r)或读写(rw)
操作方式应用系统可发起读取(GET)和设置(SET)请求

属性支持两种模式:

2.2 服务(Service)

服务是设备可被外部调用的能力或方法,是设备能做什么的体现。

特性说明
含义设备可供外部调用的指令或方法
示例设备复位、重启、修改密码、切换场景模式
参数支持输入参数和输出参数
调用方式同步调用或异步调用

服务与属性的区别:

2.3 事件(Event)

事件是设备运行时主动上报给云端的信息,是需要被外部感知和处理的体现。

特性说明
含义设备在某种情况下主动上报的信息
示例低电压告警、硬件故障、任务完成通知
参数可包含多个输出参数
特性可被订阅和推送

事件类型分为三种:

事件类型说明
信息(info)设备运行状态的通知信息
告警(alert)需要关注的预警信息
故障(fault)设备发生故障时的信息

三要素对比

特性属性服务事件
方向双向(读写)云端→设备设备→云端
发起方应用或设备应用设备
复杂度单一值可含输入输出参数可含多个输出参数
典型场景读取/设置状态执行复杂指令告警/通知

三、数据类型

物模型支持六种基本数据类型,用于定义属性、服务参数和事件参数:

数据类型标识说明示例
布尔型bool非真即假的二值型变量开关状态(0=关,1=开)
整数型int可线性调节的整数变量亮度 0-100
浮点型float精度为浮点型的数值电压 0.0-24.0V
字符串型string以字符串形式表达的功能点设备位置名称
枚举型enum自定义的有限集合值颜色(红/绿/蓝)
时间型timestampString 类型的 UTC 时间戳故障发生时间

对于数值型(int、float),还可以定义以下约束:

约束项说明示例
min最小值0
max最大值100
step步长1
unit单位%、V、℃
start起始值0

四、TSL 描述语言

ICA 联盟定义了统一的物的描述语言(TSL,Things Specification Language),采用 JSON 格式来描述物模型。TSL 是物模型的标准表达形式。

4.1 TSL 基本结构

{
  "version": "1.0",
  "profile": {
    "ProductId": "8D1GQLE4VA",
    "CategoryId": "141"
  },
  "properties": [],
  "events": [],
  "actions": []
}

4.2 物模型模块

物联网平台支持为产品定义多组功能(属性、服务和事件)。一组功能定义的集合,就是一个物模型模块。多个物模型模块彼此互不影响。

物模型模块功能解决了工业场景中复杂的设备建模,便于在同一产品下开发不同功能的设备。例如,电暖扇产品可以拆分为:

每个产品中默认模块和自定义模块总个数不能超过 200 个。

五、实战:智能电灯物模型

5.1 需求分析

以智能电灯为例,需要定义以下功能:

功能类型功能点数据类型模式
属性电源开关boolrw
属性亮度int(0-100%)rw
属性颜色enum(红/绿/蓝)rw
属性色温int(0-100%)rw
事件低电压告警float(0.0-24.0V)-
事件硬件故障string + int-
事件运行状态报告bool + string-

5.2 属性定义

电源开关(布尔型):

{
  "id": "power_switch",
  "name": "电灯开关",
  "desc": "控制电灯开灭",
  "required": true,
  "mode": "rw",
  "define": {
    "type": "bool",
    "mapping": {
      "0": "",
      "1": ""
    }
  }
}

亮度(整数型):

{
  "id": "brightness",
  "name": "亮度",
  "desc": "灯光亮度",
  "mode": "rw",
  "define": {
    "type": "int",
    "unit": "%",
    "step": "1",
    "min": "0",
    "max": "100",
    "start": "1"
  }
}

颜色(枚举型):

{
  "id": "color",
  "name": "颜色",
  "desc": "灯光颜色",
  "mode": "rw",
  "define": {
    "type": "enum",
    "mapping": {
      "0": "Red",
      "1": "Green",
      "2": "Blue"
    }
  }
}

5.3 事件定义

低电压告警

{
  "id": "low_voltage",
  "name": "LowVoltage",
  "desc": "Alert for device voltage is low",
  "type": "alert",
  "required": false,
  "params": [
    {
      "id": "voltage",
      "name": "Voltage",
      "desc": "Current voltage",
      "define": {
        "type": "float",
        "unit": "V",
        "step": "1",
        "min": "0.0",
        "max": "24.0",
        "start": "1"
      }
    }
  ]
}

硬件故障

{
  "id": "hardware_fault",
  "name": "Hardware_fault",
  "desc": "Report hardware fault",
  "type": "fault",
  "required": false,
  "params": [
    {
      "id": "name",
      "name": "Name",
      "desc": "Name like: memory, tf card, censors ...",
      "define": {
        "type": "string",
        "min": "0",
        "max": "64"
      }
    },
    {
      "id": "error_code",
      "name": "Error_Code",
      "desc": "Error code for fault",
      "define": {
        "type": "int",
        "unit": "",
        "step": "1",
        "min": "0",
        "max": "2000",
        "start": "1"
      }
    }
  ]
}

5.4 完整物模型

将所有属性、事件和动作合并,智能电灯物模型的完整 TSL 如下:

{
  "version": "1.0",
  "properties": [
    {
      "id": "power_switch",
      "name": "电灯开关",
      "desc": "控制电灯开灭",
      "required": true,
      "mode": "rw",
      "define": {
        "type": "bool",
        "mapping": { "0": "", "1": "" }
      }
    },
    {
      "id": "brightness",
      "name": "亮度",
      "desc": "灯光亮度",
      "mode": "rw",
      "define": {
        "type": "int",
        "unit": "%",
        "step": "1",
        "min": "0",
        "max": "100",
        "start": "1"
      }
    },
    {
      "id": "color",
      "name": "颜色",
      "desc": "灯光颜色",
      "mode": "rw",
      "define": {
        "type": "enum",
        "mapping": { "0": "Red", "1": "Green", "2": "Blue" }
      }
    },
    {
      "id": "color_temp",
      "name": "色温",
      "desc": "灯光冷暖",
      "mode": "rw",
      "define": {
        "type": "int",
        "min": "0",
        "max": "100",
        "start": "0",
        "step": "10",
        "unit": "%"
      }
    }
  ],
  "events": [
    {
      "id": "status_report",
      "name": "DeviceStatus",
      "desc": "Report the device status",
      "type": "info",
      "required": false,
      "params": [
        {
          "id": "status",
          "name": "running_state",
          "desc": "Report current device running state",
          "define": {
            "type": "bool",
            "mapping": { "0": "normal", "1": "fault" }
          }
        },
        {
          "id": "message",
          "name": "Message",
          "desc": "Some extra message",
          "define": {
            "type": "string",
            "min": "0",
            "max": "64"
          }
        }
      ]
    },
    {
      "id": "low_voltage",
      "name": "LowVoltage",
      "desc": "Alert for device voltage is low",
      "type": "alert",
      "required": false,
      "params": [
        {
          "id": "voltage",
          "name": "Voltage",
          "desc": "Current voltage",
          "define": {
            "type": "float",
            "unit": "V",
            "step": "1",
            "min": "0.0",
            "max": "24.0",
            "start": "1"
          }
        }
      ]
    },
    {
      "id": "hardware_fault",
      "name": "Hardware_fault",
      "desc": "Report hardware fault",
      "type": "fault",
      "required": false,
      "params": [
        {
          "id": "name",
          "name": "Name",
          "desc": "Name like: memory, tf card, censors ...",
          "define": {
            "type": "string",
            "min": "0",
            "max": "64"
          }
        },
        {
          "id": "error_code",
          "name": "Error_Code",
          "desc": "Error code for fault",
          "define": {
            "type": "int",
            "unit": "",
            "step": "1",
            "min": "0",
            "max": "2000",
            "start": "1"
          }
        }
      ]
    }
  ],
  "actions": [],
  "profile": {
    "ProductId": "8D1GQLE4VA",
    "CategoryId": "141"
  }
}

六、模型的创建方式

创建物模型时有两种模式:拷贝继承

6.1 拷贝模式

类似于编程语言中的值拷贝

6.2 继承模式

类似于面向对象编程中的继承概念:

以智能电灯为例,如果要增加”安装位置”属性,可以继承已有模型再扩展:

{
  "id": "name",
  "name": "灯位置名称",
  "desc": "灯位置名称:书房、客厅等",
  "mode": "rw",
  "required": false,
  "define": {
    "type": "string",
    "min": "0",
    "max": "64"
  }
}

七、行业标准:YD/T 4915-2024

《物联网物模型总体技术要求》(YD/T 4915-2024)是工业和信息化部发布的行业标准,对物模型的技术规范进行了统一要求,主要涵盖:

规范内容说明
物模型框架定义物的抽象模型和描述语言规范
功能要素统一属性、服务、事件的定义方式
数据类型规范物模型支持的数据类型和约束
标识符命名英文标识符的命名规范
TSL 格式JSON 格式的描述规范
模块化设计物模型模块的定义和管理方式

该标准的出台,为不同厂商、不同平台的物模型互操作提供了统一基础,推动了物联网设备的标准化开发。

八、物模型设计最佳实践

8.1 属性设计原则

  1. 只放可持续存在的状态:属性是设备的状态,不是瞬时动作
  2. 合理选择读写模式:传感器数据用只读,可控参数用读写
  3. 善用枚举类型:有限集合值使用 enum 而非 int
  4. 定义合理的取值范围:设置 min/max 约束,防止异常值

8.2 服务设计原则

  1. 复杂逻辑用服务:需要同时操作多个属性时使用服务
  2. 明确定义输入输出:服务的参数要清晰明确
  3. 区分同步和异步:耗时操作使用异步调用

8.3 事件设计原则

  1. 只放需要主动推送的信息:可通过查询获取的不用事件
  2. 合理选择事件类型:info/alert/fault 分级处理
  3. 包含足够的上下文参数:事件参数应足够定位问题

8.4 通用原则

  1. 标识符命名规范:使用有意义的英文标识符,遵循驼峰或下划线命名
  2. 必填项谨慎设置:只有核心功能设为 required
  3. 版本管理:物模型变更时注意版本号管理
  4. 模块化拆分:复杂设备按功能域拆分为多个模块

总结

物模型是物联网平台的基石,它从属性服务事件三个维度对物理设备进行标准化抽象,通过 TSL(JSON 格式) 进行描述。掌握物模型的设计方法,是物联网开发的核心能力:

随着 YD/T 4915-2024 等行业标准的推进,物模型将进一步规范化,推动物联网生态的互联互通。

参考资源


分享这篇文章到:

下一篇文章
索尼Ace乒乓球机器人:具身智能的成人礼,但不是下一个AlphaGo