乐橙云开发文档
快速入门
  • 文档综述
  • 云直播开发指南
  • 轻应用开发指南
  • 移动应用开发指南
  • 桌面应用开发指南
  • 消息推送
  • 云转存
  • 国标GB28181设备接入
  • HTTP接口
  • 服务支持
前往官网
快速入门
  • 文档综述
  • 云直播开发指南
  • 轻应用开发指南
  • 移动应用开发指南
  • 桌面应用开发指南
  • 消息推送
  • 云转存
  • 国标GB28181设备接入
  • HTTP接口
  • 服务支持
前往官网
快速入门
  • 文档综述

  • 云直播开发指南

  • 轻应用开发指南

  • 小程序对接指南

  • 移动应用开发指南

  • 桌面应用开发指南

  • 消息推送

  • 云转存

  • 国标GB28181设备接入

  • IOT物模型

    • IoT物模型概述
    • 获取产品物模型
    • 请求物模型中Service方法
    • 获取IoT物模型中指定的Property属性值
    • 设置IoT物模型中指定的Property属性值
    • IoT报警套装接入方案
  • HTTP接口

  • 服务支持

本页目录
一、什么是物模型
二、物模型功能定义
三、物模型相关协议
四、乐橙云IoT物模型模板

IoT物模型概述

IoT物模型概述

一、什么是物模型

物模型指将物理空间中的实体数字化,并在云端构建该实体的数据模型。在物联网平台中,定义物模型即定义产品功能。完成功能定义后,系统将自动生成该产品的物模型。物模型描述产品是什么,能做什么,可以对外提供哪些服务。

物模型使用JSON格式的文件描述。它是物理空间中的实体,如传感器、车载装置、楼宇、工厂等在云端的数字化表示,从属性、服务和事件三个维度,分别描述了该实体是什么,能做什么,可以对外提供哪些信息。定义了这三个维度,即完成了产品功能的定义。

二、物模型功能定义

属性(Property): 一般用于描述设备运行时的状态,如设备音量开关状态、环境监测设备所读取的当前环境温度等。属性可以通过读、写操作来实现对设备功能参数的查询和修改;

服务(Service): 设备可被外部调用的能力或方法,可设置输入参数和输出参数。相比于属性,服务可通过一条指令实现更复杂的业务逻辑,如执行设备固件升级类的某项特定的任务;

事件(Event): 设备运行时的事件。事件一般包含需要被外部感知和处理的通知信息,可包含多个输出参数。如,某项任务完成的信息,或者设备发生故障或告警时的温度等,事件可以被订阅和推送。

详情见“四、乐橙云物模型格式”。

三、物模型相关协议

序号接口功能描述
1getProductModel:获取产品物模型根据产品id,获取产品IoT物模型
2iotDeviceControl:请求物模型中Service方法通过物模型操作设备物模型中指定Service方法
3getIotDeviceProperties:获取IoT物模型中指定的Property属性值基于产品物模型,获取指定的Property属性值
4setIotDeviceProperties:设置IoT物模型中指定的Property属性值基于产品物模型,设置指定的Property属性值

四、乐橙云IoT物模型模板

