天翼云_AEP_01文档解读


AEP官方文档

数据流转图

在这里插入图片描述
南向物联网开发行为:数据上报、时间上报、指令下发、指令响应。
数据格式:Object19

南向云接入

在这里插入图片描述
终端设备南向接入方式有三种,支持设备直连、边缘网关接入以及南向云接入。
在这里插入图片描述
使用云云对接协议实现设备与物联网平台的接入。

LwM2M协议

LwM2M协议是设备与天翼云物联网平台进行数据交互(南向对接)的协议之一(还有MQTT、T-Link、HTTP等对接协议官网-支持的对接协议)

LwM2M(lightweight Machine to Machine)就是一个物联网协议,主要用在NB-loT(Narrow Band Internet of Things)终端方面
LwM2M协议栈图
在这里插入图片描述LWM2M 把设备上的服务抽象为 Object 和 Resource,并在 XML 文件中定义各种Object 的属性和功能。

LWM2M Objects:一个Object对象对应客户端一个特定功能实体,一个object可以有多个resource。

LWM2M Protocol定义了一些逻辑操作,比如Read、Write、Execute

CoAP是基于LWM2M的传输层协议,下层可以是UDP或者SMS,UDP是必须支持的,SMS可选。

DTLS用来保证客户端和服务器间的安全性

在这里插入图片描述在这里插入图片描述

设备与平台对接

接入介绍

官网-接入介绍
物理设备与天翼云平台之间的数据交互成为南向对接,下面主要介绍设备与天翼云平台通过LWM2M协议进行数据交互和连接
南向对接步骤
(1)第一步为创建产品,包括产品信息的填写以及产品的生成(在天翼云平台创建产品)
(2)第二步为终端适配,包括设备添加、设备线下开发以及设备与平台对接调测(创建设备与真实物理设备一一映射)
在这里插入图片描述
在这里插入图片描述
三种南向接入方式:终端设备南向接入支持设备直连、边缘网关接入以及南向云接入。

创建产品与设备

官网-快速入门

1.直接创建产品:实际开发中,多采用此方法进行创建自己的产品进行开发,产品中心->创建产品,按要求填写表单,完成创建

服务与属性定义

产品(设备)创建完成后,通过添加服务与属性来描述产品的功能与能力。非透传的产品需要定义服务列表,属性列表。

服务介绍:描述设备是什么、能干什么以及如何控制该设备=>对应设备的上(19/0/0)下(19/1/0)行业务模型;服务分为数据上报、事件上报、指令下发、指令下发响应四种类型。

数据上报:设备上行数据,通常是业务数据,例如:温湿度业务上报
事件上报:设备上行数据,通常是告警状态数据,例如:故障上报
指令下发:设备下行数据,为平台/应用给设备下发的指令任务数据,例如:设置温度告警上限值
指令下发响应:设备上行数据,通常为设备侧回复指令的数据,例如:设置温度告警上限值响应


属性介绍:对业务数据的描述,包括数据名称、数据类型、取值范围等信息
在这里插入图片描述在这里插入图片描述

添加设备

定义完自己产品的属性与服务后,前往产品中心-> 选择产品->设备管理->添加设备,按要求填写设备信息,进行设备添加。
IMEI号不仅在自己的平台唯一,也不能与AEP平台中其他用户的IMEI相同。
在这里插入图片描述

交互流程(南向对接在传输层使用的协议)

所谓的交互流程是指物理设备是怎么通过LwM2M协议与AEP平台发送消息的(传输层的数据封装协议)。
官网-交互流程
CoAP选项详解
1、register接口:用于设备向平台进行注册的接口
在这里插入图片描述
2、update接口:负责更新设备状态的接口;在lifetime超期之前,设备需要发起Update流程,否则平台会认为设备离线,再次连接需要重新发起Register,
当设备参数(lifetime、binding mode、ObjectLinks等)发生变化,设备可以通过Update通知平台参数改变。

在这里插入图片描述

3、deregister接口:负责设备登出的接口
在这里插入图片描述
4、observe:订阅资源
在这里插入图片描述

5、Notify:负责资源上报给平台的接口
在这里插入图片描述

数据格式(南向对接在应用层使用的协议)

Object 19 数据格式可以用于应用层业务数据的封装,实现包括业务数据上报、业务指令下发、设备事件上报等功能。
目前平台仅支持Data字段,其他字段暂时不支持,即:(意思是只支持数据包的Data字段中使用Object19数据格式)
• 消息上行通过/19/0/0传送
• 消息下行通过/19/1/0传送
对于Data字段,平台既支持数据透传也支持非透传(物模型)。对于非透传设备,数据格式支持紧凑二进制和Json两种格式。


非透传设备

对于非透传设备上报的业务数据,平台需要对业务数据按照物模型定义进行解析,因此对于非透传设备Object19数据格式目前仅支持紧凑二进制和Json两种数据格式。

紧凑二进制格式

业务数据上报、事件上报中data字段的Object数据报文传输格式详解:
在这里插入图片描述
CMDType:无符号整型,必选,说明报文的类型
ServiceID:无符号整型,必选,说明服务对象ID,平台分配
Payload_length: 无符号整型,必选,说明业务数据长度
Payload: 二进制类型,长度为Payload_length,Parameter1、Parameter2对应服务对象的属性列表,与属性列表的顺序一致。

示例:设备数据上报
在这里插入图片描述
服务标识:对应CMDType,说明当前的业务传输类型是数据上报、事件上报还是指令下发、指令响应。
服务标识:数据上报-0x02-up、事件上报-0x07,无线参数上报-0x03
指令下发–0x06-dn、指令响应-0x86-rsp
服务ID:对应上面的服务对象ID
属性顺序:对应属性值的先后顺序,data2排在data1后面,data1排在seq后面
属性标识符:对应属性对象的属性列表
属性类型:对应属性值的类型。


业务指令下发、指令下发响应中Data字段的Object数据报文传输格式详解:
在这里插入图片描述
CMDType:无符号整型,必填,说明报文类型
ServiceID:无符号整型,必填,说明服务对象ID
TaskID:无符号整型,必填,说明任务对象ID,指令下发和指令响应中的TaskID必须一致,平台分配
Payload_length:无符号整型,必填,说明传输的数据长度
Payload:二进制,长度为Payload_length,真实的指令和指令响应数据。

示例:指令下发和响应


JSON格式

1、业务数据上报、事件上报、无线参数上报中的data字段Object数据报文传输格式:
{“serviceId”: XXXX, parameter1:value1, parameter2:value2}
serviceId:说明服务对象的ID,
parameter1、parameter2对应服务对象中的每个属性
value1、value2对应属性值,与属性类型一致。

示例:设备数据上报
在这里插入图片描述
19/0/0上报数据内容为:
{“serviceId”: 1, “seq”:1, “data1”: “hello”, “data2”: “world”}


2、业务指令下发、指令响应中Data字段Object数据报文传输格式:
{“serviceId”:XXXX, “taskId”:XXXX, parameter:value}
"serviceId"的值为对应服务对象的ID
"taskId"由平台分配,关联下发指令和响应指令,判断是否是同一个指令服务。
parameter和value按照服务定义的属性来填写。

示例:指令下发和响应
在这里插入图片描述
19/1/0指令下发内容为:

{“serviceId”:8001, “taskId”:1, “cmd”:1}

19/0/0指令下发响应内容为:

{“serviceId”:9001, “taskId”:1, “rsp”:“202010261600”}

透传设备

AEP对19/0/0、19/1/0的Data字段不进行解析,支持任意格式的业务数据的透传。
也就是说AEP平台对透传设备的data字段中的Object数据不进行解析,可以传输任意数据。

时间校准

设备上线以后向AEP平台获取UTC(Universal Time Coordinated),进行时间校准。

