Esp8266进阶之路⑨ 【小实战上篇】Windows系统搭建8266的本地Mqtt服务器,局域网点亮一盏LED灯。(带Demo)


  • 本系列博客学习由非官方人员 半颗心脏 潜心所力所写,不做开发板。仅仅做个人技术交流分享,不做任何商业用途。如有不对之处,请留言,本人及时更改。
序号 SDK版本 内容 链接
1 nonos2.0 搭建开发环境,开始一个“hellow world”串口打印。 点我访问
2 nonos2.0 利用GPIO开始使用按钮点亮你的“第一盏灯。 点我访问
3 nonos2.0 利用 "软件定时器 " 定时0.5秒闪烁点亮一盏LED。 点我访问
4 nonos2.0 用PWM控制一盏LED的亮度变化。 点我访问
5 nonos2.0 SDK高级使用之封装Post与Get请求云端,拿到“天气预报信息”。 点我访问
6 nonos2.0 了解 SmartConfig与Airkiss一键配网,给8266配网上云端。无需把wifi名字密码写在固件里。 点我访问
7 nonos2.0 了解 softAP热点配网模式原理,仿“机智云”定义自己的热点配网模式协议。 点我访问
8 nonos2.0 你要找的8266作为UDP、TCP客户端或服务端的角色通讯,都在这了。 点我访问
9 nonos2.0 [小实战上篇]Windows系统搭建8266的本地Mqtt服务器,局域网点亮一盏LED灯。 点我访问
10 nonos2.0 [小实战下篇]Windows系统搭建8266的本地Mqtt服务器,局域网点亮一盏LED灯。 点我访问
11 rtos2.0 接入阿里智能,点亮一盏LED灯,期待天猫精灵语音控制的不约而至! 点我访问
12 nonos2.0 图文并茂学习阿里云主机搭建8266MQTT服务器,实现移动网络远程控制一盏LED。 点我访问
13 nonos2.0 动手做个8266毕设小案例,smartConfig + MQTT协议轻松实现远程控制一盏LED。 点我访问
14 rtos2.0 FreeRtos系统学习的正确姿势 ------ 环境搭建、烧录。 点我访问
15 rtos2.0 接入阿里云平台非阿里智能的SDS服务,点亮一盏LED灯。 点我访问
16 nonos2.0 基于Nonos移植红外线H1838,实现红外遥控器配网,远程控制一盏灯。 点我访问
17 nonos2.0 esp8266自研的快速上电开关五次 (开-关为一次) ,无需按键触发则8266进去一键配网模式。 点我访问
18 nonos2.0 基于NONOS 实现 OTA 远程升级,实现无线“ 热修复 ”升级固件程序。 点我访问
19 nonos2.0 驱动 ds18b20、dht11 温湿度传感器,采集温湿度传感器到服务器。 点我访问
20 nonos2.0 深入学习esp8266的esp now模式,仿机智云做一个小网关,实现无需网络下轻松彼此连接通讯交互数据。 点我访问
21 nonos2.0 浅谈 esp8266 如何在本地局域网网络情况下实现最大效率地和前端实现数据交互。 点我访问
22 nonos2.0 esp8266的工程如何添加第三方静态库文件以及如何自定义文件夹,聊聊那些makeFile的事 点我访问
23 nonos2.0 再来一波 esp8266 基于 freeRtos系统连接自己私有的服务器实现OTA远程升级,接触下 lwip的基本知识。 点我访问
24 nonos2.0 渗透学习回顾下esp8266的外置spi芯片25q系列,熟悉8266代码块在其的分布,得心应手放置图片或其他资料。 点我访问
25 rtos2.0 深聊下esp8266的串口 Uart 通讯中断编程,为您准备好了 NONOS 版本 和 RTOS 系统的串口驱动文件。 点我访问
26 nonos2.0 RTOS分析 MQTT 实现过程,实现移植 MQTT协议在 esp8266 rtos实时系统,可断线重连。 点我访问
27 rtos3.0 跟紧脚步,用VisualStudio Code开发 esp8266 rtos SDK v3.0版本,全新的 idf 框架,节省内存模块化开发。 点我访问
28 rtos3.0 教你轻松自如使用cJson在乐鑫 esp8266 如何解析一段json数据以及如何生成一段json数据。 点我访问
29 rtos3.0 百万条消息免费之使用TCP直连模式MQTT协议接入阿里云物联网平台,支持私家服务器对接支持阿里云规则引擎。 点我访问
30 rtos3.0 SDK编程使用 IIC总线驱动 0.96寸的OLED显示屏,显示天气预报信息。 点我访问
31 rtos3.0 当esp8266遇到 Html,该怎么内置网页控制设备,理清内置网页的实现过程,实现无需路由器手机也可以控制esp8266。 点我访问
32 rtos3.0 细聊HmacMD5的加密方法带来的安全性,并实践在esp8266上,最大保障传输的过程的信息的安全性。 点我访问
33 rtos3.0 如何优雅地像乐鑫原厂封装esp8266底层寄存器的逻辑思维,做成自己的静态库库文件,让第三方人使用? 点我访问
34 nonos3.0 编程使用 SPI 驱动基于Max7219芯片的八位数码管,显示日期信息。 点我访问
35 nonos3.0 借助机智云平台做一个商业化的七彩RGB灯泡可调整体方案项目,炫彩夺目高大尚。 点我访问
36 rtos3.0 认识Rtos 3.0 sdk 工程结构,如何向esp-idf工程靠近的,如何自定义头文件编译? 点我访问
37 rtos3.0 你要找的基本外设功能都在这里了,包括Gpio、Pwm 和 Uart 接口使用。 点我访问
38 rtos3.0 一篇文章带你搞掂存储技术 NVS 的认识和使用,如何利用NVS保存整型、字符串、数组以及结构体。 点我访问
39 rtos3.0 带你捋一捋市面上的微信公众号配网智能设备 esp8266 并绑定设备的过程,移植并成功实现在 esp8266 rtos3.1 sdk。 点我访问
40 rtos3.0 基于乐鑫idf框架,研究出超稳定、掉线重连、解决内存泄露问题的Mqtt框架!支持esp8266和esp32! 点我访问
41 rtos3.0 esp8266-12模块基于rtos3.1版本ota功能远程空中升级固件,官网基础之上增加dns域名解析! 点我访问
42 rtos3.0 我又来了,基于rtos3.0版本 SDK编程 SPI 驱动 ws2812b 七彩灯,代码全部开源奉献给你们! 点我访问
43 rtos3.0 基于rtos3.0版本扫描周围获取附近可用的 Wi-Fi 热点路由器信息,同样适合esp32。 点我访问
44 rtos3.0 整理分享那些我在项目中常用的esp8266 rtos3.0版本的常见驱动,Button按键长短按、PWM平滑调光等。 点我访问
45 rtos3.0 内置仅1M的Esp8285,如何攻破最棘手的OTA问题,大大节省资源成本开发产品 点我访问
46 rtos3.0 详细分析Esp8266上电信息打印的数据,如何做到串口通讯上电不乱码打印; 点我访问
47 rtos3.0 无需外网,如何实现在本地局域网与控制端做数据交换的一些开发经验; 点我访问
48 rtos3.0 迟来的1024程序员祝福,开源分享一个驱动 ds18b20 获取温度的工程。 点我访问
49 rtos3.2 aliyun sdk 直连接入阿里云物联网平台,实现天猫精灵找队友零配网功能和语音控制。 点我访问
持续更新,欢迎关注我,QQ群讨论群:434878850

  • 很多人怎么联系我一起学习进步,下面打个小小公告和干货无偿分享:

