# WZ_AT_MQTT **Repository Path**: swamer/WZ_AT_MQTT ## Basic Information - **Project Name**: WZ_AT_MQTT - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-01-31 - **Last Updated**: 2022-01-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README --- title: 基于MQTT协议的WZ指令开发 tags: WZ指令 date: 2019-02-14 23:50: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 > 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) ![](https://i.loli.net/2019/02/14/5c652be3bb8d8.jpg) > 总结,经过我的测试,还是相对稳定的,无论是Arduino还是STM32进行数据发送,都是可以的。经测试Arduino不间断发送3000+数据,服务器接收依然正常!