nodemcu通过MQTT协议进行通讯
2017-03-18 17:35
381 查看
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文档。项目中给出了三种定制固件的方法,这里采用最简单的一种,云定制,可以访问云定制网站通过以下步骤来定制。
填写邮箱以便接收定制好的固件;
选择分支,这里选master;
勾选需要定制的模块,这里选择勾上cjson, file, gpio, mqtt, net, node, tmr, uart, wifi;
勾上加密传输;
点击按钮提交,开始编译固件。
登陆你填写的邮箱,大概十分钟左右就能接受到邮件,告诉固件和下载工具的下载地址
下载固件到nodemcu
这是使用ESP8266Flasher来下载固件,打开软件后,在“config”中选择要下载的固件。在“operation”中选择串口号,点击“flash”即开始下载。上传脚本到nodemcu
为了查看效果,这里需要专用串口调试软件ESPlorer,打开软件后,选择串口号和波特率,点击“open”开始连接,点击开发板上的复位按钮,软件中打印出固件的一些信息。在左边的编辑区中新建脚本文件“mqtt.lua”,编辑脚本如下
点击“save to esp”完成脚本上传。
使用相同方法将“mqtt.lua”脚本上传到另一块开发板上,为了区别,最好将客户端id修改一下,这里修改成“nodemcu2“。
连接MQTT服务器并测试
在服务器上开启代理服务mosquitto -v
在开发板1和2上再次执行”mqtt.lua”,确保连接服务器成功,如下
在右下角的命令框中输入
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收到的效果如下
开发板2收到的效果如下
而服务器端的效果如下
总结
从以上的实际操作中可以看到,在nodemcu间可以通过MQTT协议进行消息传输。当然,不仅仅是nodemcu之间,还可以是其它可以实现mqtt协议的客户端,比如说安卓手机等嵌入式设备。举一个例子,在安防应用中,如果有nodemcu的烟雾传感器节点,如果有报警发生,可以推送消息到订阅该主题的手机,那么从手机上就能立马知道发生了报警,并做出相应处理相关文章推荐
- 【物联网云端对接-3】通过MQTT协议与微软Azure IoT Hub进行云端通信
- 【物联网云端对接-2】通过MQTT协议与阿里云物联网套件进行云端通信
- 【物联网云端对接-2】通过MQTT协议与阿里云物联网套件进行云端通信
- 8226基于nodemcu通过mqtt协议发送接收消息
- 【物联网云端对接-4】通过MQTT协议与百度云进行云端通信
- 【物联网云端对接-3】通过MQTT协议与微软Azure IoT Hub进行云端通信
- 【物联网云端对接-2】通过MQTT协议与阿里云物联网套件进行云端通信
- 【物联网云端对接-4】通过MQTT协议与百度云进行云端通信
- Android通过https协议与服务器端进行通信
- 基于SPP协议,通过iphone蓝牙与经过苹果MFI授权认证的硬件通讯,传输图片
- 通过NTP协议进行时间同步
- Flex 与 Asp.Net 通过 Remoting 方式进行通讯 (四)
- 程序使用 HTTP 协议和服务器交互主要是进行数据的提交,通常数据的提交是通过 GET 和 POST 两种方式来完成
- (java)在两台已知Ip的电脑间,使用UDP协议进行通讯
- 蓝牙笔和手机通过蓝牙协议的通讯 通过蓝牙笔点击杂志上印刷的电影,手机上播放点中的电影应用
- [原创]Flex 与 Asp.Net 通过 Remoting 方式进行通讯 (二)
- 原创]Flex 与 Asp.Net 通过 Remoting 方式进行通讯 (一)
- 如何通过序列化在网络间传递对象,网络协议:轻松定义自己的网络通讯协议
- 通过NTP协议进行时间同步
- Flex与ASP.NET通过Remoting方式进行通讯