[网络篇]ESP8266-SDK教程(八)之物联网标配MQTT服务端软件

0.257字数 2155阅读 154

我们在上一篇文章中了解了什么是MQTT,以及MQTT是如何工作的,本篇文章我们将通过实际的例子去测试一下,我将会在Ubuntu上搭建MQTT服务器以及实际演示MQTT主题机制是如何工作的。

开始之前我们先了解一下目前比较流行的MQTT开源服务器软件有哪些,以及每一个的优缺点,其实我也就知道两款~各自有自己的侧重吧感觉,下面我们来看一下:

emqx-Github​github.com

EMQ - 百万级开源物联网MQTT消息服务​www.emqtt.com
图标
EMQX - Home​www.emqx.io
图标

上面这个应该算是比较出名好用的一款MQTT开源服务器软件了,社区版免费使用,是一个杭州的团队开发的,目前在Github上的开源仓库也是有4000+的stars,先看几张图来了解一下:

image

<figcaption style="margin-top: 0.66667em; padding: 0px 1em; font-size: 0.9em; line-height: 1.5; text-align: center; color: rgb(153, 153, 153);">eMQ-简介</figcaption>

image

<figcaption style="margin-top: 0.66667em; padding: 0px 1em; font-size: 0.9em; line-height: 1.5; text-align: center; color: rgb(153, 153, 153);">eMQ-特点</figcaption>

目前最新版本是3.0.1(时间:2019-02-15),貌似命名方式相比我以前刚开始接触的时候也有所改变,现在叫EMQX,全面支持MQTT V5、MQTT V3等多种通信协议,具体可以看下图了解:

image

感兴趣的可以去项目主页了解更多,我这里就不再细写很多了,总之这是一个非常好用的一款MQTT消息服务器软件,大家可以根据需要自行了解一下,下载安装地址戳卡片,大家可以根据自己机器的平台自行安装,如果有自己的云服务器就更好了,请根据自己的系统和版本自行下载:

https://www.emqx.io/downloads/emq/broker​www.emqx.io

下面我们再来看另外一款:

eclipse/mosquitto​github.com

https://mosquitto.org/​mosquitto.org
图标

这是一款Eclipse 团队开发的超轻量级的软件,安装大小仅有几百KB,当然如此轻量级功能上是没有EMQX那么强大了,仅支持MQTT V3协议,不过做测试还是比较好用的,不用在自己的机器上起一个像EMQX那么大的服务,官网也没做太多的介绍,只有一个简短的介绍,大家可以看一下下图:

image

个人感觉Mosquitto还是比较好用的,我一般做本地测试都是使用Mosquitto,而且可以安装到树莓派上,在局域网内搭建一个小型的MQTT消息服务器,这样就可以控制一些局域网内的设备了,不需要依赖云服务器也不用某台电脑一直开机,后期我会跟大家分享如何在局域网内大家自己的智能家居小系统,敬请期待哟,下载安装地址戳卡片,请根据自己机器的系统选择下载安装:

Download​mosquitto.org


相信通过上边一些简短的介绍,你已经有所了解了,那么我们开始安装测试,这里我先安装一下Mosquitto来实际测试一下,安装也非常简单,如果你是windows系统请在上面给出的链接中直接下载安装包进行安装,别的系统基本都可以通过命令行进行安装,我这里以Ubuntu 16.04进行安装测试。

我们先来安装所需要的软件:

sudo apt-get install mosquitto

image

<figcaption style="margin-top: 0.66667em; padding: 0px 1em; font-size: 0.9em; line-height: 1.5; text-align: center; color: rgb(153, 153, 153);">ubuntu 16.04 安装Mosquitto server</figcaption>

sudo apt-get install mosquitto-clients

image

<figcaption style="margin-top: 0.66667em; padding: 0px 1em; font-size: 0.9em; line-height: 1.5; text-align: center; color: rgb(153, 153, 153);">ubuntu 16.04 安装Mosquitto clients</figcaption>

