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

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3635|回复: 4

基于MQTT协议的WZ指令开发

[复制链接]
发表于 2019-2-15 13:39 | 显示全部楼层 |阅读模式

[md]---
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](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:[Hello world!]
     用户可对此进行处理然后执行相关动作。
     后续版本会支持用户自定义。
  代码举例:
  **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+数据,服务器接收依然正常![/md]
 楼主| 发表于 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/
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-12-1 04:59 , Processed in 0.078737 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表