本帖最后由 WT_0213 于 2024-5-6 14:19 编辑
EMQX与Mosquitto对比
EMQX 是 GitHub 上评价最高、最活跃的 MQTT Broker 项目,在过去 12 个月里有 11.4K 个 Star 和超过 3000 个 Commit。
Mosquitto 以其轻量级的单线程架构在部署上比 EMQX 更普遍,特别是在资源有限的嵌入式设备上。
开源社区中影响力最大的四个开源 MQTT Broker:
- EMQX:GitHub 上 Star 数最高的 MQTT Broker,有 12.6k 个 Star。
- Mosquitto:Star 数排名第二,但使用最为广泛。
- NanoMQ:目前最新、最活跃的 MQTT Broker 之一。
- VerneMQ:虽然在 Github 上的开发并不活跃,但 Star 数排名第三。
-
以上四个开源MQTT Broker区别和优缺点可以参考
MAQTT区别
EMQX
优点:
支持大规模集群部署
高可用性
横向可扩展性
高性能和低延迟
丰富的企业功能
率先引入 MQTT over QUIC
缺点:
配置较为复杂
插件生态有限,难以开发扩展
理解日志具有一定难度
Mosquitto
优点:
安装和使用方便
支持 MQTT 5.0 协议
轻量级,资源占用少
拥有活跃的开源社区
缺点:
单线程架构
生产环境中可扩展性有限(<100k)
不支持集群
缺少企业级功能
有限的云原生支持
这里我们使用的是 Mosquitto
内容简介
一款实现了消息推送协议 MQTTv5.0, v3.1.1, v3.1 的开源消息代理软件,提供轻量级的,支持可发布/可订阅的的消息推送模式,使设备对设备之间的短消息通信变得简单,比如现在应用广泛的低功耗传感器,手机、嵌入式计算机、微型控制器等移动设备。
什么是MQTT,他的英文全称Message Queuing Telemetry Transport,翻译过来就是“消息队列遥测传输”,是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。它工作在 TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议。
初始环境搭建
mkdir -p /opt/mosquitto/config
mkdir -p /opt/mosquitto/data
mkdir -p /opt/mosquitto/log
touch /opt/mosquitto/config/mosquitto.conf
chmod -R 755 /opt/mosquitto
chmod -R 777 /opt/mosquitto/log
执行命令
vi /opt/mosquitto/config/mosquitto.conf
按 i 进入编辑模式将以下内容复制到配置文件
persistence true
persistence_location /mosquitto/data
log_dest file /mosquitto/log/mosquitto.log
listener 1883
allow_anonymous false
按Esc然后 Shift + :输入wq 回车保存并退出
Mqtt安装
docker run -d --name mosquitto --privileged --restart always -p 1883:1883 -p 9001:9001 -v /opt/mosquitto/config:/mosquitto/config -v /opt/mosquitto/data:/mosquitto/data -v /opt/mosquitto/log:/mosquitto/log eclipse-mosquitto
输入以上命令后,如果没有报错,基本上都能安装成功,下方为安装完毕后样子。
root@raspberrypi:~# docker run -d --name mosquitto --privileged --restart always -p 1883:1883 -p 9001:9001 -v /opt/mosquitto/config:/mosquitto/config -v /opt/mosquitto/data:/mosquitto/data -v /opt/mosquitto/log:/mosquitto/log eclipse-mosquitto
Unable to find image 'eclipse-mosquitto:latest' locally
latest: Pulling from library/eclipse-mosquitto
c6b39de5b339: Pull complete
9b97de0ed616: Pull complete
c5499a64eee8: Pull complete
Digest: sha256:bf5fb92712be8660ef6a204bf7a966c8f81f37d2b91a91432b9faaebf49c49d3
Status: Downloaded newer image for eclipse-mosquitto:latest
558aa346bfd56e2e6695be728929a2f74d0f40b9002e3705cde322324f1c1773
这时候我们打开Portainer可以看到容器多了一个
然后点击 mosquitto 容器名称进入详情页
查看容器id,回到ssh命令行
输入,这里容器id替换成自己的
# docker exec -it (容器id) sh
docker exec -it 5c9776c309599319f505eecf72f2c10f8df32145fca11ad0d63b7802f6f953f3 sh
输入以上命令后,如果没有报错,基本上都能安装成功,下方为安装完毕后样子。
root@raspberrypi:/opt/mosquitto/log# docker exec -it 5c9776c309599319f505eecf72f2c10f8df32145fca11ad0d63b7802f6f953f3 sh
/ #
会等待输入命令,输入以下三条命令
#用户名和密码是创建你mqtt的用户名密码
touch /mosquitto/config/pwfile.conf
chmod 0700 /mosquitto/config/pwfile.conf
mosquitto_passwd -b /mosquitto/config/pwfile.conf 用户名 密码
输入exit退出,再次编辑 mosquitto.conf
vi /opt/mosquitto/mosquitto.conf
persistence true
persistence_location /mosquitto/data
log_dest file /mosquitto/log/mosquitto.log
listener 1883
allow_anonymous false
password_file /mosquitto/config/pwfile.conf
到这里mosquitto配置就完成了。输入命令重启
docker restart 容器id
或者到Portainer重启都可以
重启一下容器。
接下来就是Home Assistant添加MQTT集成了
访问地址:http://IP:8123/,将 IP 替换为自己树莓派 IP 地址
配置,设备与服务
添加集成
输入MQTT
选第一个,用户名密码填写上面配置的那个
如果不需要修改其他的可以把高级选项关掉,直接点提交
点击完成,后可以看到面板上多了一个MQTT
点击打开
测试一下,点击选项
根据流程填写主题,开始监听,然后点击发送。
出现以上内容表示mqtt已经搞定了.
也可以通过添加 tasmota 设备测试,手里有个esp8266-01的温湿度模块,烧录了tasmota固件下面设置一下看看。
先在Home Assistant添加tasmota集成,与MQTT方式相同
选Tasmota
直接点击提交,找到tasmota设备,进入设置修改MQTT配置
这里修改了主机地址,第一次使用的话,配置下主机地址、端口(如果没改的话不用配置)、用户名、密码
用户名密码就是这条指令配置的那个,看下上面配置那就知道了
mosquitto_passwd -b /mosquitto/config/pwfile.conf 用户名 密码
然后点击保存,再次回到Home Assistant,点击Tasmota
可以看到集成条目多了很多
点击展开后可以看到我们的温湿度模块已经加载出来了
点击左侧 概览 菜单
哎呦,不错哦,温湿度自己就展示出来了
关联上一篇
[智能家居]树莓派搭建全屋智能之环境搭建02
https://bbs.ai-thinker.com/forum.php?mod=viewthread&tid=44577
关联下一篇
【智能家居】易微联接入HomeAssistant设备
https://bbs.ai-thinker.com/forum.php?mod=viewthread&tid=44654