Mqtt-spy是一个用java开发的开源MQTT客户端软件,可以到他们的GitHub上下载,本次实验使用mqtt-spy作为订阅者客户端,用起来方便直观。运行环境依赖JAVA。
Ixxat CAN@net NT420是一款CAN转以太网网关,可以将CAN或CAN FD系统进行耦合,也可以将以使用以太网的设备连接到CAN系统,同时具备使用MQTT协议实现与MQTT Broker连接的功能。此次使用CAN@net NT420作为实验的发布者客户端。
如果您想要获取本文中使用的测试工具ActiveMQ Apollo与mqtt-spy,关注"麦克泰技术"微信公众号后在对话框内回复“Apollo”即可获取下载链接!
一、ActiveMQ Apollo服务器的安装
01、下载安装以及解压ActiveMQ Apollo
ActiveMQ Apollo依赖JAVA,首先要安装并配置好JAVA环境变量,其次下载以及安装ActiveMQ Apollo。
下载地址:http://activemq.apache.org/apollo/
我们下载的是apache-apollo-1.7.1.rar,先把压缩包解压得到的文件如下图。注意这里的解压路径不能有中文或者空格,否则后面会出现不知名错误,我这里直接将文件解压到了本地H盘目录下(H:\)
02、配置ActiveMQ Apollo
打开CMD窗口,进入Apollo目录:H:\apache-apollo-1.7.1\bin,在CMD窗口执行apollo.cmd,就可以看到如下信息,可以看到Apollo的基础命令。
在CMD窗口中输入apollo create mybroker H:\mybroker即可在H盘mybroker目录下创建一个名为mybroker的实例,当然mybroker这个名字可以随便起。
进入资源管理器打开mybroker文件夹可以发现里面包含有很多信息,其中etc\apollo.xml文件下是配置服务器信息的文件,etc\users.properties文件包含连接MQTT服务器时用到的用户名和密码,可以修改原始的admin=password,可以接着换行添加新的用户名密码。
● bin:保存与该实例关联的执行脚本
● etc:保存实例配置文件
● data:保存用于存储持久消息的数据文件
● log:保存日志文件
● tmp:保存在代理运行之间安全删除的临时文件
打开CMD窗口,进入实例目录(H:\mybroker\bin),输入apollo-broker.cmd run开启服务器,如下图所示。
这里可以看到管理员接口是https://127.0.0.1:61681/或http://127.0.0.1:61680/,tcp的接入端口是61613。
03、测试
打开浏览器,在地址栏输入https://127.0.0.1:61681/或http://127.0.0.1:61680/进入Apollo Console窗口,默认登陆ID与密码是admin和password,登陆成功如图,到此ActiveMQ Apollo服务器配置开启成功。
二、订阅者/发布者客户端配置
打开mqtt-spy,新建一个连接,填入Apollo的配置信息,并订阅好测试主题
配置Ixxat CAN@net NT420做为发布者客户端很简单,只需在CAN@net NT420的MQTT配置页面中填入服务器信息,然后配置相应的触发条件即可。
首先通过配置工具连接CAN@net设备,工作在Local CAN Bridge模式,开启一个CAN端口作为控制窗口。
其他配置选择默认,之后再MQTT配置树下按照下图提示填入服务器信息,其中客户端ID可以随便起。
通过配置触发条件来控制CAN@net NT420发送MQTT消息。其他不需要的功能都可以选择默认,这样一个MQTT发布者客户端就搭建好了。
三、通讯测试
开启ActiveMQ Apollo服务器后,连接客户端到服务器,这里要注意的是,连接CAN@net NT420到服务器上后,需要暂时关闭服务器的防火墙才能通讯。
通过触发条件使发布者客户端CAN@net NT420发送两条规定的MQTT消息,查看订阅客户端是否能够正常接收。
在mqtt-spy订阅者客户端成功接收到CAN@net NT420发送的MQTT消息,服务器通讯测试成功。
不论您是开发MQTT客户端系统还是开发服务端系统,这套简单MQTT服务器搭建方法都能够帮助您快速的完成功能的验证与测试。
本文章中所使用的ActiveMQ Apollo与mqtt-spy都是开源软件可以免费使用。
发布者客户端使用的硬件产品是Ixxat品牌的CAN@net NT420,CAN@net NT系列是强大的CAN以太网网关,并且支持将您的CAN系统连接到MQTT云。他的主要特点是:
● 最多4个独立的CAN通道(2个CAN FD通道)
● 强大的过滤,ID翻译,数据映射和多路复用功能
● 通过支持MQTT简单进行云连接
● 针对眼科环境设计的高性能
● 提升系统的可靠性
● 通过电气隔离实现线路保护