玩转esp8266带你飞、加群付费QQ群,提高门槛,不喜的朋友勿喷勿加:434878850
esp8266源代码免费学习汇总(持续更新,欢迎star):https://github.com/xuhongv/StudyInEsp8266
esp32源代码免费学习汇总(持续更新,欢迎star):https://github.com/xuhongv/StudyInEsp32


目录:

一、前言。


郑重说明:本篇博文的项目,只有在本地下可控制,移动网络不可以控制,因为服务器是部署在本地的!也就是8266和电脑连接在同一个网关路由器下。


  • 小项目前需要做好以下基本认识:

  • ①、8266需要集成MQTT协议。

  • ②、控制端需要集成MQTT协议。包括 web端、ios端或android端。

  • ③、本博文选择的服务器选择的是免费的、开源的和好用的MQTT服务器EMQ:http://emqtt.com


1.1 初认识MQTT协议。


问题 ①、MQTT协议究竟是怎么样的一个协议?好处是什么?

  • 答: MQTT是IBM开发的一个即时通讯协议。MQTT是面向M2M和物联网的连接协议,采用轻量级发布和订阅消息传输机制。总的来说,就是因为集成简单,消息发布接收迅捷,适合在硬件这些本来有些的空间开发,实现远程控制。

问题 ②、MQTT协议怎么发,怎么收?怎么把消息指定发送到指定的用户?

  • 答:为了说明方便,我特意画了一张图:如果图片看不清,设置浏览器缩放大小,把图片放大。

  • 这里写图片描述


