前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >AIOT平台系列之产品物模型

AIOT平台系列之产品物模型

作者头像
编程识堂
发布2023-05-24 14:40:56
5320
发布2023-05-24 14:40:56
举报
文章被收录于专栏:编程识堂编程识堂

什么是物模型

物模型是指将物理设备的属性、服务、事件等信息进行抽象和建模,形成标准化的数据模型,以便于设备之间的互联互通和数据交换。在物联网中,物模型是设备接入平台和应用平台之间的重要桥梁,也是实现设备智能化的基础;

为什么需要物模型

  1. 海量的物联网数据、设备,多样的业务场景,难以理解,互通困难;
  2. 产业链内部自成体系,模组、芯片、平台、方案商角色多样,跨角色协作时,数据标准各异,协作困难;
  3. 在万物互联的时代,需要对接不同厂商设备,协议需要重复开发,难以规模化;
  4. 海量设备数据解析困难,没有结构化,难以挖掘数据价值;

物模型能解决哪些问题

目前物联网行业普遍存在着设备孤岛、软硬开发强耦合的问题,需要构建模型统一描述语言、面向物理实体的统一建模,物模型作为物的抽象层屏蔽了底层终端差异,标准化了设备的能力表达和交互方式,极大降低了物联网应用开发和快速复制的成本。

基于共同的抽象特征,物模型可以让应用程序不再针对一个个的产品设备,而是同一类设备采用相同的处理逻辑。

物模型带来什么价值

  • 低门槛接入:提供设备建模和交互协议基础能力。这是最基础的价值,所有设备上云都需要建模和交互协议。
  • 标准化:物模型作为物联网的抽象层,类似操作系统屏蔽硬件、JVM屏蔽OS的差异性一样,通过标准化设备的能力表达和交互方式,解决了物联网严重碎片化情况下协议差异、软硬开发耦合、全链路验证流程长、设备孤岛、数据孤岛等问题。
  • 生态化:软、硬件一旦基于物模型标准化开发和交互,围绕物联网的多角色,在设备开发、生产、运维、售卖、集成、运行等环节相互之间能够解耦,提升了设备的流通性,促进生态化。

如何定义物模型

功能类型

功能描述

属性(Property)

用于描述设备运行时具体信息和状态。比如夜灯开关状态,IPC摄像头ROI 允许的区域数量,电风扇的风力等级等等。属性可分为可读、可写、可上报类型;可读类型:仅支持读取属性值,应用端的代码中使用属性查询接口获取属性的值;可写类型:可通过物联网平台或者app为属性动态设置值,下发给设备;可上报类型:即设备可以将属性的值上报到云端;需要在产品的物模型页面中添加属性,包括属性的标识符、数据类型、读写权限等信息。添加完成后,你可以在设备端的代码中使用属性上报接口将属性的值上报到云端,也可以在应用端的代码中使用属性查询接口获取属性的值。注:属性三种类型可以随意搭配,比如夜灯的开关状态可为可读、可写;ipc摄像头ROI属性可为可读、可上报等等;

服务(Service)

也称为方法,指设备可供外部调用的指令或方法;例如开关、调节亮度、播放音乐、ipc摄像头获取云端AI算法集等;服务调用中可设置输入和输出参数。输入参数是服务执行时的参数,输出参数是服务执行后的结果,服务通常是可读写的,需要在产品的物模型页面中添加服务,包括服务的标识符、输入参数、输出参数等信息。添加完成后,设备可以接收来自云端的服务调用请求,并返回服务执行结果;也可以通过调用云端服务,获取配置结果集。

事件(Event)

设备运行时,主动上报给云端的信息。例如IPC检测到火焰,上报火焰预警、检测到人经过,触发人行事件、按下灯按钮、故障告警等等。需要在产品的物模型页面中添加事件,包括事件的标识符、数据类型等信息。添加完成后,你可以在设备端的代码中使用事件上报接口将事件的发生上报到云端,也可以在云端的代码中使用事件订阅接口订阅设备的事件。

功能组(Module)

