在嵌入式x86上构建我的智能家居(home assistant) (二)

本文档详细介绍了如何在嵌入式x86系统上安装和配置MQTT服务器mosquitto,包括安装过程、配置mosquitto.conf文件、创建用户和权限、启动服务以及使用mosquitto_sub和mosquitto_pub进行测试。通过这些步骤,你可以成功建立一个安全的MQTT服务,用于智能家居系统的数据交换。
摘要由CSDN通过智能技术生成

 在嵌入式x86上构建我的智能家居(home assistant) (一)中安装了homeassistant系统。

home assistant中可以使用MQTT交换数据。

此篇安装MQTT服务。

关于MQTT参考

MQTT协议报文格式解析 - 知乎一、概述MQTT是一个客户端服务端架构的发布/订阅模式的消息传输协议。v3.1.1版本协议仅仅包含14个协议帧,它格式简单、规范且易于实现,非常适合物联网场景使用。 本文开始梳理MQTT协议的报文格式。官方的协议文档…https://zhuanlan.zhihu.com/p/429891532

安装mosquitto

apt-cache search mosquitto

sudo apt install mosquitto mosquitto-clients mosquitto-dev -y

安装后自动创建mosquitto账户作为mosquitto的操作账户。

常规配置
在使用之前,我们需要对mosquitto进行一些配置。首先打开配置文件

# vim.tiny /etc/mosquitto/mosquitto.conf 
在文件中找到如下内容并按要求修改。

# 端口号设置 
listener 1883 
 
# 配置pid文件路径 
pid_file /run/mosquitto/mosquitto.pid
 
# 消息持久存储 
persistence true
persistence_location /var/lib/mosquitto/
 
# 日志文件 
log_dest file /var/log/mosquitto/mosquitto.log

include_dir /etc/mosquitto/conf.d

# 禁止匿名访问 
allow_anonymous false
# 认证配置 
password_file /etc/mosquitto/pwfile
# 权限配置 
acl_file /etc/mosquitto/aclfile

没有则创建文件
touch /etc/mosquitto/pwfile


设置用户名和密码
什么是密码文件
用来把需要访问mosquitto的用户名和密码放到单个文件中。当只有少量用户使用mosquitto时,这是一种有效的验证方法。

服务开启后,输入如下命令,根据提示输入两遍密码
mosquitto_passwd /etc/mosquitto/pwfile 用户名

创建密码文件并新增用户
生成一个名为mqtt,密码也为mqtt的用户。

$ mosquitto_passwd -c /etc/mosquitto/pwfile mqtt 
执行该语句后需要两次输入密码。

再增加一个名为mqtt1,密码也为mqtt1的用户。

$ mosquitto_passwd /etc/mosquitto/pwfile mqtt1 
执行该语句后需要两次输入密码。

创建角色权限
新增一个aclfile文件.

$ touch /etc/mosquitto/aclfile 
在里面写入如下内容

# mqtt只能读取以test为前缀的topic消息 
user mqtt 
topic read test/# 
 
# mqtt1只能往以test为前缀的topic中发消息 
user mqtt1 
topic write test/# 
执行mosquitto 2
在mosquitto用户下,执行如下命令,可启动mosquitto。其中:

-c    指定配置文件
-d    后台运行
# su - mosquitto
$ mosquitto -c /etc/mosquitto/mosquitto.conf -d 
systemctl start mosquitto

启动后程序应阻塞在控制台中。

  • 查看运行状态 systemctl status mosquitto
  • 开启/关闭systemctl start/stop mosquitto

测试mosquitto 2
mosquitto在安装后,自带了两个小程序,一个是订阅端mosquitto_sub,一个是发布端mosquitto_pub。下面我们先启动订阅端,再使用发布端发布消息。

mosquitto_sub
执行如下命令

# su - mosquitto
$ mosquitto_sub -h 127.0.0.1 -p 1883 -t "test/#" -u mqtt -P mqtt -i "sub1" 
参数含义如下:

-h    mosquitto服务器地址。
-p    mosquitto服务器端口号。
-t    需要发布的topic,此处需要匹配订阅端的topic通配符,否则订阅端无法接收。
-u    之前在aclfile中配置过的用户名,注意需要有write权限。
-P    用户名对应的密码,之前在pwfile中配置过。
-i    客户端id,这个字符串在mosquitto服务器中务必唯一。若不加该参数,mosquitto会默认给你唯一id。
启动后程序应阻塞在控制台中。

mosquitto_pub
执行如下命令

# su - mosquitto
$ mosquitto_pub -h 127.0.0.1 -p 1883 -t "test/iot" -u mqtt1 -P mqtt1 -i "pub1" -m "temp:36,humi:75" 
参数含义如下:

-h    mosquitto服务器地址。
-p    mosquitto服务器端口号。
-t    需要发布的topic,此处需要匹配订阅端的topic通配符,否则订阅端无法接收。
-u    之前在aclfile中配置过的用户名,注意需要有write权限。
-P    用户名对应的密码,之前在pwfile中配置过。
-i    客户端id,这个字符串在mosquitto服务器中务必唯一。若不加该参数,mosquitto会默认给你唯一id。
-m    发送的内容正文。在例子中假设temp是温度,humi是湿度。
发布完成后,mosquitto_pub会立刻返回,mosquitto_sub的控制台应显示收到的消息:


若能正常收到消息,则说明mosquitto已经被正确配置。

参考:

[linux] Ubuntu20.04上安装搭建MQTT服务器mosquitto_slimmm的博客-CSDN博客_ubuntu安装mqtt服务器mosquitto是支持MQTT v3.1 的开源消息代理软件,而且搭建更加方便快捷。本博文记录了MQTT协议简介 和 在Ubuntu 20.04上安装和配置mosquittoMQTT协议简介MQTT(Message Queuing Telemetry Transport)消息队列遥测传输协议,是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。.MQTT最大优点在于,可以以极少的代码和有限的带宽,为连.https://blog.csdn.net/slimmm/article/details/109021321

Mosquitto 搭建及配置_量子物理学的博客-CSDN博客_mosquitto简介: Eclipse Mosquitto是一个开源消息代理,实现了MQTT协议版本3.1和3.1.1、5.0。Mosquitto轻量,适用于低功耗单板计算机到完整服务器的所有设备。其他服务器代理实现:https://github.com/mqtt/mqtt.github.io/wiki/servers各操作系统安装指引:https://mosquitto.org/download/下载安装以Ubuntu16为例添加到存储库列表sudo apt-add-repository ppa:mosqhttps://blog.csdn.net/yiyihuazi/article/details/122873234

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值