操作场景
物模型是将物理实体设备进行数字化描述,构建其数字模型。在物联网智能视频服务控制台创建完产品后,您可以通过定义物模型来定义产品功能。
操作步骤
编辑物模型
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": []}
物模型协议