功能组是指一组具有相似功能的属性、服务或事件的集合;一组功能定义的集合,就是一个功能组。多个功能组,彼此互不影响。产品的物模型页面中创建功能组,将相似的属性、服务或事件归为同一组。这样可以方便你在设备端的代码中对这些属性、服务或事件进行统一处理。物模型功能组,解决了工业场景中复杂的设备建模,便于在同一产品下,开发不同功能的设备。例如,电暖扇产品的功能属性有电源开关、档位(高、中、低)和室内温度,您可以在一个模块添加前2个属性,在另一个模块添加3个属性,然后分别在不同设备端,针对不同物模型模块功能进行开发。此时,该产品下不同设备就可以实现不同功能。

自研时序图

自研流程图

总结:通过上图,我们可以得知,系统先创建基础的功能组、基础属性、基础事件、基础服务;当需要对单个产品设置单独的物模型时,可以使用基础物模型为模板复制成新的模型,并单独设置私有属性,这样各个产品物模型相互独立,互不影响。

案例

物模型数据类型

数据类型

说明

示例

int

整型。

10

float

单精度浮点型。

1.1

double

双精度浮点型。

1.23

string

字符串,对应的数据长度不能超过10240字节。

"startEventRecord"

date

时间戳。格式为String类型的UTC时间戳,单位:毫秒。

"1635839462000"

bool

布尔型。采用0(false)或1(true)来定义布尔值,且0和1为int类型。

0表示关、1表示开。

enum

枚举型。定义枚举项的参数值和参数描述,参数值必须为整数。

整数0表示红色,整数1表示蓝色,整数2表示绿色。

object

JSON对象。定义一个JSON结构体,结构体内元素类型支持int、float、double、text、date、bool和enum,不支持结构体嵌套。

{ "name":"Tom", "age":10 }

array

数组。需声明数组内的元素类型、数组元素个数。元素类型支持int、float、double、text或object,需确保同一个数组元素类型相同。元素个数限制为1~512个。

[1, 2, 3, 4, 5, 6]

属性

基础属性

IPC产品有个基础属性录影事件,也就是设备能侦测什么类型的事件,比如移动事件,人行事件,这个属于设备能力集,每个IPC设备都拥有该属性;

代码语言:javascript
复制
{
  "id": "110170944444446",
  "code": "cameraevent",//属性唯一标识符 code
  "tenantId": "-1",
  "serviceModuleId": null,
  "parentId": null,
  "version": null,
  "name": "cameraEvent",//属性名称
  "tags": null,
  "apiLevel": null,
  "developStatus": 0,
  "reqParamType": 0,//请求参数格式:0 array ,1 object
  "returnType": 0,//返回参数格式:0 array ,1 object
  "propertyStatus": null,
  "rwStatus": "RWU",//该属性可读 可写 可上报
  "paramType": 3,//参数类型,0:int,1:float,2:bool,3:enum,4:string 5object 6 array
  "minValue": "0",
  "maxValue": "0",
  "allowedValues": "[{\"description\":\"Motion\",\"value\":\"1\"},{\"description\":\"Human\",\"value\":\"2\"}]",//允许值列表
  "description": "录影事件",//属性描述
  "dpId": 160,
  "usedFlag": 1,
  "propertyId": null,
  "status": null,
  "useStatus": 2,
  "step": null,
  "paramValueType": 1,
  "defaultValue": "1",
  "jsonAllowedValue": "",
  "unitId": "1",
  "unit": "-",
  "reportType": 0,
  "key": null,
  "propertyParamType": null,
  "defaultName": null,
  "baseFlag": true
}

IPC产品有个基础属性 ROI区域属于几边形,比如四边形、六边形,每个IPC设备都拥有该属性;

代码语言:javascript
复制
{
  "id": "1372451189346271233",
  "code": "RoiPoint",//属性唯一标识符 code
  "tenantId": "-1",
  "serviceModuleId": null,
  "parentId": null,
  "version": null,
  "name": "RoiPoint",//属性名称
  "tags": null,
  "reqParamType": 1,//请求参数格式:0 array ,1 object
  "returnType": 1,//返回参数格式:0 array ,1 object
  "propertyStatus": 0,//属性状态,0:可选,1:必选
  "rwStatus": "RU",,//该属性可读  可上报
  "paramType": 0,//参数类型,0:int,1:float,2:bool,3:enum,4:string 5object 6 array
  "minValue": "4",//最小值
  "maxValue": "8",//最大值
  "allowedValues": "[]",
  "description": "几边形,值只能是偶数",
  "dpId": 235,
  "usedFlag": 1,
  "propertyId": null,
  "status": null,
  "useStatus": 0,//使用状态 0 变更中 1待审核 2审核通过'
  "step": "2",//步长
  "paramValueType": null,//参数值类型 1:int 2:string
  "defaultValue": "4",//默认值
  "jsonAllowedValue": "",
  "unitId": "6",
  "unit": "watt",//单位
  "reportType": 0,//上报类型 0:非记录型上报, 1:记录型上报
  "key": null,
  "propertyParamType": null,
  "defaultName": null,
  "baseFlag": true
}

