MQTT Broker搭建
MQTT通讯示意
监控服务Frigate更多满足于本地查看需求,想要接收来自iCloud的通知时,发现可以将Frigate整合到HAOS中,然后将HAOS接入HomeKit就可以满足这一需求,这就需要借助MQTT,一种轻量高效,机器与机器之间的通信协议。
部署依旧在Debian系统,首先使用SSH连接到Linux,下面开始部署
1. 更新包
sudo apt-get update
2. 安装mosquitto服务
sudo apt-get install mosquitto
3. 查看服务详细信息,看到一个error显示端口地址被占用,其实这并不是真正的被占用
/usr/sbin/mosquitto -v
4. 安装mosquitto-clients以使用mosquitto指令
sudo apt-get install mosquitto-clients
5. 在/etc/mosquitto 目录下创建一个名为pwfile的文件且用户名为mqtttest,回车,提示输入密码
sudo mosquitto_passwd -c /etc/mosquitto/pwfile mqtttest
6. 编辑配置文件
vim /etc/mosquitto/mosquitto.conf
关闭匿名登录权限,指定账户密码文件,开通远程操作
allow_anonymous false
password_file /etc/mosquitto/pwfile
listener 1883
7. 防火墙开通1883端口
ufw allow 1883
8. 启动并设置开机启动
systemctl start mosquitto.service
systemctl enable mosquitto.service
9. 加载新配置文件没有报错即加载成功
/usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf -v
10. 测试安装是否成功
在A设备安装MQTT Broker和mosquitto-clients(步骤4),在B设备上安装mosquitto-clients,使用A设备循环发送mqtt测试消息"test mqtt message"到名为"test"的topic,消息发送到A设备的MQTT Broker。-h后接A设备的ip,-t后接topic,-m后接要发送的消息,-u后面接用户名,-P后面接密码
while true;do mosquitto_pub -h 192.168.10.16 -t 'test' -m 'test mqtt message' -u mqtttest -p xxxxxxxxx
;sleep 2;done
在B设备上订阅名为"test"的topic,如果订阅成功则命令窗口会间隔2秒弹出"test mqtt message"的消息,不断弹出消息说明MQTT Broker部署成功,也可以将密码取掉试试没有密码能否发布和订阅,如果不行说明密码添加成功,需要密码才可以发布与订阅消息
mosquitto_sub -h 192.168.10.16 -t "test" -u mqtttest -p xxxxxxxxx -v