第一条命令安装的是服务端程序,如果你不本地测试的话只安装服务端程序就好了,第二条命令是安装客户端,这个可以方便我们测试一下,后面我们会用ESP8266作为MQTT客户端去测试,安装完成后我们测试一下:

image

这里我是直接本机多个终端下和利用手机MQTT工具做了一下测试,大家可以看到,左上终端:

sudo service mosquitto status #start/stop/status
mosquitto_sub -t "/zhihu/IAMLIUBO" -v #订阅 “/zhihu/IAMLIUBO"主题

第一条命令是查看服务端程序运行状态,相信大家一看就懂,第二条命令是mosquitto clients客户端的命令,这条命令是订阅了一个主题,主题内容是 "/zhihu/IAMLIUBO"。

同样的右上终端同样的也是订阅了一个主题,其主题内容与左上终端不同,第二条消息是通过手机MQTT工具发送的,可能有人好奇怎么通过手机也可以呢?其实手机上的MQTT工具也连接到了这个Mosquitto server,此时手机与电脑必须要在同一个局域网内,然后我们还需要知道电脑的IP地址,MQTT服务的端口号是注册过的一般情况下都是1883,当然你也可以自行更改,我们这里只需要知道IP和端口号就行,用户名密码什么的,我们没有设置,所以暂时先不用管,大家可以自行下载一个MQTT工具,地址栏中填写电脑的IP地址,端口号填写1883就可以了,如下图:

image
image

第三个终端是分别向两个不同的主题推送了两条不一样的消息,在上面两个终端中也都打印了出来,可以看到我们在向"/zhihu/IAMLIUBO"主题推送的消息内容没有在订阅这个"/zhihu/imliubo"主题的终端中打印,这就是MQTT最重要的一个特性,所有消息的发送与接收都是以消息主题来区分的,明白了这一点后面开发就会更加顺手了。

下面我们再来安装EMQX,同样的我这里使用的是ubuntu,所以我下载好了适合我电脑系统的安装包就直接安装了,你可以在上面给出的链接中下载适合你机器的安装包直接安装就好:

image

我们在启用EMQX服务前记得先将Mosquito服务端程序杀掉,因为两个服务会占用同一个端口:

sudo service mosquitto stop
sudo service emqx status

image

成功开启EMQX服务后我们就可以向上面一样利用Mosquitto clients再测试一下了,测试方法与上面相同,这里就不在做演示了,这里要跟大家分享的是EMQX的web管理后台Dashboard,EMQX之所以安装包比较大是因为集成了很多非常好用的插件,就比如这个可视化管理后台,我们可以在地址栏中输入下面的地址查看:

http://localhost:18083

用户名和初始密码为:admin/public

image

这个管理后台同样集成了很多工具,大家可以安装好后自己尝试看一下都有哪些工具。

本篇文章到这就结束了,主要跟大家分享了一下两款MQTT服务端软件,主要也是为后面我们在ESP8266开发做好准备,学习MQTT通信,搭建消息服务器是必不可少的,我们可以利用一些免费的,当然我们也可以自己搭建一个属于自己的服务器,不过你看完了本篇文章自己搭建一个是完全没问题了,在云服务器也是同样的安装方式,大家如果有自己的云服务器就可以自己尝试一下了,在云服务器上搭建的好处就是不管你在哪都可以轻轻松松通过手机或者其他设备控制家里的设备了,因为有固定的IP了~如果是想单纯在家庭网络环境下开发的话,建议可以入手一个树莓派,后期我们可以将MQTT消息服务器搭建在树莓派上,改进一下卧室的灯,然后就再也不用起床关灯了~啊哈哈哈哈哈,是不是很爽呢?那就跟着我一起慢慢做下去吧!

文章有点长,难免有些疏漏和错误,还请大家及时指出我好改正~

最后希望大家star一下我的Github ESP8266仓库,近期会稍微加快更新例程的频率,您的star是我最大的动力~啊哈哈哈哈哈,O(∩_∩)O谢谢

imliubo/makingfunxyz-esp8266​github.com


QQ交流群:592587184

推荐阅读更多精彩内容