nodemcu通过MQTT协议进行通讯

nodemcu介绍

nodemcu是一款开源快速硬件原型平台,包括固件和开发板,用几行简单的Lua脚本就能开发物联网应用。特点包括开源,交互式,可编程,低成本,简单,智能,WI-FI硬件。
最新版的nodemcu开发板是基于ESP-12E的,具有GPIO、PWM、I2C、1-Wire、ADC等功能。

实物图

新版引脚图

更对关于nodemcu的介绍可以参考其中文官网,或者其在Github上的地址。

nodemcu固件定制

nodemcu采用Lua脚本作为编程语言,在使用之前需要定制需要使用的模块,比如gpio,wifi,net,mqtt等,更多模块介绍和使用请参考nodemcu的API文档。
项目中给出了三种定制固件的方法,这里采用最简单的一种,云定制,可以访问云定制网站通过以下步骤来定制。

  1. 填写邮箱以便接收定制好的固件;
  2. 选择分支,这里选master;
  3. 勾选需要定制的模块,这里选择勾上cjson, file, gpio, mqtt, net, node, tmr, uart, wifi;
  4. 勾上加密传输;
  5. 点击按钮提交,开始编译固件。

nodemcu通过MQTT协议进行通讯_第1张图片

登陆你填写的邮箱,大概十分钟左右就能接受到邮件,告诉固件和下载工具的下载地址
nodemcu通过MQTT协议进行通讯_第2张图片

下载固件到nodemcu

这是使用ESP8266Flasher来下载固件,打开软件后,在“config”中选择要下载的固件。在“operation”中选择串口号,点击“flash”即开始下载。
nodemcu通过MQTT协议进行通讯_第3张图片

上传脚本到nodemcu

为了查看效果,这里需要专用串口调试软件ESPlorer,打开软件后,选择串口号和波特率,点击“open”开始连接,点击开发板上的复位按钮,软件中打印出固件的一些信息。
nodemcu通过MQTT协议进行通讯_第4张图片

在左边的编辑区中新建脚本文件“mqtt.lua”,编辑脚本如下
nodemcu通过MQTT协议进行通讯_第5张图片

点击“save to esp”完成脚本上传。

使用相同方法将“mqtt.lua”脚本上传到另一块开发板上,为了区别,最好将客户端id修改一下,这里修改成“nodemcu2“。

连接MQTT服务器并测试

在服务器上开启代理服务

mosquitto -v

在开发板1和2上再次执行”mqtt.lua”,确保连接服务器成功,如下

nodemcu通过MQTT协议进行通讯_第6张图片

在右下角的命令框中输入

m:subscribe("blinkdr",0, function(conn) print("subscribe success") end)

并点击”send”发送命令到开发板,实现对主题”blinkdr”的订阅成功。分别对开发板1和2执行以上操作。

在开发板2的命令框中输入

m:publish("blinkdr","hello from nodemcu2",0,0, function(client) print("sent") end)

并发送命令,推送消息”hello from nodemcu2”到主题”blinkdr”,则所有订阅了该消息的设备都能接收到该消息。
同理可以从开发板1发送一条”hello from nodemcu1”到主题”blinkdr”。
则最终开发板1收到的效果如下
nodemcu通过MQTT协议进行通讯_第7张图片

开发板2收到的效果如下
nodemcu通过MQTT协议进行通讯_第8张图片

而服务器端的效果如下
nodemcu通过MQTT协议进行通讯_第9张图片

总结

从以上的实际操作中可以看到,在nodemcu间可以通过MQTT协议进行消息传输。当然,不仅仅是nodemcu之间,还可以是其它可以实现mqtt协议的客户端,比如说安卓手机等嵌入式设备。举一个例子,在安防应用中,如果有nodemcu的烟雾传感器节点,如果有报警发生,可以推送消息到订阅该主题的手机,那么从手机上就能立马知道发生了报警,并做出相应处理

你可能感兴趣的:(MQTT,nodemcu)