本文中单独提到「IoT平台」这一名词,而事实上标准部署场景中,IoT平台就是AIoT平台的一部分,这里单独提出只是为了在后文更好地理解数据流向以及概念的交互关系。
一、概述#
IoT平台作为AIoT平台开放能力的重要组成部分,通过物模型(物模型的详细概念可以参考文档什么是物模型)的抽象能力,外部的任何实体(不仅包括设备,还包括工厂,子系统等)都能将自身的能力通过物模型的方式表达出来,再与IoT平台采用标准化的协议进行通信,实现与IoT平台的对接。本指南旨在说明第三方子系统接入IoT平台的数据流向(为帮助理解,还会包括部分数据在IoT平台内部流动的必要说明),并提供具体操作示例。注:本 文标题当中的「子系统」概念,不仅限于设备类相关子系统,还包括了会议室预约系统,停车场系统等和设备不那么直接相关的子系统。若只是想让单个设备接入IoT平台,参考快速入门当中的概念即可。二、数据流向说明#
子系统与IoT平台的数据流向分为两种,一种是子系统主动推送数据到IoT平台(例如停车场系统将车辆进出信息推送到IoT平台);另一种是IoT平台主动拉取子系统数据或请求子系统能力(例如IoT平台请求门禁系统进行远程开门)。这里分别说明这两种情况的数据流向。除流向之外,对于子系统是以网关设备 + 子设备的形态接入IoT平台,还是直接以单个的子系统设备的形态接入IoT平台,也会有一些不同。但实际的抉择方式比较直观,根据子系统实际要做的事情就可以很容易地判断,这里不再赘述。
2.1 前置条件#
无论是以上述哪种方式接入IoT平台,都需要先完成以下步骤:1.
在IoT平台创建子系统对应产品,添加物模型(有时会直接引用标准物模型)。关于是自定义物模型还是引用标准物模型,可以根据自身子系统或子系统管理的设备是否在IoT平台存在对应的标准物模型来决定,如果有,判断是否合用即可。此外IoT平台也在一个持续完善归纳标准物模型的过程中,也可以在集成沟通过程当中将新的子系统物模型归纳为标准物模型。
2.
在产品下创建对应子系统设备(视情况可能还需要建立设备的子设备,但无论拓扑关系如何,数据交互都是由父设备进行的),此时通过设备认证的三元组信息:产品编码 + 设备编码 + 设备密钥
,即可完成子系统设备的认证。
通过观察文档也可以看出,IoT平台提供的HTTP协议接入方式,本质上来说只是对MQTT协议的一种封装,并且只能用于实现推送数据到IoT平台的场景。因此在实际使用中,推荐使用MQTT协议接入。
2.2 子系统主动推送数据到IoT平台#
子系统接入IoT平台,通过开放协议将数据推送到IoT平台,IoT平台将数据推送至设备中心,随后设备中心将数据流向各个业务应用。业务应用可以通过订阅这些数据,实现如上提到的数据编排,联动,告警等逻辑。在更普遍的场景中,例如这些数据作为物模型属性上报,这些数据会被存储下来,用于在各种业务的图表展示,数据分析等场景中使用。2.3 IoT平台主动拉取子系统数据或请求子系统能力#
子系统通过MQTT协议接入IoT平台后,可以监听IoT平台下发的指令,IoT平台通过设备中心下发指令至子系统,子系统接收到指令后,执行相应的操作,将结果通过MQTT协议返回至IoT平台。通过上述流程,IoT平台可以实现对子系统的远程控制,例如远程开门,远程控制灯光等。可以注意到,上图中的箭头是双向的,因为有时这种控制需要关心操作结果,或者本身就是一次对子系统的数据查询操作。三、具体场景示例#
以一个停车场子系统的接入为例,说明具体的操作步骤。
3.1 物模型构思#
首先,一个项目当中的停车场系统往往不会包含太多设备,或者说对于停车场系统来说,设备并不是我们关心的重点,我们希望停车场是一个单独的整体,而我们主要主要关心的是停车信息的采集,并且希望在必要的时候可以手动开关闸。再次说明,关于物模型的定义以及使用,可以参考文档什么是物模型,大体上说,物模型当中的属性表示实体的状态(这个状态往往会持续一段时间),事件表示实体发生了什么(瞬间的动作或者事件),而服务则表示实体可以对外提供的能力(属性与服务在有的操作当中可以互换,例如远程开门可以定义成对门的开关属性的操作,也可以直接定义成远程开门服务,具体取决于是否需要观察实体的状态,是否需要进行数据查询等)。如果不是直接引用标准物模型,则物模型的定义不是公式化的,AIoT平台的许多应用入口都能发挥这些物模型的能力,具体考虑对接难度与实际需求即可。 属性名称 | 属性标识 | 数据类型 | 读写类型 | 描述 |
---|
车位总数 | total | int | R | 停车场总车位数 |
剩余车位数 | remain | int | R | 剩余车位数 |
服务名称 | 服务标识 | 描述 |
---|
开闸 | openGate | 对闸机进行开闸操作,入参当中可以指定具体闸机 |
事件名称 | 事件标识 | 描述 |
---|
车辆进入 | carIn | 车辆进入停车场 |
车辆离开 | carOut | 车辆离开停车场 |
当然,上面只是列出了物模型的大纲,实际的物模型定义还会具有需求细节,因为服务及事件的类型都不是简单的基本类型,而是需要进一步定义输入输出参数的,这里不再赘述。3.2 创建产品与设备#
在IoT平台建立如图的产品,添加物模型,再在产品下创建停车场设备:属性定义
服务定义
事件定义

3.3 子系统接入IoT平台#
整体接入步骤可以直接参考:快速入门,有比较详细的全流程说明,因为无论是设备还是子系统,接入的流程都是一样的。3.4 数据在平台当中的使用#
物模型的定义最终服务于业务,AIoT平台当中的许多业务都直接与物模型交互,支撑各类业务,这里拿我们刚刚接入的子系统举例:
剩余车位数触发告警
在场景中心定义联动,当剩余车位数少于10个时触发告警(当然,告警中心同样 也可以进行类似操作):操作闸机开闸
指定闸机号,操作闸机开闸,图中只是示例,在实际使用当中,类似功能往往会在楼控或者图形引擎当中进行可视化配置: