GPRS模组通过MQTT和阿里云服务器通讯



上一讲的文章,零妖带你玩了一下合宙的GPRS模组,通过在阿里云的物联网套件中添加一个设备,让GPRS模组通过AT指令的方法连接到了云端。

根据项目的规划,体重秤这个设备只需要上报体重和电池电压数据到云端即可。零妖马上就要说这些数据上报的方法。



进入阿里云的物联网套件控制台,找到了已经新建好的产品,点击查看,然后点击功能定义,再新增一个叫做电压的属性。

GPRS模组通过MQTT和阿里云服务器通讯

 
现在为止,云端的设置就已经完成了,体重秤这个设备被抽象为了两个数字,一个叫做体重,另一个叫做电压。

GPRS模组通过MQTT和阿里云服务器通讯

 



通过串口发送AT指令的方式让GPRS模组先连上服务器,方法上篇文章介绍过了。

好了,我直接连接上服务器了,接下来发送报文,这个可是个大麻烦啊,因为要发送的Payload是要符合ALink协议的,也就是一个JSON字符串,里面是有好几个双引号的,直接发送到模组它解析不了,得想个办法。

GPRS模组通过MQTT和阿里云服务器通讯

经过去合宙的技术人员那里取经,得到了一个有点反人类的解决方案。把payload里面的双引号全部替换为 22 ,把payload里面的逗号全部替换为 2c 即可。比如下面这个消息发到云端就是OK的。

AT+MPUB="/sys/b1ml74qmzEq/bVp5ywOE4y3fHUMAPCGw/thing/event/property/post",0,0,"{22id22 :22789222c22version22:221.0222c22params22:{22Weight22:85.752c22Battery22:3.03}2c22method22:22thing.event.property.post22}"

上述消息通过串口发送出去之后,马上就可以在云端看到效果。

首先要注意一下串口返回的数据,一共是437个字节,包括你发送的命令原封不动的和服务器返回的,这个是阿里云返回给你的状态,告诉你发送数据是不是OK的,比如截图上面的这个 code是200,表示一切正常。

GPRS模组通过MQTT和阿里云服务器通讯

 
再看一下云端,是能够显示出来接收到的数据。比如上述发送的串口内容里面,有个这样的内容:{22Weight22:85.752c22Battery22:3.03},这个就是所谓ALinK协议的用法了,非常简单的。

翻译成JSON字符串的格式就是:{“Weight”:85.75,”Battery”:3.03}。容易理解吧?不就是重量85.75公斤,电量3.03V嘛。
如果你是单片机处理的这个事情,你只需要修改一下这个85.75为实际测量值,3.03为实际测量值就行了。

GPRS模组通过MQTT和阿里云服务器通讯

 



如果你能够在云端看到那个有效数据,就证明这个AIR202模组连接阿里云的方法你已经掌握了。AT指令的通讯模式非常容易理解,不用你再去关心MQTT的实现细节问题,你看,几个串口通信的内容而已,你就能让设备快速上云了!

无需输入账号密码,插上电就能上云的方法已经教给你了啊,往哪里用就看你的创造力了。体重秤的核心业务是称重,下一章内容就研究一下体重传感器和单片机的配合方法,有点偏硬件不过会更有趣。

微信公众号,偶尔更新。

GPRS模组通过MQTT和阿里云服务器通讯

 

上一篇:AliOS Things 完成第一个应用:Hello World


下一篇:(DirectX系列08)DirectShow WavDest编码分析