设备请求时间校准的流程如下:

  1. 设备通过19/0/0请求UTC参数,携带设备发送该报文的时间戳DST;
    设备通过消息上行请求UTC参数同时携带设备发送该报文的时间戳DST
  2. 平台接收并记录19/0/0的时间戳并向设备回复19/1/0,携带三个时间参数DST、SRT、SST;
    AEP平台接收并记录消息上行的时间戳并向设备回复消息下行,同时携带三个时间戳
  3. 设备记录接收到19/1/0的时间戳DRT,根据公式计算得到精确时间: ( SST + SRT + DRT – DST ) / 2
    设备记录接收到的消息下行时间戳,根据公式计算得到精确时间
    在这里插入图片描述
    在这里插入图片描述
    19/0/0报文:7574635f72657100000170F5868A00
    19/1/0报文:7574635f7273700000 0170F5868A0000000170F587C7E300000170F587C800‬
    设备计算得到精确时间:
    (1584667281379 + 1584667281408 + 1584667203000 – 1584667200000) / 2
    = 1584667282893

设备连接

设备接入平台的域名为:*.nb.ctwing.cn (注:*为您租户id)

设备通过Register接口将IMEI信息带给平台进行身份认证,确保Endpoint Name格式与注册的一致。身份认证通过,设备注册成功,状态更新为:已激活
在这里插入图片描述

注册成功的设备,在右侧的操作栏中可以看到"查看Object对象"按钮,点击该按钮可以查看设备支持的Object列表,Object列表呈现的是设备Register报文Payload中携带的ObjectLinks(注:Object19不在这里显示)。
在这里插入图片描述
点击每个Object右侧的操作按钮可以查看该Object下设备支持的所有实例及属性;
列出了Resource信息。操作按钮可以对某个实例的某个资源信息进行读、写、执行、订阅/取消订阅,资源信息的执行权限可以在OMA官方网站查询。
在这里插入图片描述

数据上报

官网-数据上报

所谓的数据上报就是AEP平台订阅了哪个Object对象的resource资源,然后该资源会上报信息给AEP平台

通用组件服务支持OMA定义的所有Object资源的订阅/取消订阅。设备登录时携带的Object列表会在设备信息管理页面展示。如果添加设备时选择开启自动订阅,在设备登录平台后,平台会主动订阅Object列表资源。
在这里插入图片描述
通用组件问题向设备订阅了某个Object的资源,设备会将该Object的数据上报给平台;平台取消订阅,设备停止上报数据。
订阅资源可以在设备添加的时候选择自动订阅,也可以在设备注册完成以后通过操作按钮手动订阅某个对象资源。平台支持根据实际需求随时进行订阅/取消订阅 的操作。
在这里插入图片描述
Object19支持用户自定义的业务数据上报类型,根据是否需要平台解析数据可以选择透传和非透传两种方式。

非透传设备

非透传设备产品创建时自动引用平台定义的标准物模型,按照物模型会进行业务数据的编码和解码。编解码规范可参考Object19的接口定义。
在这里插入图片描述

透传设备

透传设备不需要添加服务,业务数据不会被解析,数据查看显示的是经过Base64编码的原始数据。
在这里插入图片描述
AEP平台对透传设备的data字段中的Object数据不进行解析,可以传输任意数据

设备管理

所谓的设备管理其实就是对每一个Object对象下的resource资源进行订阅、读取、编写、执行操作。

指令下发

在产品中心->设备信息管理页面,点击设备右侧“指令下发”按钮,创建指令。
Object19的指令下发也支持透传和非透传两种方式。
AEP平台对透传设备的data字段中的Object数据不进行解析,可以传输任意数据
在这里插入图片描述

非透传设备

对于非透传设备,必须先在服务列表中定义指令下发类型的服务才可成功下发指令。点击指令下发按钮,选择指令下发的服务标识,按照定义时的参数要求依次填入个参数的value值、指令超时时间(秒)(范围1-10天,不填则默认7200秒),平台会根据该服务定义的报文组成,遵照设定的产品消息格式(紧凑二进制或JSON)下发指令。
在这里插入图片描述

