小白教程:MQTT试玩——unraid安装emqx简单体验。

1、关于EMQX

emqx官网:https://www.emqx.io/cn/

emqx是一个开源和企业版都有分支的mqtt工具,玩物联网、MQTT本身的作用就不赘述了,坛子里面关于mqtt的Broker部署和Client配置萝卜和老妖大佬都发过帖子:

Client(客户端):

[ioBroker MQTT适配器配置指南【1. Client篇】](ioBroker MQTT适配器配置指南【1. Client篇】
[iobroker-2.3接入mqtt服务](iobroker-2.3接入mqtt服务

Broker(服务端):eclipse-mosquitto

[iobroker–docker版的mqtt服务器端安装方法](iobroker--docker版的mqtt服务器端安装方法

EMQX

EMQX是作为MQTT集群服务使用的(就是企业级、大型、N多设备xxxx之类的用的,这句我瞎写的),因为用了HA的HIVEMQ发现比较好,所以想找个纯docker环境下的中文+web界面+调试的工具,所以还是选择了这个,他自带中文(应该是国人开发的)而且有简单的WEB配置界面,凑个热闹补充下unraid下面安装的方法,debian和群晖的docker环境安装更简单,需要的可以搜搜。

2、安装教程

2.1、容器配置

第一步:还是先添加容器:

第二步:配置容器

RepositoryDocker Hub URL需要按照emqx官方的docker配置规则来,具体详见hub地址:https://hub.docker.com/r/emqx/emqx;

Icon URL:随意,我是用了个免费图床;

WebUI:填写:http://[IP]:[PORT:18083](镜像自身定义的web端口);

Network Type:我选择了br0,因为我的所有模块都设置完毕了mqtt的IP,br0可以方便的配置IP;

映射1个端口和1个变量出来(最下方的Add another Path, Port, Variable, Label or Device),端口选择PORT,变量选择 Variable,因为我的灯控模块以前已经设置过了MQTT用户名+密码的登陆方式(拜HA当初的MQTT插件所赐),所以当初取消了匿名登录;

取消匿名登录的设置见下图,变量名字选择EMQX_ALLOW_ANONYMOUS:出来如果需要就不用这一步了,下面的2.2也不用看了。

完成上面的步骤,就可以APPLY,然后等待镜像的pull和布置过程了,如果一切正常,就会部署上最新的emqx开源版本分支的镜像,然后打开它的WEB配置界面(你的IP+18083),然后就可以很直观的看到MQTT的一些配置和信息了,默认用户名”admin,默认密码public

2.2、配置emqx_auth_username鉴权(客户端的用户名+密码登录)

启用这个插件,我这几天下载的已经是3.2.3版本了,emqx的username这个配置方式经历过好几次调整,请教了下老妖,然后搜了搜发现最新版的直接用命令行就可以搞定了。

emqx_ctl users add 用户名 密码   


上面的命令在console里面输入,注意空格,感谢zhuzhuaini的帖子,配置完了之后

剩下的就是看看界面信息了,这个就比较直观了。

3、EMQX的MQTT相关界面

因为比较直观,如果有事先配置过的待连接的设备,做完这些就能看到很多信息了。

监控选项卡

工具选项卡(类似就是mqtt.fx的调试功能)

选择Websocket选项,然端口和地址如果没有更改可以默认,客户端ID随意,输入你刚才定义的username和密码(如果有),点击连接,就可以连上自带的mqtt服务器了(broker)

连接成功会提示成功.

4、调试及订阅方法

完成上面的Websocket配置之后,就可以进行调试了。

4.1、测试订阅MQTT主题相关:

通过MQTT发送控制命令(调试):

举个DC1通过MQTT的例子(我用的固件是ZIP大佬的DC1固件,别人帮我刷的,有MQTT服务),当初在HomeAssistant里面的配置情况如图:
这个是sensor(电量这些)相关的订阅(主要关注state_topic)


这个是switch(控制插座插孔开关)的订阅配置(还是看state_topic)

然后操作一下emqx的订阅,上面两个就可以输出下面的信息:

插座的,点击关闭之后(iobroker的WEB UI界面其实比这个简单,我是那我现成的HA界面控制,把这个MQTT设备关闭):

emqx输出信息如下图:

结合我的HA这个设备插座的接入订阅主题和上面在emqx里面的设置(参考2张图),应该就知道怎么调试了,用mqtt.fx其实一样的,不放订阅DC1sensor的例子了(就是把主题改成state_topic: 'homeassistant/sensor/#之后,你会看到下面会刷新很多信息了,包括你配置的多个同样主题的DC1)。

OK,就这样吧。

最后多说一句,混这个群或者这个论坛的其实都不需要看到这个,我就是想写写,谢谢大佬们带给我们的环境和教程,锦上添花吧,写的有点乱,错误的地方,真有人尝试的时候再Q我或者回帖。

1 个赞

:lol:lol谢谢土豆大佬的教程