产品私有属性

IPC子产品M1配置录影事件私有属性为Motion - roi

代码语言:javascript
复制
{
  "id": "1385434448196136962",
  "parentId": null,
  "tenantId": "2",
  "serviceModuleId": null,
  "version": null,
  "name": "cameraEvent",
  "code": "cameraevent",
  "tags": null,
  "apiLevel": null,
  "developStatus": 1,
  "reqParamType": 0,
  "returnType": 0,
  "propertyStatus": 0,
  "rwStatus": "RWU",
  "paramType": 3,//参数类型,0:int,1:float,2:bool,3:enum,4:string 5object 6 array
  "minValue": "",
  "maxValue": "",
  "allowedValues": "[{\"defaultDescription\":\"Human detected\",\"defaultName\":\"Motion\",\"description\":\"Motion\",\"descriptionKey\":\"cameraevent_description_182_352\",\"id\":1386952828074803202,\"name\":\"Motion\",\"nameKey\":\"cameraevent_name_182_352\",\"value\":\"roi\"}]",
  "description": "录影事件",
  "propertyParentId": null,
  "defaultName": "cameraEvent",
  "baseFlag": false,
  "step": null,
  "paramValueType": 2,//参数值类型 1:int 2:string
  "defaultValue": "roi",
  "jsonAllowedValue": null,
  "unitId": "1",
  "unit": null,
  "dpId": 160,
  "whetherCheck": true,
  "key": null
}

IPC子产品M1配置ROI区域私有属性为六边形

代码语言:javascript
复制
{
  "id": "1385434448057724929",
  "parentId": null,
  "tenantId": "2",
  "serviceModuleId": null,
  "version": null,
  "name": "RoiPoint",
  "code": "RoiPoint",
  "tags": null,
  "apiLevel": null,
  "developStatus": 1,
  "reqParamType": 1,
  "returnType": 1,
  "propertyStatus": 0,
  "rwStatus": "RU",
  "paramType": 0,
  "minValue": "4",
  "maxValue": "8",
  "allowedValues": "[]",
  "description": "几边形,值只能是偶数",
  "defaultName": "RoiPoint",
  "baseFlag": false,
  "step": "2",
  "paramValueType": null,
  "defaultValue": "6",//默认六边形
  "jsonAllowedValue": null,
  "unitId": "6",
  "unit": "watt",
  "dpId": 235,
  "whetherCheck": true,
  "key": null
}

事件

基础事件

烟感控制器产品有一个可燃气体探测器上报基础事件,并且关联了CH4基础属性,该属性允许值范围为

code

value

描述

no alarm(默认)

0

当侦测到可燃气体不报警

alarm

1

当侦测到可燃气体报警

代码语言:javascript
复制
{
  "id": "1399606067533381633",
  "parentId": null,
  "tenantId": "-1",
  "serviceModuleId": null,
  "version": null,
  "name": "CH4",//事件名称
  "code": "CH4",//事件唯一code
  "apiLevel": null,
  "developStatus": null,
  "propertyStatus": null,
  "params": null,
  "tags": null,
  "description": "可燃气体探测器上报事件",
  "status": null,
  "eventId": null,
  "dpId": 25200,
  "operateLogResp": null,
  "paramType": 0,//参数格式(0-array,1-object)
  "usedFlag": 1,
  "reportType": 0,//上报类型 0:非记录型上报, 1:记录型上报
  "properties": [ //返回参数列表
    {
      "id": "1399605770165616642",
      "code": "CH4",//属性唯一code
      "tenantId": "-1",
      "serviceModuleId": null,
      "parentId": null,
      "version": null,
      "name": "CH4",//属性名称
      "tags": null,
      "apiLevel": null,
      "developStatus": null,
      "reqParamType": 0,//请求参数格式:0 array ,1 object
      "returnType": 0,//返回参数格式:0 array ,1 object
      "propertyStatus": null,
      "rwStatus": "R",//只读模式
      "paramType": 2,
      "minValue": null,
      "maxValue": null,
      "allowedValues": "[{\"name\":\"no alarm\",\"description\":\"\",\"value\":\"0\"},{\"name\":\"alarm\",\"description\":\"\",\"value\":\"1\"}]",//允许值范围 0:不报警  1:报警
      "testCase": null,
      "description": "0 no alarm,1 alarm,[1-Active | 0-Inactive]",
      "dpId": 2221,
      "usedFlag": null,
      "propertyId": "1399606068489682946",
      "status": null,
      "useStatus": 2,
      "step": null,
      "paramValueType": 1,
      "defaultValue": "0",//默认不报警
      "jsonAllowedValue": "",
      "unitId": "1",
      "unit": "-",
      "reportType": 0,
      "key": null,
      "propertyParamType": null,
      "defaultName": null,
      "baseFlag": true//基础属性
    }
  ]
}

