数据推送:
- 终端产生的数据通过物联网平台推送给北向的应用的一种服务
数据推送分为HTTP推送和MQ推送
1. HTTP消息推送
物联网开放平台将符合订阅条件的设备信息以HTTP方式推送至北向应用。
用户可以通过门户或者调用北向API接口添加北向应用订阅url,平台可以将符合订阅条件的设备消息以HTTP POST方式推送至指定的url。目前支持设备数据变化通知、设备指令响应通知、设备事件上报通知、设备上下线通知等消息类型的订阅,各协议对应消息类型及格式参见订阅推送消息格式。订阅级别分为设备级,产品级和分组级。目前订阅生效时间为1分钟左右。 支持HTTP和HTTPs两种推送方式,HTTPs方式具备数字签名和通讯加密能力,具有较高的安全性。HTTP推送方式采用明文传输,可能造成推送消息被窃听或篡改,具有安全风险,请慎重选择,建议用户采用HTTPs方式来接收推送消息。
在北向应用创建一个接收数据的接口
配置平台推送地址
- 设备级订阅
- 产品级订阅
- 分组级订阅
平台推荐使用HTTPS安全订阅
1.1 使用设备级订阅上报事件数据
- 将推送数据封装为一个java对象
//设备事件上报dto
@Data
public class EventReport {
private String tenantId;
private String productId;
private String deviceSn;
private String deviceId;
private String messageType;
private String IMEI;
private String IMSI;
private Long timestamp;
private Integer eventType;
private JSONObject eventContent;
private String serviceId;
private String protocol;
}
- 创建一个接口,用来接收AEP平台推送的数据
@RestController
@RequestMapping("/data")
public class DeviceData {
/**
* 设备事件上报
* @param eventReport
*/
@PostMapping("/eventReport")
public void eventReport(@RequestBody EventReport eventReport){
System.out.println(JSON.toJSONString(eventReport));
}
}
- 项目打包,放在服务器中,并启动服务器
[root@rm rm]# nohup java -jar testapi-0.0.1-SNAPSHOT.jar &
- 在平台配置推送地址
- 选择新建订阅
- 选择对应的消息类别和订阅方url地址
- 长按按钮,设备发送上报事件
- 查看日志输出
# 实时监听日志,只查看后几行
tail nohup.out -f
2021-05-26 09:11:48.105 o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
2021-05-26 09:11:48.106 o.s.web.servlet.DispatcherServlet: Completed initialization in 1 ms
# 输出对象信息
{"deviceId":"a03e8a3d6866471d9f6d4151c07fae55","deviceSn":"",
"eventContent":{"wifi_num":0,"wifi_info":"0","latitude":0.0,
"time":1621991497000,"is_sos":0,"longitude":0.0},
"eventType":2,"messageType":"eventReport","productId":"15047914",
"protocol":"lwm2m","serviceId":"1002","tenantId":"2000035543","timestamp":1621991507922}
{"deviceId":"a03e8a3d6866471d9f6d4151c07fae55","deviceSn":"",
"eventContent":{"wifi_num":0,"wifi_info":"0","latitude":0.0,
"time":1621991503000,"is_sos":1,"longitude":0.0},
"eventType":2,"messageType":"eventReport","productId":"15047914",
"protocol":"lwm2m","serviceId":"1002","tenantId":"2000035543","timestamp":1621991507966}