实战后端接入物联网API

团队项目有一个业务要获取阿里云物联网平台上面的传感器数据,代码使用java,采用springboot框架,阿里云物联网平台上一个产品下的一个设备只能连接真实设备或者代码服务端,于是我采用数据流转的方式将数据流转到一个设备中,服务端订阅该设备的Topic

这里先讲讲我在接入真实设备并将数据信息上传到阿里云的云端平台设备,但是后端会被挤掉线的问题的解决方式:

以下是相关记录

  1. 解决了后端连接阿里云物联网平台掉线问题,能够收到真实设备所发的信息

解决方式:

a.在阿里云物联网平台使用同一个产品密钥又再建立了一台新设备,将真实设备传到的阿里云端(之前建好设备)的消息再进行一次转发到新设备,使后端连接这台新备进行消息接收并且不会掉线。

b.后端接收消息流程如下(采用MQTT协议,只允许一对一的连接,若有多个连接,会把先连接的下线掉):

阿里云创建

首先创建一个产品,用于测试使用,直接选择一个标准品类,品类有温度和湿度属性(实际使用需要按需求自定义产品),节点类型为了方便选的直连设备。

产品创建完成之后点击查看,点击功能定义模块,编辑草稿,添加刚才选择的标准产品的两个标准功能,也可以添加自定义功能看自己选择,这边只使用温度和湿度。

发布完成之后进入Topic 类列表的自定义Topic 部分

定义一个Topic类,便于后面通过该Topic流转到服务器端,操作权限为发布和订阅,命名为tento(按照自己需求命名),点击确认就定义完成了。

之后为这个产品添加两个设备(一个真实设备,一个服务器设备(一个用来收真实设备的信息,一个用来将真实设备的信息转过来节接收)),实际使用可以创建多个真实设备,数据流转到一个服务器设备中就可以了,为了方便这边只创建两个设备测试。直接添加,DeviceName让他随机生成。

创建一个解析器(在云产品流转那里)

点击查看这个数据源,添加Topic,因为我要获取真实设备的数据,所以选择物模型数据上报的Topic,设备DeviceName选择刚才创建的真实设备,最后选择post。这样数据源就完成了

然后进入数据目的,点击关联数据目的

和刚才操作类似点击关联数据目的—->创建数据目的,产品选择我们一开始创建的产品,操作为发送到另一个Topic。

最后是解析器脚本,会有一个草稿,脚本中的writeIotTopic(1004),1004是自动生成的,自己的代码不要改这个

改为

只更改了/k1a8gKQzYMD/ejP0IrtXk49UIMz7Wsn1/user/tento是刚才咱们自定义的Topic,k1a8gKQzYMD为产品的ProductKey,ejP0IrtXk49UIMz7Wsn1为服务端设备的DeviceName,点击发布就完成了这个解析器,解析器一定要点击启动才会生效。

测试

开两个设备模拟器

真实设备端

服务器端

服务器端订阅刚才自定义的Topic

点击订阅之后,右边日志会显示订阅的Topic (订阅这一步不能省)

再回到真实设备的模拟器(服务器模拟器不要关开两个网页),输入温度湿度数据之后,点击提交,模拟真实设备提交数据。

真实设备提交数据之后,刚才服务器设备的模拟器订阅了这个消息,就会收到消息。

消息中包括刚才真实设备上传的温度湿度,还包括真实设备的deviceName,这样如果多个真实设备上传数据,全部流转到服务器端,服务器端就是知道真实设备是哪一个,上传的数据是多少。


实战后端接入物联网API
http://blog.hrseno.cn/2024/11/16/物联网API接入后端/
作者
黄浩森
发布于
2024年11月16日
许可协议