产品私有事件

烟感控制器子产品C1,关联了私有事件CH4,并且事件关联私有属性,默认当侦测到可燃气体上报报警事件;

代码语言:javascript
复制
{
  "id": "1399606067533381633",
  "parentId": null,
  "tenantId": "-1",
  "serviceModuleId": null,
  "version": null,
  "name": "CH4",//事件名称
  "code": "CH4",//事件唯一code
  "apiLevel": null,
  "developStatus": null,
  "propertyStatus": null,
  "params": null,
  "tags": null,
  "description": "可燃气体探测器上报事件",
  "status": null,
  "eventId": null,
  "dpId": 25200,
  "operateLogResp": null,
  "paramType": 0,//参数格式(0-array,1-object)
  "usedFlag": 1,
  "reportType": 0,//上报类型 0:非记录型上报, 1:记录型上报
  "properties": [ //返回参数列表
    {
      "id": "1399605770165616642",
      "code": "CH4",//属性唯一code
      "tenantId": "-1",
      "serviceModuleId": null,
      "parentId": null,
      "version": null,
      "name": "CH4",//属性名称
      "tags": null,
      "apiLevel": null,
      "developStatus": null,
      "reqParamType": 0,//请求参数格式:0 array ,1 object
      "returnType": 0,//返回参数格式:0 array ,1 object
      "propertyStatus": null,
      "rwStatus": "R",//只读模式
      "paramType": 2,
      "minValue": null,
      "maxValue": null,
      "allowedValues": "[{\"name\":\"no alarm\",\"description\":\"\",\"value\":\"0\"},{\"name\":\"alarm\",\"description\":\"\",\"value\":\"1\"}]",//允许值范围 0:不报警  1:报警
      "testCase": null,
      "description": "0 no alarm,1 alarm,[1-Active | 0-Inactive]",
      "dpId": 2221,
      "usedFlag": null,
      "propertyId": "1399606068489682946",
      "status": null,
      "useStatus": 2,
      "step": null,
      "paramValueType": 1,
      "defaultValue": "1",//报警
      "jsonAllowedValue": "",
      "unitId": "1",
      "unit": "-",
      "reportType": 0,
      "key": null,
      "propertyParamType": null,
      "defaultName": null,
      "baseFlag": fale//非基础属性
    }
  ]
}

服务

基础服务

IPC产品有个云AI基础服务,该基础服务关联了边缘端算法和云端算法两个属性;

代码语言:javascript
复制
{
  "id": "1398151374275022849",
  "parentId": null,
  "tenantId": "-1",
  "version": null,
  "name": "getAI",//服务名称
  "code": "getAI",//服务唯一标识符code
  "tags": null,
  "apiLevel": null,
  "developStatus": null,
  "propertyStatus": null,
  "reqParamType": 0,//请求参数格式:0 array ,1 object
  "returnType": 1,//返回参数格式:0 array ,1 object
  "params": null,
  "returnDesc": "云AI",
  "returns": null,
  "description": "云AI",
  "status": null,
  "dpId": 15119,
  "actionId": null,
  "usedFlag": 1,
  "useStatus": 2,
  "properties": [//返回的参数列表
    {
      "id": "1398151839912689666",
      "code": "algorithmCloud",//属性唯一code
      "tenantId": "-1",
      "serviceModuleId": null,
      "parentId": null,
      "version": null,
      "name": "algorithmCloud",//云端算法
      "tags": null,
      "developStatus": null,
      "reqParamType": 0,//请求参数格式:0 array ,1 object
      "returnType": null,
      "propertyStatus": null,
      "rwStatus": "",
      "paramType": 6,//参数类型,0:int,1:float,2:bool,3:enum,4:string 5object 6 array 
      "minValue": null,
      "maxValue": null,
      "allowedValues": "[]",
      "testCase": null,
      "description": "[{\"algorithm\": \"Human\",\"AIComputing\": 0},{\"algorithm\": \"License\",\"AIComputing\": 0},{\"algorithm\": \"Animal\",\"AIComputing\": 0}]",
      "propertyType": 1,//property类型(0:property类型 1:参数类型)
      "dpId": null,
      "usedFlag": null,
      "nameLangs": null,
      "propertyId": "1398151844660641794",
      "status": null,
      "useStatus": 0,
      "step": null,
      "paramValueType": 1,//参数值类型 1:int 2:string
      "defaultValue": null,
      "jsonAllowedValue": "[]", //json串允许值 云端算法集
      "unitId": "1",
      "unit": "-",
      "reportType": 0,//上报类型 0:非记录型上报, 1:记录型上报
      "key": null,
      "propertyParamType": 1,//property类型(0:入参 1:出参)
      "defaultName": null,
      "baseFlag": true
    },
    {
      "id": "1398151678114598913",
      "code": "algorithmLocal",//属性唯一code
      "tenantId": "-1",
      "serviceModuleId": null,
      "parentId": null,
      "version": null,
      "name": "algorithmLocal",//边缘端算法
      "tags": null,
      "developStatus": null,
      "reqParamType": 0,//请求参数格式:0 array ,1 object
      "returnType": null,
      "propertyStatus": null,
      "rwStatus": "",
      "paramType": 6,//参数类型,0:int,1:float,2:bool,3:enum,4:string 5object 6 array 
      "minValue": null,
      "maxValue": null,
      "allowedValues": "[]",
      "testCase": null,
      "description": "[{\"algorithm\":\"MotionLocal\", \"AIComputing\":0.5}, {\"algorithm\":\"HumanLocal\", \"AIComputing\":0.5}]",
      "propertyType": 1,
      "dpId": null,
      "usedFlag": null,
      "nameLangs": null,
      "propertyId": "1398151683767140354",
      "status": null,
      "useStatus": 0,
      "step": null,
      "paramValueType": 1,//参数值类型 1:int 2:string
      "defaultValue": null,
      "jsonAllowedValue": "[{\"algorithm\":\"MotionLocal\", \"AIComputing\":0.5}, {\"algorithm\":\"HumanLocal\", \"AIComputing\":0.5}]",
      //json串允许值 边缘端算集
      "unitId": "1",
      "unit": "-",
      "reportType": 0,
      "key": null,
      "propertyParamType": 1,//property类型(0:入参 1:出参)
      "defaultName": null,
      "baseFlag": true//基础属性
    }
  ]
}

产品私有服务

IPC子产品M1配置的私有服务,该产品的设备边缘端算法集为Motion(移动侦测),云端算法集配置的为Animal,Fire,Human算法;

