mqtt
首先创建一个设备,然后自定义topic,为什么要自定义topic。因为,这样的好处就是不要按json格式书写。
然后我找到了阿里云联网平台
在服务端订阅中,我发现有MNS服务端订阅,和AMQP服务端订阅,看了一下我选择了比较简单的MNS服务端订阅;
照着教程做啊做啊,我发现一个问题,下位机的数据是可以发上来的,但是数据乱码了,由于,刚刚开始我下位机发送上来的数据是json数据,所以乱码的数据特别长,所以,刚刚开始的时候一直找不到原因,后来通过找代码发现了一些问题;
如上文所示,他是将messageBodyAsBytes这个数组按照Base64进行解码,解码完后再用UTF-8进行生成字符串(这里传入的参数是utf-8)
但是,由于我也不知道是下位机上传上来的数据是什么格式,就感觉无从下手。
这时候,我用mqttfx代替下位机,来进行数据的发送,我发现数据可以接收
这时候,说明下位机和阿里云设备通讯是没问题的
这时候,我再启动java程序,再次发送20
结果如下:很显然,这边没有我需要的20这个数据
然后我去MNS这里面进行发送数据:
发送了一个20,结果如下
第一个message:代表的是默认会进行base64编码的,在按utf-8进行生成字符串,第二个代表的是,没有进行base64编码的,就直接按照utf-8生成字符串,所以,这个MjA= 刚刚好又等于刚刚收到的playLoad里面的值,所以很明显,要是处理这个问题的话,只需要将MjA= 先分割会byte[]数组,然后再按照base64进行编码,在生成字符串即可
代码如下:
结果如下: