有奖捉虫:办公协同&微信生态&物联网文档专题 HOT

操作场景

物模型是将物理实体设备进行数字化描述,构建其数字模型。在物联网智能视频服务控制台创建完产品后,您可以通过定义物模型来定义产品功能。

操作步骤

编辑物模型

1. 登录 物联网智能视频服务(消费版)控制台,单击左侧导航栏物模型,选择想要编辑物模型的产品,单击右侧操作栏下的查看物模型
2. 单击添加标准功能或者添加自定义功能进行对应物模型编辑。
功能类型 产品的功能包括标准功能和自定义功能这两种。
功能类型
功能描述
标准功能
提供一些 IPC 摄像头常用功能,可根据需求自行选择添加。分为必选属性和可选属性,必选属性不可删除,不可编辑;可选属性则可删除、部分可编辑。
自定义功能
如果标准功能无法满足您的需求,您可以自定义功能。可由开发者自由删除和编辑。
功能元素 功能元素包含:属性、事件、行为。
功能元素
功能描述
功能标识符
属性
用于描述设备的实时状态,支持读取和设置,如云存开关、云存类型、P2P 信息等。支持布尔型、整数型、字符型、浮点型、枚举型、时间型和结构体七种基本数据类型。
PropertiesId
事件
用于描述设备运行时的事件,包括告警、信息和故障等三种事件类型,可添加多个输出参数,如人形检测、移动侦测等,这些参数可以由布尔型、整数型、字符型、浮点型、枚举型和时间型六种基本数据类型组成。
EventId
行为
用于描述复杂的业务逻辑,可添加多个调用参数和返回参数,用于让设备执行某项特定的任务,例如打开/关闭镜头、切换预置位等。行为的输入参数和输出参数可支持布尔型、整数型、字符型、浮点型、枚举型和时间型六种基本数据类型。
ActionId
基本数据类型
类型
说明
布尔型
非真即假的二值型变量。例如开关功能。
整数型
可用于线性调节的整数变量。例如云存天数。
字符型
以字符串形式表达的功能点,例如 P2P 信息。
浮点型
精度为浮点型的功能点。例如,压力值的范围:0.0 - 24.0。
枚举型
自定义的有限集合值。例如,云存类型:全时、事件等。
时间型
string 类型的 UTC 时间戳(毫秒)。
结构体
struct 类型的 JSON 结构体,不支持结构体嵌套。

物模型代码生成

导出物模型描述文件 物模型描述文件是一个 JSON 格式的文件,描述产品定义的属性、事件及其他信息。
单击物模型页面左上角查看 JSON,确认内容后,单击“下载图标”,即可导出 JSON 文件。



生成物模型配置文件

1. 使用工程目录下的 tool/codegen.py 脚本生成代码,执行如下命令:
./codegen.py -c <json 文件>
2. 最终生成如下代码文件:
iv_usrex.c:用户物模型实现源文件,实现物模型初始化相关的代码,开发者不允许修改此文件。
iv_usrex_func.c:用户物模型功能实现函数,实现相应 ProWritable 和 action 的回调。
iv_usrex.h:用户物模型定义头文件,定义相关数据结构,开发者不允许修改此文件。
说明:
在编译时编入工程,根据用户功能需要,在设备初始化阶段注册不同物模型处理函数,SDK 在相应模型触发时回调,用户亦可调用物模型接口主动上传物模型数据。对于设备来说,支持 ProWritable 类模型数据接收和发送、支持 ProReadonly 和 Event 类模型数据发送、支持 Action 模型数据接收。

物模型格式参考

以下为 IPC 摄像头的物模型字段描述说明,包括各种数据类型和功能。示例代码如下:
{
"version": "1.0",
"profile": {
"ProductId": "R0GXGY0OUJ",
"CategoryId": "113"
},
"properties": [
{
"id": "dev_info",
"name": "设备信息",
"desc": "",
"mode": "rw",
"define": {
"type": "struct",
"specs": [
{
"id": "video_codec",
"name": "视频编码",
"dataType": {
"type": "string",
"min": "0",
"max": "32"
}
},
{
"id": "audio_codec",
"name": "音频编码",
"dataType": {
"type": "string",
"min": "0",
"max": "32"
}
}
]
},
"required": false
},
{
"id": "record_enable",
"name": "本地录像使能",
"desc": "",
"mode": "rw",
"define": {
"type": "bool",
"mapping": {
"0": "关",
"1": "开"
}
},
"required": false
},
{
"id": "_sys_xp2p_info",
"name": "xp2p信息",
"desc": "",
"mode": "rw",
"define": {
"type": "string",
"min": "0",
"max": "64"
},
"required": false
},
{
"id": "_sys_cs_days",
"name": "云存全时天数",
"desc": "",
"mode": "rw",
"define": {
"type": "int",
"min": "0",
"max": "100",
"start": "0",
"step": "1",
"unit": ""
},
"required": false
},
{
"id": "_sys_cs_status",
"name": "云存开关",
"desc": "",
"mode": "rw",
"define": {
"type": "bool",
"mapping": {
"0": "关",
"1": "开"
}
},
"required": false
},
{
"id": "_sys_cs_type",
"name": "云存类型",
"desc": "",
"mode": "rw",
"define": {
"type": "enum",
"mapping": {
"1": "全时",
"2": "事件"
}
},
"required": false
}
],
"events": [],
"actions": []
}

物模型协议

协议详情请参见 物模型协议 文档说明。