{
    "schema": "1.0。物模型格式模板的版本, 当前为1.0",
    "profile": {
        "identifier": "产品型号唯一标识符(标识唯一的产品型号,不同于SN, SN是标识唯一设备)"
    },
    "//": "物模型属性",
    "properties": [
        {
            "identifier": "属性唯一标识符(产品下唯一)",
            "ref": "0。属性引用编号(产品下唯一,必须为数字值字符串,用在协议通信中)",
            "name": "属性名称,如:电量",
            "description": "本属性的注释说明,用于开发人员理解协议,与desc有区别, desc为bool或单字段的说明",
            "accessMode": "rw,属性读写类型:读(r)写(w),只读为r,读写为rw",
            "defaultData": "$value。可能是单个值,也可能是数组,访问前先判断, 原为defaultValue",
            "//": "基本数据类型有: int, text, bool, date, enum;复杂数据类型有:struct, array。以bool示例",
            "dataType": {
                "//": "查询或设置时已统一为数字0或1,0即false,1即true,不再使用bool值",
                "type": "bool"
            },
            "desc": "1开|0关",
            "dataType": {
                "type": "int(原生整型,不包含float类型,转为int类型处理)",
                "specs": {
                    "unit": "属性单位,属性补充描述类定义,所有类型都可以携带",
                    "//": "int类型特有, 取值范围, 最小值~最大值",
                    "range": [
                        0,
                        9
                    ],
                    "//": "步长",
                    "step": 1
                }
            },
            "//": "下述展示其他类型的dataType数据值",
            "//": "text示例",
            "dataType": {
                "//": "text(原生字符串 最长255)",
                "type": "text"
            },
            "//": "date示例",
            "dataType": {
                "//": "date(格式为YYYY-MM-DD hh:mm:ss的text类型)",
                "type": "date"
            },
            "//": "enum示例",
            "dataType": {
                "type": "enum(枚举类型,枚举项为int类型)",
                "specs": {
                    "//": "枚举值,enum 类型特有",
                    "list": [
                        {
                            "value": 0,
                            "desc": "value描述"
                        },
                        {
                            "value": 1,
                            "desc": "value描述"
                        }
                    ]
                }
            },
            "//": "struct示例",
            "dataType": {
                "type": "struct(结构对象类型,可包含以上基本类型)",
                "//": "specs为数组,因为包含多个基本类型",
                "specs": [
                    {
                        "identifier": "标识符",
                        "ref": "1001",
                        "name": "名称",
                        "desc": "描述",
                        "defaultData": "$value",
                        "dataType": {
                            "type": "int"
                        }
                    },
                    {
                        "identifier": "标识符",
                        "ref": "1002",
                        "name": "名称",
                        "desc": "描述",
                        "defaultData": "$value",
                        "dataType": {
                            "type": "text"
                        }
                    }
                ]
            },
            "//": "array示例",
            "dataType": {
                "type": "array(数组类型,可包含以上基本类型及struct类型)",
                "specs": {
                    "//": "数组大小,默认最大128(数组特有)。",
                    "size": 8,
                    "item": {
                        "//": "数组元素的类型",
                        "type": "int"
                    }
                }
            },
            "//": "array & struct示例",
            "dataType": {
                "type": "array(数组类型,可包含以上基本类型及struct类型)",
                "specs": {
                    "//": "数组大小,默认最大128(数组特有)",
                    "size": 4,
                    "item": {
                        "//": "数组元素的类型",
                        "type": "struct",
                        "specs": [
                            {
                                "ref": "1001",
                                "name": "名称",
                                "desc": "描述",
                                "defaultData": "$value",
                                "dataType": {
                                    "type": "int"
                                }
                            },
                            {
                                "ref": "1002",
                                "name": "名称",
                                "desc": "描述",
                                "defaultData": "$value",
                                "dataType": {
                                    "type": "text"
                                }
                            }
                        ]
                    }
                }
            },
            "//": "错误码定义,可选",
            "errorCodes": [
                {
                    "//": "错误码枚举定义",
                    "code": 40000,
                    "msg": "错误码描述"
                }
            ]
        }
    ],
    "//": "物模型服务",
    "services": [
        {
            "identifier": "服务唯一标识符(产品下唯一)",
            "ref": "30。服务引用编号(产品下唯一,必须为数字值字符串,用在协议通信中)",
            "name": "服务名称",
            "description": "服务的注释说明",
            "inputData": [
                {
                    "identifier": "入参唯一标识符",
                    "ref": "40。入参引用编号(产品下唯一,必须为数字值字符串,用在协议通信中)",
                    "name": "入参名称",
                    "desc": "入参描述",
                    "dataType": {
                        "//": "同属性中的定义"
                    }
                }
            ],
            "outputData": [
                {
                    "identifier": "出参唯一标识符",
                    "ref": "50。出参引用编号(产品下唯一,必须为数字值字符串,用在协议通信中)",
                    "name": "出参名称",
                    "desc": "出参描述",
                    "dataType": {
                        "//": "同属性中的定义"
                    }
                }
            ],
            "//": "错误码定义,可选",
            "errorCodes": [
                {
                    "//": "错误码枚举定义",
                    "code": 40000,
                    "msg": "错误码描述"
                }
            ],
            "method": "服务对应的方法名称(根据identifier生成)"
        }
    ],
    "//": "物模型事件",
    "events": [
        {
            "identifier": "事件唯一标识符(产品下唯一)",
            "//": "事件引用编号(产品下唯一,必须为数字值字符串,用在协议通信中)",
            "ref": "10",
            "name": "事件名称",
            "description": "事件的注释说明",
            "//": "事件类型(info、alert、error)",
            "type": "error",
            "outputData": [
                {
                    "identifier": "参数唯一标识符",
                    "//": "参数引用编号(产品下唯一,必须为数字值字符串,用在协议通信中)",
                    "ref": "20",
                    "name": "参数名称",
                    "desc": "参数描述",
                    "dataType": {
                        "//": "同属性中的定义"
                    }
                }
            ],
            "method": "事件对应的方法名称(根据identifier生成)"
        }
    ]
}
宇视NVR本地配置
获取产品物模型