透穿设备()

对于透传设备,不需要定义服务,点击指令下发按钮,填写指令内容、字符串/十六进制、指令超时时间(秒)(范围1-10天,不填则默认7200秒),即可下发指令。指令内容格式支持字符串及16进制两种。

订阅推送

订阅推送方式简介

天翼云物联网平台有两种订阅推送方式,一种是基于HTTP协议的HTTP消息推送,AIot会将符合订阅条件的设备信息以HTTP方式推送至北向应用(将订阅的设备信息以http方式发给北向应用);
另一种则是天翼云物联网平台自带的消息队列服务–>MQ消息推送,MQ消息推送会提供基于主题和消息缓存的可靠性推送服务。
在这里插入图片描述
HTTP推送方式适用于消息量较少(一般小于1000tps)且对少量消息丢失不敏感的应用;MQ推送方式适用于消息量更大或对可靠性要求较高的应用

MQ消息推送

MQ消息推送是天翼云物联网平台提供的基于消息队列的消息推送服务,提供消息缓存功能,北向应用(程序员编写的代码)可使用该服务获取设备上的上行消息,分为以下几步:
1、用户(应该是AEP平台中的MQ消息推送菜单对象)定制好消息主题,配置好数据源
2、MQ消息推送会把设备上行消息发给用户定制主体
3、北向应用基于AEP平台提供的SDK开发接收程序,获取设备消息。
在这里插入图片描述
在这里插入图片描述

/**
 * Aep MQ消息推送接收Demo
 *
 */
public class Demo {
	public static void main(String[] args) {
		String server = "xxxxxxx"; //消息服务地址请在控制台-消息流转-目的地管理-MQ页面中查看MQ推送服务地址,是地址-后面那一串,
		String tenantId = "xxxxx";//租户ID
		String token ="xxxxxxxx";//身份认证token串
		String certFilePath = ""; //直接填空字符串,CA证书,JDK已经内置相关根证书,无需指定
		List<String> topic=Collections.singletonList("xxxx");
		//创建消息接收Listener,假设消息接受类已经接收到消息则会出发该监听器
		IMsgListener msgListener = new IMsgListener() {

			public void onMessage(String msg) {
				//接收消息
				System.out.println(msg);
				//消息处理...
				//为了提高效率,建议对消息进行异步处理(使用其它线程、发送到Kafka等)
			}
		};
		
		
		//创建消息接收类
		IMsgConsumer consumer = new MqMsgConsumer();
		try {
			//初始化
			/**
			 * @param server  消息服务server地址
			 * @param tenantId 租户Id
			 * @param token    用户认证token
			 * @param certFilePath 证书文件路径
			 * @param topicNames   主题名列表,如果该列表为空或null,则自动消费该租户所有主题消息
			 * @param msgListener 消息接收者
			 * @return 是否初始化成功
			 */
			consumer.init(server, tenantId, token, certFilePath, topic, msgListener);
			//开始接收消息
			consumer.start();
		} catch (Exception e) {
			consumer.stop();
			consumer.destroy();
			throw new RuntimeException("天翼云MQ消费者初始化失败", e);
		}

		//主线程休眠,以便上面的监听器接收到消息
		try {
			TimeUnit.SECONDS.sleep(10);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}

		System.out.println("exit");
	}
}

