基于MQTT协议的WZ指令开发-Arduino中文社区 - Powered by Discuz! Archiver

极客阿正 发表于 2019-2-15 13:39

基于MQTT协议的WZ指令开发


---
title: 基于MQTT协议的WZ指令开发
tags: WZ指令
date: 2018-10-11 10:53:00

---
![](https://i.loli.net/2019/02/14/5c6586ba6d596.png)

> 这是一款真正的基于MQTT的AT指令

> 基于MQTT协议的MCU通讯指令-WZ指令
2.0版本已完结,可用于STM32的数据发送。
名称:基于MQTT的万能AT指令(名称来源于本人名字故取名为WZ指令)
特点:   简单到只需要一行代码就可以将数据点推送至MQTT服务器   可用于个人EMQ服务器,或者树莓派搭建的局域网服务器(暂不支持onenet等商用平台)
默认端口:1883   
同时支持微信配网、安卓APP配网,支持掉电存储、支持用户名密码校验、   支持wifi掉线重连、支持服务器掉线重连。
版本号:V2.0
作者:阿正
网站:wenzheng.club
固件可以加群下载:476840321

<!--more-->


>

1. 目前市面上能找到的兼容MQTT的AT指令少之又少
2. 而且安信可和乐鑫官方也没有开发这个AT指令,基本上都是基于MCU端的处理,同时MQTT是基于TCP转化而来,
3. 如果想要用MQTT就把TCP数据封包成为MQTT协议,就可以用TCP发出MQTT的数据。

> 这是arduino中文社区的一篇帖子,感觉讲的非常好


> (https://www.arduino.cn/thread-82851-1-1.html)
---
> 我的方法,与上面的方法不同,我是从用户端的逻辑来进行的操作,以至于达到了很好的用户体验!

最终效果:

> 使用说明:

```
****************************
名称:基于MQTT的万能AT指令(名称来源于本人名字故取名为WZ指令)
特点:
   简单到只需要一行代码就可以将数据点推送至MQTT服务器
   可用于个人EMQ服务器,或者树莓派搭建的局域网服务器(暂不支持onenet等商用平台)
   默认端口:1883
   同时支持微信配网、安卓APP配网,支持掉电存储、支持用户名密码校验、
   支持wifi掉线重连、支持服务器掉线重连。
版本号:V2.0
作者:阿正
网站:wenzheng.club
*****************************
烧写位置:0x00000000
建议将ESP01清除缓存后再烧写
配网:微信智能配网(或者安卓APP配网),可掉电存储,不需要AT指令单独配置。
AT指令:仅此一条json数据,没有繁琐的其他配置环节,简单粗暴
{"wz":"wenzheng.club","server":"60.205.203.64","user":"admin1","password":"public","topic":"20190213134505","message":"test2019"}
AT指令说明:
1、"wz":"wenzheng.club" 为必填项!无此字段无法使用此指令。
2、服务器连接:第一次发送这条AT指令时会进行服务器连接,
3、消息发布:后续发送这条AT指令则代表发送指定主题的消息。message目前最大支持200字节。
3、主题订阅:目前暂不支持用户自定义订阅主题,
   但是系统开机默认订阅主题名为:wz_server 的主题!
4、消息接收:wz_server 发布的消息会在串口中打印出来,
   如:WZ:
   用户可对此进行处理然后执行相关动作。
   后续版本会支持用户自定义。
代码举例:
**arduino**
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println({\"wz\":\"wenzheng.club\",\"server\":\"60.205.203.64\",\"user\":\"root\",\"password\":\"citc2018\",\"topic\":\"ZX1040300101000\",\"message\":\"T:226;H:232;\"}");
//真正的只需要一行代码实现数据发送!!用户只需要拼接字符即可!
delay(1000);
}
**STM32**
单片机配置好串口直接
printf("{\"wz\":\"wenzheng.club\",\"server\":\"60.205.203.64\",\"user\":\"root\",\"password\":\"citc2018\",\"topic\":\"ZX10403001010000\",\"message\":\"T:226;H:232;\"}");
即可!
///**************///
更新日志:
2019年2月13日晚上制作V2.0版本
添加mqtt_user验证
添加mqtt_passward验证
2019年2月13日上午制作V1.0版本
实现基本通讯
2019年初有初步想法
```

> STM32串口测试:

![](https://i.loli.net/2019/02/14/5c652b20e7556.jpg)
> arduino串口测试



![](https://i.loli.net/2019/02/14/5c652be3bb8d8.jpg)

> 总结,经过我的测试,还是相对稳定的,无论是Arduino还是STM32进行数据发送,都是可以的。经测试Arduino不间断发送3000+数据,服务器接收依然正常!

极客阿正 发表于 2019-2-16 18:42

哦123456789

极客阿正 发表于 2019-2-19 13:36

现已更新V3.0 已支持一行代码连接onenet!

极客阿正 发表于 2019-2-19 13:38

更新V3.0   WZ指令V3.0

极客阿正 发表于 2019-2-19 13:39

直达连接:http://wenzheng.club/
视频介绍:https://www.bilibili.com/video/av44025282/
页: [1]
查看完整版本: 基于MQTT协议的WZ指令开发