手搓一个分布式大气监测系统(五)基于物联网开发平台的云架构延伸

时间:2022-07-25
本文章向大家介绍手搓一个分布式大气监测系统(五)基于物联网开发平台的云架构延伸,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

背景

先做个前情回顾:在这个系列的前面几篇文章中,(一)系统功能与架构概述(二)架构介绍及案例解析 先总体介绍了大气监测系统的总体架构,接着 (三)使用 Nucleo LoRa 开发套件打造 PM2.5 监测终端(四)基于TencentOS Tiny RISC-V开发板打造PM2.5监测终端 这两篇文章介绍了利用两种开发套件快速打造了端侧的设备,并且在物联网开发平台上已经可以看到大气监测终端的属性数据更新。

那么物联网开发平台又应该如何将数据推送给我们的大气监测系统,大气监测系统又该如何获取设备在物联网开发平台上的数据呢?这篇文章来做个详细的介绍。

1 “数据同步”推送设备上报数据

平台功能介绍

用户的个性化业务需求需要将产品下所有设备上报的数据传输至用户自有的服务器上进行处理,物联网开发平台提供了 HTTP 转发服务,将设备上报数据实时 POST 到用户的 HTTP 服务器的能力。详情可以查看官网文档介绍

另外开发者基于物联网开发平台完成设备接入与管理,往往需要实时接收设备上报的数据与上下线状态便于闭环开发某个行业的垂直解决方案。平台提供了 CKafka 转发能力,满足需要通过消息队列订阅设备上报数据与状态的场景。

大气监测系统中的应用

大气监测系统采用了数据同步的HTTP转发服务,设备数据通过物联网开发平台规整汇聚之后,将转发到大气系统相应的API网关。

物联网开发平台的数据同步菜单中进行了如下的配置,图中的HTTP服务地址为API网关的URL,API网关接收到物联网开发平台数据之后将会传输给后端的SCF进行逻辑业务处理。

转发的报文示例如下:

{
	"payload": "eyJtZXRob2QiOiJyZXBvcnQiLCJjbGllbnRUb2tlbiI6IjIwMjAtMDEtMjBUMTA6NDk6MTAuNzY4WiIsInBhcmFtcyI6eyJQTTFfQ0YxIjo0MiwiUE0yZDVfQ0YxIjo0MiwiUE0xMF9DRjEiOjU1LCJQTTEiOjQxLCJQTTJkNSI6NDEsIlBNMTAiOjQ3LCJwYXJ0aWNsZXNfMGQzIjo5NjAsInBhcnRpY2xlc18wZDUiOjE0NCwicGFydGljbGVzXzEiOjIwLCJwYXJ0aWNsZXNfMmQ1Ijo2LCJwYXJ0aWNsZXNfNSI6MywicGFydGljbGVzXzEwIjoyLCJ2ZXJzaW9uIjowLCJFcnJvciI6MH19",
	"seq": 145829,
	"timestamp": 1579517350,
	"topic": "$thing/up/property/XXXXXXXX/pm25_XXX",
	"devicename": "pm25_XXX",
	"productid": "XXXXXXXX"
}

其中的payload字段为终端数据,为base64编码,可以使用工具解码,解码后可以看到传输的数据示例。后端的应用服务器按照如下的数据模版协议进行解析即可。

{
	"method": "report",
	"clientToken": "2020-01-20T10:49:10.768Z",
	"params": {
		"PM1_CF1": 42,
		"PM2d5_CF1": 42,
		"PM10_CF1": 55,
		"PM1": 41,
		"PM2d5": 41,
		"PM10": 47,
		"particles_0d3": 960,
		"particles_0d5": 144,
		"particles_1": 20,
		"particles_2d5": 6,
		"particles_5": 3,
		"particles_10": 2,
		"version": 0,
		"Error": 0
	}
}

调试工具分享

大气监测系统中采用的是腾讯云的API网关进行API的托管服务。开发阶段则可以使用一些工具来查看数据包的情况,这里推荐一个工具:https://requestbin.com/,可以收集调试 HTTP 的请求数据。

下图就是一个示例效果,可以非常简单方便地查看到数据详情。

2 “云API”调用

云API介绍

包括腾讯云物联网开发平台在内各种腾讯云产品都是以云API对外提供服务,API 接口比较规范,具有统一的参数风格和公共错误码。

大气监测系统中的应用

大气监测系统除了接收物联网开发平台上的推送数据,还需要向物联网开发平台查询LoRa网关的在线状态。

具体的API接口为 获取 LoRa 网关列表,可以直接使用文档界面上推荐的 API Explorer 工具来调试接口,熟悉接口的字段。

接口回复的 LastSeenAt 字段即为 LoRa 网关的最后在线时间。

同时 API Explorer 工具还提供了多个编程语言的SDK工具,可以直接生成相应的代码,大大提高了应用业务的编码效率。

3 小结

这篇文章里以大气监测系统为例,介绍了业务系统如何与物联网开发平台打交道,业务系统除了可以通过数据同步功能接收物联网开发平台的数据推送,也可以通过云API来调用物联网开发平台的接口服务。