##MQTT简介

最近在研究mqtt协议,这是IBM公司发布的适用于物联网通信的协议,基于订阅/发布消息,可以高效的完成设备和设备间的数据传输。随即便有了用mqtt做智能设备的想法,大体框架是用手机上浏览器网页,控制家里的灯和读取温湿度计的信息。

##结构

这里的控制端是用MQTT.JS做的web页面

这里的被控端是ESP8266,用的是Nodemcu框架

接下来是结构图:

架构图.png

首先是MQTT 代理,代理作为中间人,负责与客户端直接交换和处理信息

接着是控制面板,负责给被控制设备(图中深黄色)下达指令

然后是彩灯、温湿度计、智能插座,这些都是被控制的设备,负责响应来自控制面板的数据

最后是MQTT助手,助手是辅助控制面板的重要角色,比如客户端的在线情况,在这里客户端的在线情况不是由MQTT代理来处理,而由一个间接的MQTT助手处理

##搭建MQTT Broker

MQTT Broker使用EMQX,EMQX的前身是emqttd,这是一款国人开发的MQTT代理软件,自带中文Dashboard特别方便,具体文档可以参考这里

Dashboard截图.png

具体的安装过程可参阅这里

安装好后,启动方式有三种,任选其一即可:

  • 直接启动:
$ emqx start
emqx 3.1.0 is started successfully!

$ emqx_ctl status
Node 'emqx@127.0.0.1' is started
emqx v3.1.0 is running
  • systemctl 启动
$ sudo systemctl start emqx
  • service 启动
$ sudo service emqx start

程序启动后,可以使用以下命令来检测运行状态

./bin/emqx_ctl status