MQTT安装
一、介绍
mqtt是物联网通信中,非常重要的工具。作用是负责消息的传递,相对于其他的传递方式,mqtt更加稳定。
1、优点
比如,使用nodered里homeassistant节点,一旦节点过多,就会出现消息掉线、没有反应的状况。这是因为homeassistant节点,使用的是websocket协议传输,数量一大就会出问题。而使用mqtt,则完全不需要担心这种问题。
2、网络
mqtt既可以是局域网中使用,也可以使用公网。(使用公网服务器部署,则mqtt就可以公网连接,不受局域网限制!)
3、mqtt插件
mqtt目前主流使用2种开源的免费插件:eclipse-mosquitto和EMQX
(1)eclipse-mosquitto
特点是轻量,只占用几十兆内存。
(2)EMQX
特点是功能可视化,可以看到客户端和连接数,但占用内存是三四百兆。
二、EMQX安装
推荐使用docker安装,方便和homeassistant等服务一同管理。
(1)docker安装
docker run -d --name emqx -p 1883:1883 -p 8083:8083 -p 8883:8883 -p 8084:8084 -p 18083:18083 --privileged --restart=always emqx/emqx
安装完成后,稍等1、2分钟,可以打开主机+端口18083,访问到emqx的控制界面。
例如:http://192.168.0.188:18083
默认账号admin,密码public
(2)设置为中文界面
三、eclipse-mosquitto安装
推荐使用docker安装,方便和homeassistant等服务一同管理。
(1)拉取镜像
docker pull eclipse-mosquitto:latest
(2)创建文件夹
我一般喜欢创建在/opt目录下,具体可以根据自己需要选择,后面能对应上就行。
也可以使用windterm软件进行ssh登录,可以手动创建文件夹。
mkdir /opt/mosquitto/config
mkdir /opt/mosquitto/log
mkdir /opt/mosquitto/data
touch /opt/mosquitto/config/pwfile.conf
config是存放mqtt的配置文件
log是目录文件
data是数据文件
pwfile.conf是mqtt的用户账号密码配置文件
文件夹授权
chmod -R 755 /opt/mosquitto
chmod -R 777 /opt/mosquitto/log
(3)编辑配置文件
vim /opt/mosquitto/config/mosquitto.conf
这个命令是编辑config目录下的mosquitto.conf文件
如果没有vim,使用nano
nano /opt/mosquitto/config/mosquitto.conf
配置文件内容:
persistence true
persistence_location /mosquitto/data
log_dest file /mosquitto/log/mosquitto.log
log_dest stdout
listener 1883
allow_anonymous false
# 指定密码文件
password_file /mosquitto/config/pwfile.conf
vim编辑时,按 i 键后才可以输入。保存是先按Esc,按输入 :wq。
nano编辑时,Ctrl+O保存。Ctrl+X退出。
(4)启动容器
docker run -it --name=mqtt --privileged \
--restart always \
-p 1883:1883 -p 9001:9001 \
-v /opt/mosquitto/config/mosquitto.conf:/mosquitto/config/mosquitto.conf \
-v /opt/mosquitto/config/pwfile.conf:/mosquitto/config/pwfile.conf \
-v /opt/mosquitto/data:/mosquitto/data \
-v /opt/mosquitto/log:/mosquitto/log \
eclipse-mosquitto
这里我创建了一个名字叫做“mqtt”的容器
(5)配置MQTT账号密码
进入mqtt的容器
docker exec -it mqtt sh
进入容器后,会变成这样
mosquitto_passwd -b /mosquitto/config/pwfile.conf username password
(username为用户名,password为密码,自己修改)
这个命令是用来设置MQTT账号密码的,比如我设置一个用户名为admin,密码为public
mosquitto_passwd -b /mosquitto/config/pwfile.conf admin public
报错修复:
一般输入后,很大概率会提示报错,需要修复这些报错
比如这里报错,提示需要给文件授权,按照提示输入,即可解决
chmod 0700 /mosquitto/config/pwfile.conf
这里报错,需要root组,我们需要输入下面的命令
chown root:root /mosquitto/config/pwfile.conf
设置成功:
mosquitto_passwd -b /mosquitto/config/pwfile.conf admin public
直到我们输入这个代码,没有任何返回时,代表设置成功!
这时候我们打开之前创建在config目录下的,pwfile.conf文件,会显示如下:
admin:$7$101$cgpQxjOHRdnfnWvp$XRETOw47AfobPBJI2I2Uox73ylpl77nUnyE9KYBYJSDuRrlsHhGvZG+8A9Wu8WJMETQDp6hSUiz0qI1jmaAMcg==
admin后的密码是被加密处理了。
(6)重启docker容器
docker restart mqtt
重启之后,使用账号admin,密码public,就能够正常使用了。
四、homeassistant添加MQTT
安装mqtt主要是为了homeassistant使用,同时也方便测试,是否安装成功。
1、配置--设备与服务--添加集成
MQTT是homeassistant自带的,点击配置即可。