代码语言:javascript
复制
{
  "id": "1410898669641592833",
  "parentId": null,
  "tenantId": "2",
  "serviceModuleId": null,
  "version": null,
  "name": "getAI",
  "code": "getAI",
  "developStatus": 1,
  "propertyStatus": 0,
  "reqParamType": 0,
  "returnType": 1,
  "returnDesc": "云AI",
  "description": "云AI",
  "actionId": null,
  "status": 0,
  "dpId": 15119,
  "defaultName": "getAI",
  "usedFlag": null,
  "baseFlag": false,//非基础属性
  "useStatus": 0,
  "properties": [
    {
      "id": "1410898669649981442",
      "parentId": null,
      "tenantId": "2",
      "serviceModuleId": null,
      "version": null,
      "name": "algorithmLocal",
      "code": "algorithmLocal",
      "tags": null,
      "apiLevel": null,
      "developStatus": 1,
      "reqParamType": 0,
      "returnType": 0,
      "propertyStatus": null,
      "rwStatus": "",
      "paramType": 6,
      "minValue": "",
      "maxValue": "",
      "allowedValues": "[]",
      "description": "[{\"algorithm\":\"MotionLocal\", \"AIComputing\":0.5}, {\"algorithm\":\"HumanLocal\", \"AIComputing\":0.5}]",
      "propertyParentId": null,
      "defaultName": "algorithmLocal",
      "baseFlag": false,
      "step": "0",
      "paramValueType": 1,
      "defaultValue": "",
      "jsonAllowedValue": "[{\"algorithm\":\"MotionLocal\", \"AIComputing\":0.5}]",
      //json串允许值 边缘端算法集
      "unitId": "1",
      "unit": null,
      "dpId": null,
      "whetherCheck": false,
      "key": null
    },
    {
      "id": "1410898669675147266",
      "parentId": null,
      "tenantId": "2",
      "serviceModuleId": null,
      "version": null,
      "name": "algorithmCloud",
      "code": "algorithmCloud",
      "tags": null,
      "developStatus": 1,
      "reqParamType": 0,
      "returnType": 0,
      "propertyStatus": null,
      "rwStatus": "",
      "paramType": 6,
      "minValue": "",
      "maxValue": "",
      "allowedValues": "[]",
      "testCase": null,
      "description": "[{\"algorithm\": \"Human\",\"AIComputing\": 0},{\"algorithm\": \"License\",\"AIComputing\": 0},{\"algorithm\": \"Animal\",\"AIComputing\": 0}]",
      "propertyParentId": null,
      "defaultName": "algorithmCloud",
      "baseFlag": false,
      "step": "0",
      "paramValueType": 1,//参数值类型 1:int 2:string
      "defaultValue": "",
      "jsonAllowedValue": "[{\"algorithm\": \"Animal\",\"AIComputing\": 0},{\"algorithm\": \"Fire\",\"AIComputing\": 0},{\"algorithm\": \"Human\",\"AIComputing\": 0}]",
      //json串允许值 云端算法集
      "unitId": "1",
      "unit": null,
      "dpId": null,
      "whetherCheck": false,
      "key": null
    }
  ]
}

功能组

基础功能组和私有功能组原理同上;下面例子描述的是IPC子产品M1的IPC/WifiBaseInfo私有功能组。该功能组关联获取wifi基本信息和开启设备配网服务,其服务关联关联产品私有属性;通过云端下发给设备,设备返回对应参数;