测试:
1、进入AEP控制台进行在线模拟
在这里插入图片描述
2、发送数据使用AIoT平台提供的MQ消息推送服务将消息发送到消息队列
在这里插入图片描述
3、运行程序根据订阅的主题(topic)从消息队列中获取设备信息。
在这里插入图片描述
使用的订阅推送格式是LWM2M协议
LWM2M:{“upPacketSN”:-1,“deviceType”:“”,“productId”:“15120",“IMEI”:"8743997353",“deviceId”:"5bcbaf5472fb08a2090cd4e7158",“protocol”:“lwm2m”,“messageType”:“dataReport”,“payload”:{“current_temperature”:-40,“current_humidity”:0},“assocAssetId”:“”,“tenantId”:"9900000000**”,“IMSI”:“undefined”,“topic”:“v1/up/ad19”,“upDataSN”:-1,“serviceId”:1,“timestamp”:1667800228974}

订阅推送格式

官方文档
协议类型:
在这里插入图片描述

1.设备数据变化

设备数据变化上传到AEP平台,被AEP平台通过MQ消息推送服务上传到消息队列然后被北行应用程序获取到设备数据格式。
在这里插入图片描述
base64编码:
网络上常见的传输8Bit字节码的编码方式之一,基于64个可打印字符(26个英文大小写和9个阿拉伯数字加上+和/)来表示二进制数据的方法

LWM2M:{“upPacketSN”:-1,“deviceType”:“”,“productId”:“15120",“IMEI”:"8743997353",“deviceId”:"5bcbaf5472fb08a2090cd4e7158",“protocol”:“lwm2m”,“messageType”:“dataReport”,“payload”:{“current_temperature”:-40,“current_humidity”:0},“assocAssetId”:“”,“tenantId”:"9900000000**”,“IMSI”:“undefined”,“topic”:“v1/up/ad19”,“upDataSN”:-1,“serviceId”:1,“timestamp”:1667800228974}

2.设备指令响应

在这里插入图片描述
{“tenantId”:“1”,“productId”:“1503”,“messageType”:“commandResponse”,“deviceId”:“2d1f1a708b5d4cef880937d67b5e5842”,“taskId”:1,“result”:{“resultCode”: “SUCCESSFUL”,“resultDetail”: {“Length”: 2,“Rspdata”: “Qkg=”}}}

3.设备事件上报

在这里插入图片描述
{“tenantId”:“1”,“productId”:“10010208”,“deviceSn”:“111qw”,“deviceId”:“10010208111qw”,“messageType”:“eventReport”,“imei”:“xxx”,“imsi”:“xx”,“timestamp”:1554190965950,“eventType”:1,“eventContent”:{“m”:44},“serviceId”:1001,“protocol”:“rdap”}

4.设备上下线

在这里插入图片描述
{“timestamp”:1678263103563,“tenantId”:“10000000”,“protocol”:“lwm2m”,“productId”:“1000000”,“messageType”:“deviceOnlineOfflineReport”,“ipv4Address”:“11.25.57.35”,“iccid”:“undefined”,“eventType”:1,“deviceId”:“55f7b4da79f34c6cb1c5e34f00000000”,“imei”:“868334030000000”}

5.TUP合并数据变化

在这里插入图片描述
{“deviceId”:“143b4d4cc64e4c16981000159d27c7c6”,“IMEI”:“”,“IMSI”:“xx”,“deviceType”:“”,“tenantId”:“1”,“productId”:“10002052”,“messageType”:“dataReportTupUnion”,“topic”:“v1/up/ads”,“assocAssetId”:“”,“timestamp”:1554198622509,“payload”:{“services”:[{“serviceId”:“Datas”,“serviceType”:“Datas”,“data”:{“datas”:“0002000F383633373033303337303831383230000800130DFF2E074805D801E30700000402113213454E000F000116”},“eventTime”:“20190402T095022Z”}]},“upPacketSN”:-1,“upDataSN”:-1"serviceId":“”,“protocol”:“tup”}

6.设备增加删除