二、 Windows系统上集成MQTT服务器。


2.1 下载压缩包。

前往EMQ下载地址:http://emqtt.com/downloads ,下载您的系统的版本,一般选择稳定版。目前的稳定版最新版是:2.2.0 。本博文用的是2.2.0版本。

2.2 解压并运行。

解压到不带中文字符的目录下,打开Windows的命令行窗口,CD到解压后的目录bin,执行命令:emqttd console,如果启动成功,会弹出控制台窗口。截图如下:

Tips:比如我的解压之后这目录 F:\MQTT\emqttd\bin,那么这样用(如果到最后一步没有回应,那就关闭窗口,再执行这样的操作!一般系统卡顿会造成没响应!):

C:\Users\xuhong>F:
F:>cd \MQTT\emqttd\bin
F:\MQTT\emqttd\bin>emqttd console

  • 注意CD的路径要和解压之后的包一致。
  • 启动成功的弹窗会出现以下代码信息:
dashboard:http listen on 0.0.0.0:18083 with 2 acceptors.
mqtt:tcp listen on 127.0.0.1:11883 with 16 acceptors.
mqtt:tcp listen on 0.0.0.0:1883 with 16 acceptors.
mqtt:ws listen on 0.0.0.0:8083 with 4 acceptors.
mqtt:ssl listen on 0.0.0.0:8883 with 16 acceptors.
mqtt:wss listen on 0.0.0.0:8084 with 4 acceptors.
mqtt:api listen on 127.0.0.1:8080 with 4 acceptors.
emqttd 2.2 is running now


这里写图片描述


2.3 后台进去管理界面。

在浏览器打开本地网址:http://127.0.0.1:18083 ,这个网址也可以从上面的弹窗出得到!如图,提示输入账户密码,默认是账户名 admin ,密码public ,输入点击登录。

这里写图片描述


2.4 管理界面说明。

如下所示,说明您已经大功告成!

这里写图片描述


三、 8266上集成MQTT协议。


3.1下载官方工程demo并配置。


  • 因为乐鑫的SDK的demo已经有MQTT协议的代码了,所以我们拿过来,进一步改下配置就可以啦!下载地址:https://github.com/espressif/ESP8266_NONOS_SDK

  • 下载之后就是个压缩包,解压之后,我们首先要做的导入到安信可IDE,(我一直用的是安信可IDE)。

    • 第一步:导入之后,其中给「dirver_lib」文件下面的Makeflie添加bak删除。

    • 第二步:从「example」文件夹中拷贝esp_mqtt_proj文件夹到主目录,截图如下第一张图 , 点击编译按钮,看控制台的 Console 的信息,如果不报错就完成了。恭喜,集成环境第一步完成!

    • 第三步:打开【esp_mqtt_proj】目录下的 mqtt_config.h 文件,截图为下面的第二张图,修改如下:


①、 把STA_SSID和STA_PASS修改为自己路由器的WiFI名和密码;

②、修改MQTT_USER和MQTT_PASS为对应的MQTT服务器的用户名和密码,EMQ服务器默认是admin 和 pubilc;

