在前面的文章《》中我把homeassistant的NGINX反向代理服务器安装到了我的华硕AC86U中,成功地利用了华硕自带的域名和证书,实现homeassistant的HTTPS访问。后来我又觉得homeassistant中常用的MQTT协议服务器Mosquitto理想安家之地仍然是路由器。因为MQTT协议是基于TCP/IP协议的物联网通信协议,TCP/IP协议的反正都是要过路由器的,路由器本来就是网络中枢,而Mosquitto服务器作为MQTT通信中枢,两者天然适合在一起。还有路由器不经常重启,会保证MQTT服务一直在,并且如果真的路由器重启,装在其他地方的MQTT服务器没了路由器,也无法通信。
那么怎么在华硕路由器上安装Mosquitto呢?
1、刷梅林固件,并开启ssh
刷梅林固件的教程,站内及互联网上有很多,并且华硕路由刷梅林也很简单,跟升级官方固件差不多,我就不再赘述了。刷完梅林后开启ssh。
2、格式化U盘
安装entware必须插U盘,并且用梅林自带安装脚本安装,必须把U盘格式成Ext4等文件格式。不过格式化也很简单,插上U盘。ssh连接到路由器后输入 amtm,再输入fd,然后按照提示一步一步操作即可。
3、安装entware
U盘格式化完成后,继续用梅林自带的amtm工具安装entware。依然很简单。输入amtm后再输入ep,然后按照提示,做好选择,最后就能自动安装成功了。
4、安装Mosquitto服务器程序。在ssh命令行中输入opkg install mosquitto-nossl。
编辑Mosquitto设置文件。在Mosquitto配置文件夹下输入 nano mosquitto.conf (没安装nano的可以用opkg install nano进行安装),然后复制下面两行到文件最前面。然后CTRL X退出编辑,输入Y,按下enter键保存修改。
allow_anonymous false
password_file /etc/mosquitto/pwfile
然后在同一目录下(/etc/mosquitto)新建一个文件名为“pwfile”的文件(命令为nano pwfile),然后输入“mqtt用户名(你自己随意设置):密码”,然后同样CTRL X退出编辑,输入Y,按下enter键保存修改。
5、启动Mosquitto
我们修改完配置文件后,在命令行输入mosquitto进行启动。但是发生下面的报警。提示用户mosquitto不存在。
那么添加用户mosquitto吧,提示添加用户命令不存在
那么我变通一下用已存在的用户启动mosquitto吧,继续nano mosquitto.conf修改配置文件,把# user mosquitto 前#取消掉,并把mosquitto修改成admin。再次启动mosquitto,依然报用户mosquitto不存在。看来修改用户没起作用。经过查询发现mosquitto并没有自动加载mosquitto.conf配置,我们需要用如下命令,让mosquitto加载mosquitto.conf配置
mosquitto -c /tmp/mnt/mysda/entware/etc/mosquitto/mosquitto -d
这样mosquitto就在后台启动了。
6、但是当我们重启路由时mosquitto并不能自动启动。所以我们需要写个脚本,让路由启动时启动mosquitto。cd /jffs/scripts 然后nano mqttsart,输入下面的内容,然后保存退出。
然后还需要给该文件执行权限。chmod a+rx /jffs/scripts/*
最后可以reboot重启了。
7、最后你就可以用你node-red或手机上的MQTTool软件测试MQTT服务器是否正常启动了。
这次先到这里,homeassistant中使用MQTT的地方我们下次再说。
如果您爱好数码电子产品和智能家居,欢迎大家关注、点赞、收藏,你们的鼓励,就是我创作的动力。