代码语言:javascript
复制
 {
      "id": "1410898667900956673",
      "tenantId": "2",
      "name": "IPC wifi信息",//功能组名称
      "code": "IPC/WifiBaseInfo",//功能组唯一标识符code
      "developStatus": 1,
      "propertyStatus": 1,
      "description": "IPC wifi信息",//功能组描述
      "status": 1,
      "baseFlag": false,
      "useStatus": 2,
      "otherId": null,
      "whetherCheck": true,
      "actionList": [//功能组关联的服务
        {
          "actionInfo": {
            "id": "1410898667917733890",
            "parentId": null,
            "tenantId": "2",
            "serviceModuleId": null,
            "version": "V1.2.15",
            "name": "获取wifi基本信息",
            "code": "WifiBaseInfo",
            "developStatus": 1,
            "propertyStatus": 0,
            "reqParamType": 0,
            "returnType": 0,
            "returnDesc": "无参数,返回值对应的 ssid、RSSI、Enctype(可选)",
            "description": "获取wifi基本信息 ---请不要删",
            "actionId": null,
            "status": 0,
            "dpId": 15039,
            "defaultName": "获取wifi基本信息",
            "usedFlag": null,
            "baseFlag": false,
            "useStatus": 0
          },
          "paramPropertyList": [],//请求参数
          "returnPropertyList": [//返回参数
            {
              "id": "1410898667930316802",
              "parentId": null,
              "tenantId": "2",
              "serviceModuleId": null,
              "version": null,
              "name": "SSID",
              "code": "WifiBaseInfo_SSID",
              "tags": null,
              "apiLevel": null,
              "developStatus": 1,
              "reqParamType": 0,
              "returnType": 0,
              "propertyStatus": null,
              "rwStatus": "",
              "paramType": 4,
              "minValue": "",
              "maxValue": "",
              "allowedValues": "[]",
              "testCase": null,
              "description": "wifi名称, 0,128字节",
              "propertyParentId": null,
              "defaultName": "SSID",
              "baseFlag": false,
              "step": null,
              "paramValueType": null,
              "defaultValue": null,
              "jsonAllowedValue": null,
              "unitId": null,
              "unit": null,
              "dpId": null,
              "whetherCheck": false,
              "key": null
            },
            {
              "id": "1410898667959676930",
              "parentId": null,
              "tenantId": "2",
              "serviceModuleId": null,
              "version": null,
              "name": "RSSI",
              "code": "WifiBaseInfo_RSSI",
              "developStatus": 1,
              "reqParamType": 0,
              "returnType": 0,
              "propertyStatus": null,
              "rwStatus": "",
              "paramType": 0,
              "minValue": "0",
              "maxValue": "100",
              "allowedValues": "[]",
              "testCase": null,
              "description": "wifi信号强度,0-100",,
              "propertyParentId": null,
              "defaultName": "RSSI",
              "baseFlag": false,
              "step": "1",
              "paramValueType": null,
              "defaultValue": "0",
              "jsonAllowedValue": null,
              "unitId": null,
              "unit": null,
              "dpId": null,
              "whetherCheck": false,
              "key": null
            },
            {
              "id": "1410898667989037057",
              "parentId": null,
              "tenantId": "2",
              "serviceModuleId": null,
              "version": null,
              "name": "Enctype",
              "code": "WifiBaseInfo_Enctype",
              "developStatus": 1,
              "reqParamType": 0,
              "returnType": 0,
              "propertyStatus": null,
              "rwStatus": "",
              "paramType": 3,
              "minValue": "",
              "maxValue": "",
              "allowedValues": "[]",
              "description": "wifi加密方式 0-10对应 INVALID,OPEN,WEP,WPA_TKIP,WPA_AES,WPA2_TKIP,WPA2_AES,WPA_PSK_TKIP,WPA_PSK_AES,WPA2_PSK_TKIP,WPA2_PSK_AES",
              "propertyParentId": null,
              "defaultName": "Enctype",
              "baseFlag": false,
              "step": null,
              "paramValueType": 1,//'参数值类型 1:int 2:string
              "defaultValue": null,
              "jsonAllowedValue": null,
              "unitId": null,
              "unit": null,
              "dpId": null,
              "whetherCheck": false,
              "key": null
            }
          ],
          "actionParentId": null,
          "whetherCheck": true
        },
        {
          "actionInfo": {
            "id": "1410898668035174402",
            "parentId": null,
            "tenantId": "2",
            "serviceModuleId": null,
            "version": null,
            "name": "开启设备配网",
            "code": "setConfigWifiMode",
            "developStatus": 1,
            "propertyStatus": 0,
            "reqParamType": 1,
            "returnType": 0,
            "returnDesc": "无返回值",
            "description": "IPC开启设备配网  参数in对应值0/1/2/3(ap配网、smartconfig配网、蓝牙配网、其他)",
            "iftttType": 0,
            "portalIftttType": 0,
            "actionId": null,
            "status": 0,
            "dpId": 15079,
            "defaultName": "开启设备配网",
            "usedFlag": null,
            "baseFlag": false,
            "useStatus": 0,
            "auditUserId": null
          },
          "paramPropertyList": [//请求参数
            {
              "id": "1410898668060340225",
              "parentId": null,
              "tenantId": "2",
              "serviceModuleId": null,
              "version": null,
              "name": "in",
              "code": "in",
              "tags": null,
              "apiLevel": null,
              "developStatus": 1,
              "reqParamType": 0,
              "returnType": 0,
              "propertyStatus": null,
              "rwStatus": "",
              "paramType": 3,//参数类型,0:int,1:float,2:bool,3:enum,4:string
              "minValue": "",
              "maxValue": "",
              "allowedValues": "[]",
              "testCase": null,
              "description": "参数mode对应整形值0/1/2/3(ap配网、smartconfig配网、蓝牙配网、其他",
              "propertyParentId": null,
              "defaultName": "in",
              "baseFlag": false,
              "step": null,
              "paramValueType": 1,
              "defaultValue": null,
              "jsonAllowedValue": null,
              "unitId": null,
              "unit": null,
              "dpId": 178,
              "whetherCheck": false,
              "key": null
            }
          ],
          "returnPropertyList": [],
          "actionParentId": null,
          "whetherCheck": true
        }
      ],
      "eventList": [],
      "propertyList": [],
      "serviceModuleParenatId": null
    }

物模型协议

协议描述

