了解MQTT数据包形成 参考 :http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html#_Toc398718027


Windows 下 MQTT 服务器搭建之Apollo

(1)下载 Apollo

目录

Windows 下 MQTT 服务器搭建之Apollo

(1)下载 Apollo

(2)安装

(3)安装 JDK

(4)创建服务器实例

三、MQTT 客户端测试

在本地Windows上安装MQTT服务器测试通信

下面是esp8266模块连接mqtt服务器的测试程序:

模块与另一个客户端通信状态


下载:Download it today!

esp8266可以部署服务器吗 esp8266搭建服务器_服务器

esp8266可以部署服务器吗 esp8266搭建服务器_apache_02

(2)安装

解压得到如下文件。

这里需要注意了,解压 apache-apollo-1.7.1 所在文件夹名称不能有 中文或者空格,后面会提到出现什么错误。

esp8266可以部署服务器吗 esp8266搭建服务器_esp8266可以部署服务器吗_03

进入 apache-apollo-1.7.1-windows-distro\apache-apollo-1.7.1\bin 文件夹

按住 shift键选择 apollo.cmd 再点击右键。选择 在此处打开命令窗口。

 

esp8266可以部署服务器吗 esp8266搭建服务器_服务器_04

然后在 cmd 窗口执行 apollo.cmd。然后就可以看到发生错误。上面Ubuntu下安装时已经提到,还需要安装 JDK。

esp8266可以部署服务器吗 esp8266搭建服务器_Windows_05

(3)安装 JDK

WIN7 64位系统安装JDK并配置环境变量:https://jingyan.baidu.com/article/3c343ff70bc6ea0d377963df.html

下载:Java SE Development Kit 8 Downloads

esp8266可以部署服务器吗 esp8266搭建服务器_apache_06

Windows 系统是多少位的,这个应该很清楚吧。查看 我的电脑->属性,查看有关计算机的基本信息。

esp8266可以部署服务器吗 esp8266搭建服务器_apache_07

我的电脑为 win 10 64位,下载并安装 jdk-8u144-windows-x64.exe

然后配置 JDK 环境变量

我的电脑->属性->高级系统设置->高级->环境变量

esp8266可以部署服务器吗 esp8266搭建服务器_Windows_08

 

这部分我们之前将 FFmpeg 的Windows安装说明时有提到过的。可看到有用户变量和系统变量。

修改“用户变量”为当前用户使用,其他 Windows 用户不能够使用。如果要使每个用户都能够使用,你需要修改 "系统变量" 。

esp8266可以部署服务器吗 esp8266搭建服务器_Windows_09

注意,不要够删除在变量中原来已有的内容。如果之前已存在变量,则在其之后用分号“;”分隔,然后添加。

esp8266可以部署服务器吗 esp8266搭建服务器_服务器_10

 

我们只让当前用户可用,修改用户变量即可。

在用户环境变量中新建变量 JAVA_HOME,设置变量值 F:\Program Files\Java\jdk1.8.0_144

esp8266可以部署服务器吗 esp8266搭建服务器_esp8266可以部署服务器吗_11

新建PATH,设置变量值%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin

esp8266可以部署服务器吗 esp8266搭建服务器_Windows_12

新建CLASSPATH,设置变量值.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar注意前面的.表示当前目录。然后点击“确定”按钮。

esp8266可以部署服务器吗 esp8266搭建服务器_服务器_13

到此,配置完成。打开 cmd 测试一下配置是否成功。

输入java -version,显示版本java version "1.8.0_144",输入javac -version,也显示javac 1.8.0_144,说明JDK安装及环境变量配置成功。

esp8266可以部署服务器吗 esp8266搭建服务器_Windows_14

 

然后接着上面来讲。进入 apache-apollo-1.7.1-windows-distro\apache-apollo-1.7.1\bin 文件夹

按住 shift键选择 apollo.cmd 再点击右键。选择 在此处打开命令窗口。

再次在 cmd 窗口执行 apollo.cmd,可以看到如下的信息。

esp8266可以部署服务器吗 esp8266搭建服务器_esp8266可以部署服务器吗_15

(4)创建服务器实例

参看:Getting Started Guide

在 CMD 命令窗口输入 apollo create mybroker ,当然 mybroker 这个名字可以随便起。

esp8266可以部署服务器吗 esp8266搭建服务器_Windows_16

 

然后查看 mybroker 可以发现里面包含有很多信息,其中etc\apollo.xml文件下是配置服务器信息的文件,etc\users.properties文件包含连接MQTT服务器时用到的用户名和密码,可以修改原始的admin=password,可以接着换行添加新的用户名密码。

esp8266可以部署服务器吗 esp8266搭建服务器_Windows_17

bin:保存与该实例关联的执行脚本。
etc:保存实例配置文件
data:保存用于存储持久消息的数据文件
日志:保存旋转日志文件
tmp:保存在代理运行之间安全删除的临时文件

 

打开cmd,运行 apache-apollo-1.7.1\bin\mybroker\bin\apollo-broker.cmd run 开启服务器,如下图所示:

esp8266可以部署服务器吗 esp8266搭建服务器_esp8266可以部署服务器吗_18

 

这里需要注意了,所在 apache-apollo-1.7.1 所在文件夹名称不能有 中文或者空格。因为我上面的是存放在 360安全浏览下载 这个目录下了。导致出现系统找不到指定的路径。

esp8266可以部署服务器吗 esp8266搭建服务器_服务器_19

 

然后打开浏览器上,输入 http://127.0.0.1:61680/ 或 https://127.0.0.1:61681/

即可进入 Apollo Console 窗口。

esp8266可以部署服务器吗 esp8266搭建服务器_服务器_20

默认的登录id和密码是 admin 和 password 

esp8266可以部署服务器吗 esp8266搭建服务器_服务器_21

三、MQTT 客户端测试

Apollo 服务器安装已经讲完,接下来简单测试一下发布订阅。

这里面网上有 MQTT协议之Apache Apollo 安装使用 这种文章用的是 java,在Android上测试的。

这就不太适合我了,不懂 Android 蓝瘦香菇啊!

 

再有一种是用 谷歌浏览器上的 扩展程序 mqttlens

首先添加该插件

esp8266可以部署服务器吗 esp8266搭建服务器_apache_22

 

点击 获取更多扩展程序

esp8266可以部署服务器吗 esp8266搭建服务器_Windows_23

 

搜索 mqttlens ,最后添加至 CHROME

esp8266可以部署服务器吗 esp8266搭建服务器_apache_24

 

安装完成!!

下面进行测试

先运行 Apollo 服务器

esp8266可以部署服务器吗 esp8266搭建服务器_esp8266可以部署服务器吗_25

esp8266可以部署服务器吗 esp8266搭建服务器_esp8266可以部署服务器吗_26

 

然后启动 mqttlens 

esp8266可以部署服务器吗 esp8266搭建服务器_esp8266可以部署服务器吗_27

 

然后点击 Connections+

esp8266可以部署服务器吗 esp8266搭建服务器_esp8266可以部署服务器吗_28

 

出现下图,并填写好相关的信息

esp8266可以部署服务器吗 esp8266搭建服务器_esp8266可以部署服务器吗_29

然后就进入了,订阅发布界面

esp8266可以部署服务器吗 esp8266搭建服务器_服务器_30

Windows安装MQTT服务器,到此结束.

在本地电脑端安装MQTT服务器参考:   

 

 

在本地Windows上安装MQTT服务器测试通信

esp8266可以部署服务器吗 esp8266搭建服务器_esp8266可以部署服务器吗_31

esp8266可以部署服务器吗 esp8266搭建服务器_esp8266可以部署服务器吗_32

我使用我电脑测试mqtt服务器,则mqtt服务器ip是本机的ip, 端口是创建mqtt服务器时,建立tcp连接的那个端口

用户名和密码在安装mqtt服务器时建立的,在文件  "\apache-apollo-1.7.1\bin\mybroker\etc"下  "users.properties"和“groups.properties”文件中修改

esp8266可以部署服务器吗 esp8266搭建服务器_apache_33

esp8266可以部署服务器吗 esp8266搭建服务器_Windows_34

esp8266可以部署服务器吗 esp8266搭建服务器_Windows_35

esp8266可以部署服务器吗 esp8266搭建服务器_esp8266可以部署服务器吗_36

esp8266可以部署服务器吗 esp8266搭建服务器_服务器_37

本地mqtt服务器测试结果:

esp8266可以部署服务器吗 esp8266搭建服务器_Windows_38

 

下面是esp8266模块连接本地mqtt服务器的测试程序:

设置ESP8266模块连接路由器后创建mqtt客户端连接mqtt服务器

连接远程服务器时需要知道远程服务器ip和本地连接相同

通过smart绑定连接路由器时,模块开始并不知道路由器的连接信息,通过广播让模块知道连接那个网络

mqttclient.lua文件: 再次声明不要在mqttclient.lua文件中添加注释, 在笔记中添加注释只是为了更好的去理解 ,当需要上传该程序到模块时, 要注意把注释全部删掉

 

模块与另一个客户端通信状态

esp8266可以部署服务器吗 esp8266搭建服务器_服务器_39

esp8266可以部署服务器吗 esp8266搭建服务器_Windows_40

esp8266可以部署服务器吗 esp8266搭建服务器_Windows_41

esp8266可以部署服务器吗 esp8266搭建服务器_apache_42

 

 

了解MQTT数据包形成 参考 :http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html#_Toc398718027