在这里插入图片描述
{“deviceList”:[{“deviceId”:“2ae270ab42a602114292690",“deviceName”:“test009”}],“messageType”:“addDeleteDevice”,“operation”:“delete”,“productId”:10079,“tenantId”:"103*88”}

消息流转

简介

目的地管理

一个目的地就是一个topic主题,一个topic类似一个消息队列,topic名字是队列名字,北向应用从该队列中那个获取设备上行数据。

消息路由管理

项目没用到

应用开发

1、创建应用
2、下载SDK进行本地开发
在这里插入图片描述
3、解压SDK,引入jar包到项目中,编写项目

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以回答这个问题。 Java对接AEP平台的步骤大概如下: 1. 导入AEP平台提供的Java SDK包。 2. 使用SDK提供的API进行认证,获取Access Token。 3. 使用Access Token进行API调用,如设备管理、消息推送等。 4. 根据需要,对API返回的数据进行解析和处理。 具体步骤和实现方式会根据AEP平台提供的具体文档和API有所不同,可以参考AEP平台的开发文档或者咨询AEP平台的技术支持人员。 ### 回答2: Java对接AEP平台是指使用Java编程语言来实现与AEP(应用扩展平台)进行对接和交互。 AEP平台是一个开放的应用集成和扩展平台,可以用于构建企业级应用程序和系统。通过Java对接AEP平台,我们可以实现与AEP平台的数据交互、调用AEP平台的功能和组件等。 Java是一种面向对象的编程语言,具有强大的跨平台性和可移植性,因此非常适合用于与AEP平台对接。Java具有丰富的类库和框架,可以通过调用AEP平台提供的API来实现与AEP平台的交互。 对于Java对接AEP平台的实现,一般可以通过以下步骤进行: 1. 导入AEP平台提供的Java开发包或相关的jar文件。 2. 在Java项目中编写代码来实现与AEP平台的交互,包括连接AEP平台、发送请求、接收响应等操作。 3. 根据AEP平台提供的文档或接口说明,调用相应的API来实现所需的功能,如获取设备信息、发送控制指令等。 4. 处理AEP平台返回的数据或响应,进行相应的业务逻辑处理。 5. 在代码中处理异常情况和错误,确保对接的稳定性和可靠性。 总之,通过Java对接AEP平台,我们可以借助Java的优势来实现与AEP平台的高效、稳定的交互,并以此构建出基于AEP平台的企业级应用系统。 ### 回答3: Java对接AEP平台主要通过调用AEP平台提供的接口实现。以下是一般的对接步骤: 1. 开发环境准备:首先需要下载并安装Java开发环境,确保开发环境的配置正确。 2. 了解AEP平台接口文档:开发人员需要仔细阅读AEP平台提供的接口文档,了解每个接口的功能和参数要求。 3. 导入相关依赖库:根据AEP平台提供的Java SDK,将相关的依赖库添加到项目中。 4. 创建API连接:使用Java提供的HttpURLConnection等相关类,创建与AEP平台的API连接。 5. 构建请求参数:根据接口文档的要求,构建相应的请求参数,并进行必要的编码和加密处理。 6. 发送请求:通过API连接发送请求到AEP平台,并获取响应结果。 7. 解析响应结果:根据AEP平台返回的数据格式,使用Java提供的相关类进行响应结果的解析,得到需要的数据。 8. 处理结果:根据接口的返回结果,进行相应的业务逻辑处理。 9. 错误处理:针对API调用可能出现的错误情况,在代码中进行相应的异常处理,保证系统的稳定性和容错性。 10. 日志记录:将关键的调试信息、请求参数、响应结果等记录到日志文件中,便于后续的排查和调试。 11. 测试和验证:完成对接的程序后,进行充分的测试和验证,确保与AEP平台的接口对接的正确性和稳定性。 12. 上线部署:将已经完成测试的程序部署到生产环境中,开始正式对接AEP平台。 以上是大致的对接流程,具体的实现过程会根据不同的AEP平台接口的要求而有所不同。对接过程中需要注意的是,要仔细阅读和理解接口文档,正确处理参数和数据的编码,异常情况的处理,以及日志记录等方面。同时,对接完成后需要进行充分的测试和验证,确保与AEP平台的接口对接的正确稳定。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值