产品定义物模型后,设备可以根据物模型中的定义上报属性、事件,并可对设备下发控制指令。物模型协议包括了以下几部分。

  1. 设备属性上报:设备端将定义的属性根据设备端的业务逻辑向云端上报。
  2. 设备远程控制:从云端向设备端下发控制指令,即从云端设置设备的可写属性。
  3. 获取设备最新上报信息:获取设备最新的上报数据。
  4. 设备事件上报:设备可根据定义的物模型中的事件,当事件被触发,则根据设备事件上报的协议上报告警、故障等事件信息。
  5. 设备行为调用:云端可以通过 RPC 的方式通知设备执行某个动作行为,适用于应用需要实时获取设备的执行结果的场景。
  6. 设备初始信息上报:设备连接平台时上报的初始信息,便于小程序或 App 展示设备详细信息,如设备 MAC 地址、IMEI 号。
  7. 用户删除设备:用户在腾讯连连小程序或用户自主品牌小程序删除设备时由云端发送给设备的通知消息,便于设备重置或网关类设备清除子设备数据。

协议topic

代码语言:javascript
复制
设备属性上报:设备端将定义的属性根据设备端的业务逻辑向云端上报。
设备属性上行请求 Topic:iot/v1/c/up/property/{ProductId}/{deviceId}
设备属性上行响应 Topic:iot/v1/s/down/property/{ProductId}/{deviceId}

设备远程控制:从云端向设备端下发控制指令,即从云端设置设备的可写属性。
下发 Topic:iot/v1/s/up/property/{ProductId}/{deviceId}
响应 Topic:iot/v1/c/down/property/{ProductId}/{deviceId}

获取设备最新上报信息:获取设备最新的上报数据。
请求 Topic:iot/v1/s/up/property/{ProductId}/{deviceId}
响应 Topic:iot/v1/c/down/property/{ProductId}/{deviceId}


设备事件上报:设备可根据定义的物模型中的事件,当事件被触发,则根据设备事件上报的协议上报告警、故障等事件信息。
设备事件上行请求 Topic:iot/v1/c/up/event/{ProductId}/{deviceId}
设备事件上行响应 Topic:iot/v1/s/down/event/{ProductId}/{deviceId}

设备行为调用:云端可以通过 RPC 的方式通知设备执行某个动作行为,适用于应用需要实时获取设备的执行结果的场景。
应用调用设备行为 Topic:iot/v1/s/down/action/{ProductId}/{deviceId}
设备响应行为执行结果 Topic:iot/v1/c/up/action/{ProductId}/{deviceId}

设备初始信息上报:设备连接平台时上报的初始信息,便于小程序或 App 展示设备详细信息,如设备 MAC 地址、IMEI 号。
上行请求 Topic:iot/v1/c/up/property/{ProductId}/{deviceId}
下行响应 Topic:iot/v1/s/down/property/{ProductId}/{deviceId}

用户删除设备:用户在App删除设备时由云端发送给设备的通知消息,便于设备重置或网关类设备清除子设备数据。
下发用户删除设备 Topic:iot/v1/s/down/service/{ProductId}/{deviceId}

用户绑定设备通知消息
下发用户绑定设备通知消息 Topic:iot/v1/s/down/service/{ProductId}/{deviceId}

位置服务-围栏告警消息下发
下发围栏告警消息Topic:iot/v1/s/down/service/{ProductId}/{deviceId}
设备响应回复 Topic:iot/v1/c/up/service/{ProductId}/{deviceId}

MQTT数据上报格式

代码语言:javascript
复制
{
  "ack": {
    "code": 200,
    "desc": "success"
  },
  "payload": {
  },
  "seq": "bdDtQVBOy9",
  "service": "alarm",
  "srcAddr": "9.5190decfa5da427f9cb82907f3cb6b5d",
  "topic": "iot/v1/c/up/service/IPC1233/sdasd4454444",
}

·········· END ··············

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-04-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 编程识堂 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为什么需要物模型
  • 物模型能解决哪些问题
  • 物模型带来什么价值
  • 如何定义物模型
  • 自研时序图
  • 自研流程图
  • 案例
  • 物模型数据类型
  • 属性
    • 基础属性
      • 产品私有属性
      • 事件
        • 基础事件
          • 产品私有事件
          • 服务
            • 基础服务
              • 产品私有服务
              • 功能组
              • 物模型协议
                • 协议描述
                  • 协议topic
                    • MQTT数据上报格式
                    相关产品与服务
                    云开发 CloudBase
                    云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档