③、 修改MQTT_HOST和MQTT_PORT为MQTT服务器IP和PORT,目前是使用本地的MQTT服务器,所以是修改为自己电脑的IP地址,注意不是 : 127 . 0 . 0 . 1MQTT_PORT :1883,关于怎么获取本地的Ip地址,另行百度!;

④、根据MQTT服务器的协议不同,可能需要使用MQTT v3.1.1版本,所以把PROTOCOL_NAMEv31注释掉,使用PROTOCOL_NAMEv311。源码的PROTOCOL_NAMEv311前面没有#define,自己加上就行。

⑤、最后,修改CFG_HOLDER,以让这些配置生效,**直接给原来CFG_HOLDER定义的数值1加后:0x00FF55A5 即可。 **


这里写图片描述


这里写图片描述


上图的IPv4的地址就是下面的HOST主机的地址哈!


这里写图片描述


3.2 配置完毕,烧录和看串口打印信息。


  • 在user_main.c文件里面有以下一个方法,订阅了3个主题,同时发布了三则消息到服务器,打印串口如下:
void mqttConnectedCb(uint32_t *args)
{
    MQTT_Client* client = (MQTT_Client*)args;
    INFO("MQTT: Connected\r\n");
   //订阅了一个主题: "/mqtt/topic/0"
    MQTT_Subscribe(client, "/mqtt/topic/0", 0);
    //订阅了一个主题: "/mqtt/topic/1"
    MQTT_Subscribe(client, "/mqtt/topic/1", 1);
    //订阅了一个主题: "/mqtt/topic/2"
    MQTT_Subscribe(client, "/mqtt/topic/2", 2);

    //发布了一则消息,主题是"/mqtt/topic/0",消息是"hello0"
    MQTT_Publish(client, "/mqtt/topic/0", "hello0", 6, 0, 0);
    //发布了一则消息,主题是"/mqtt/topic/01",消息是"hello1"
    MQTT_Publish(client, "/mqtt/topic/1", "hello1", 6, 1, 0);
    //发布了一则消息,主题是"/mqtt/topic/2",消息是"hello2"
    MQTT_Publish(client, "/mqtt/topic/2", "hello2", 6, 2, 0);

}

这里写图片描述


3.3 在服务器查看这设备的消息。


打开网址 http://127.0.0.1:18083 ,账号 admin ,密码 public 。


点击 Session ,可以看到我们的8266的相关消息,我们看到ID已经在这里,说明已经连接成功。

这里写图片描述


点击 Topic ,可以看到全部的主题订阅情况。
这里写图片描述


使用小工具,我们可以验证下8266是否推送消息到达服务器?

  • 选择webSocket ,订阅主题是 /mqtt/topic/0 ,也就是8266刚刚发布的消息的主题,重启下8266,让它发送一下至服务器!观察右下角的Message!

这里写图片描述


四 其他。


故障一:串口打印不断出现以下信息时,莫急莫急!这个是你的HOST地址出错了,请认真再一次核对HOST地址是否和电脑的IPv4地址一致?

your ESP SSL/TLS configuration is -134.[0:NO_TLS	1:TLS_WITHOUT_AUTHENTICATION	2ONE_WAY_ANTHENTICATION	3TWO_WAY_ANTHENTICATION]
TCP: Connect to ip  127.0.0.1:1883
TCP: Reconnect to: 127.0.0.1:1883
TCP: Reconnect to 127.0.0.1:1883

故障二:每次修改配置信息时候,发现都不执行配置信息的代码?那是因为这个Demo是加载到flash的,你要在mqtt_config.h的 宏定义CFG_HOLDER 的值改变一下,加一或减一即可!切记切记! :

#define CFG_HOLDER    0x00FF55A2   


  • 本篇硬件的Demo下载:http://download.csdn.net/download/xh870189248/10154482

发布了155 篇原创文章 · 获赞 817 · 访问量 83万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 猿与汪的秘密 设计师: 上身试试

分享到微信朋友圈

×

扫一扫,手机浏览