一、编辑物模型
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": []}
四、物模型协议
协议详情请参见 物模型协议 文档说明。