[智能家居]树莓派搭建全屋智能之环境搭建03

[复制链接]
查看1735 | 回复16 | 2024-4-27 20:58:15 | 显示全部楼层 |阅读模式

本帖最后由 WT_0213 于 2024-5-6 14:19 编辑

EMQX与Mosquitto对比

53ff5c8e67a1c4d23a49a2c38ce90a58.jpg

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

内容简介

1948080d2cdc9f08220041a8d68820f0.jpeg

一款实现了消息推送协议 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可以看到容器多了一个

WX20240427-105849.png

然后点击 mosquitto 容器名称进入详情页

WX20240427-112623.png

查看容器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重启都可以

WX20240427-114821.png

重启一下容器。

接下来就是Home Assistant添加MQTT集成了

访问地址:http://IP:8123/,将 IP 替换为自己树莓派 IP 地址

WX20240427-113616.png

配置,设备与服务

WX20240427-113639.png

添加集成

WX20240427-113709.png

输入MQTT

WX20240427-113728.png

选第一个,用户名密码填写上面配置的那个

WX20240427-113807.png

如果不需要修改其他的可以把高级选项关掉,直接点提交

WX20240427-113849.png

点击完成,后可以看到面板上多了一个MQTT

WX20240427-114010.png

点击打开

WX20240427-114028.png

测试一下,点击选项

WX20240427-114228.png

根据流程填写主题,开始监听,然后点击发送。

WX20240427-114252.png

出现以上内容表示mqtt已经搞定了.

也可以通过添加 tasmota 设备测试,手里有个esp8266-01的温湿度模块,烧录了tasmota固件下面设置一下看看。

先在Home Assistant添加tasmota集成,与MQTT方式相同

WX20240427-115147.png

选Tasmota

WX20240427-115205.png

直接点击提交,找到tasmota设备,进入设置修改MQTT配置

WX20240427-115427.png

这里修改了主机地址,第一次使用的话,配置下主机地址、端口(如果没改的话不用配置)、用户名、密码

用户名密码就是这条指令配置的那个,看下上面配置那就知道了

mosquitto_passwd -b /mosquitto/config/pwfile.conf 用户名 密码

WX20240427-115446.png

然后点击保存,再次回到Home Assistant,点击Tasmota WX20240427-115507.png

可以看到集成条目多了很多 WX20240427-115525.png

点击展开后可以看到我们的温湿度模块已经加载出来了 WX20240427-115543.png

点击左侧 概览 菜单

WX20240427-115610.png

哎呦,不错哦,温湿度自己就展示出来了

关联上一篇

[智能家居]树莓派搭建全屋智能之环境搭建02 https://bbs.ai-thinker.com/forum.php?mod=viewthread&tid=44577

关联下一篇

【智能家居】易微联接入HomeAssistant设备 https://bbs.ai-thinker.com/forum.php?mod=viewthread&tid=44654

回复

使用道具 举报

lazy | 2024-4-27 21:00:44 | 显示全部楼层
回复

使用道具 举报

1084504793 | 2024-4-28 08:32:56 | 显示全部楼层
回复

使用道具 举报

干簧管 | 2024-4-28 09:28:37 | 显示全部楼层
厉害厉害
回复

使用道具 举报

1055173307 | 2024-4-28 10:52:29 | 显示全部楼层
学习
回复

使用道具 举报

iiv | 2024-4-28 10:56:03 | 显示全部楼层
高产哥
回复

使用道具 举报

lazy | 2024-4-28 14:07:46 | 显示全部楼层
本帖最后由 lazy 于 2024-4-28 14:09 编辑

回复

使用道具 举报

yff | 2024-4-28 18:01:53 | 显示全部楼层
点赞
回复

使用道具 举报

skyjz | 2024-4-29 09:49:30 | 显示全部楼层
学习
回复

使用道具 举报

noonezero | 2024-4-29 11:51:53 | 显示全部楼层
高产哥
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则