以下方法经本人验证通过,环境如下:
群晖 DS918+ DSM 6.2.4
mosquitto version 2.0.11
MQTTBox Version 0.2.3
前言:MQTT(Message Queuing Telemetry Transport)是一种基于发布/订阅(publish/subscribe)模式的”轻量级”通讯协议。客户端的发布者不直接将消息传递给订阅者,而是服务端(MQTT Broker)进行分发,一个客户端既可以是发布者,也可以是订阅者,更多介绍请参看维基百科上的词条 。以智能家居的情形简单举例,人体感应器(发布者)感应到有人时发布主题为”有人“的消息到服务端,而由于摄像头订阅了该主题,因此收到消息,开始录像,此时摄像头角色为(接收者),同时摄像头也作为(发布者)发布”监控异动“消息到服务器,而我们手机订阅了此主题,作为(接收者)便可收到消息。
目前有很多机构提供MQTT Broker服务,有免费的也有收费的。作为个人用户用于智能家居服务,我决定用已有NAS服务器自己搭建一个。参考了网上的一些文章,但大都写得有些复杂,对一般小白不是很友好,因此我尝试自创了一个极简的方法来实现,并记录下来供由需要的朋友学习。
第一步:管理员账号登陆群晖,在Docker中选择 “注册表”,搜索 “eclipse-mosquitto”,搜索结果中选择第一个,点击下载,选择标签latest。此时系统开始下载,可在“映像”中查看下载进度
第二步:下载完毕后,在“映像”里选择已下载的 eclipse-mosquitto 映像 ,点击启动按钮打开创建容器窗口。点击高级设置按钮,打开高级设置页面。
在高级设置中,勾选“启动自动重新启动”
在卷中,点击添加文件夹,在docker目录下新建文件夹 “mosquitto”并选择该文件夹,装载路径填写”/mosquitto/config”
![](https://www.feeus.com/wp-content/uploads/2021/08/屏幕截图-2021-08-16-205443.png)
在网络中,勾选“使用与 Docker Host 相同的网络”
确认应用后点击下一步,取消”向导完成后运行此容器“,然后应用
第三步:新建一个mosquitto.conf文件,并将该文件上传到 docker目录的 “mosquitto” 文件夹内。文件内容如下:
persistence true listener 18831 allow_anonymous true
- listener 为端口号,默认是1883,我机器上该端口被占用了,所以自己改了一个
- allow_anonymous true 表示支持匿名用户,此次为了教程简单因此开启匿名用户
文件上传后,再docker容器中启动第二步添加的 eclipse-mosquitto 容器
第四步:测试mosquitto服务
mqtt测试工具很多,我选择的是MQTTBox ,用chrome打开下列地址,添加应用后打开
https://chrome.google.com/webstore/detail/mqttbox/kaajoficamnjijhkeomgfljpicifbkaf?hl=zh-CN
点击”Create MQTT Client”,取一个名字,Protocol 选mqtt/tcp ,Host 填写你的主机地址和 mosquitto 服务端口 ,保存后可看到显示为Connected 表示已经正确连接上我们新建的mosquitto服务端
![](https://www.feeus.com/wp-content/uploads/2021/08/image-2-1024x377.png)
接着,添加一个订阅,主题随便写一个,我这里填FEEUS.COM,点击”Subscribe“完成订阅
![](https://www.feeus.com/wp-content/uploads/2021/08/image-3.png)
在发布端发布一个订阅端一样的主题,这里也是 FEEUS.COM ,然后输入发布的消息,点击”Publish“后完成发布,该主题的订阅者即可收到该条消息
如果您喜欢这篇文章,或者它给您带来了帮助,您可以请我们喝一杯咖啡,我们将非常感谢您的支持!
![](https://www.feeus.com/wp-content/uploads/2019/07/微信.jpg)
![](https://www.feeus.com/wp-content/uploads/2019/07/支付宝.jpg)
如果是需要用户名跟密码的mqtt需要怎么设置
参见官方配置文件说明:https://mosquitto.org/man/mosquitto-conf-5.html