长沙之声
长沙之声 > 家居 > 正文

智能家居MQTT与路由器更配-华硕路由刷梅林安装使用Mosquitto方法

导读: 

在前面的文章《免费域名和证书你要不要?用华硕路由玩转智能家居homeassistant》中我把homeassistant的NGINX反向代理服务器安装到了我的华硕AC86U中,成功地利用了华硕自带的域

智能家居MQTT与路由器更配-华硕路由刷梅林安装使用Mosquitto方法

在前面的文章《免费域名和证书你要不要?用华硕路由玩转智能家居homeassistant》中我把homeassistant的NGINX反向代理服务器安装到了我的华硕AC86U中,成功地利用了华硕自带的域名和证书,实现homeassistant的HTTPS访问。后来我又觉得homeassistant中常用的MQTT协议服务器Mosquitto理想安家之地仍然是路由器。因为MQTT协议是基于TCP/IP协议的物联网通信协议,TCP/IP协议的反正都是要过路由器的,路由器本来就是网络中枢,而Mosquitto服务器作为MQTT通信中枢,两者天然适合在一起。还有路由器不经常重启,会保证MQTT服务一直在,并且如果真的路由器重启,装在其他地方的MQTT服务器没了路由器,也无法通信。

那么怎么在华硕路由器上安装Mosquitto呢?

1、刷梅林固件,并开启ssh

刷梅林固件的教程,站内及互联网上有很多,并且华硕路由刷梅林也很简单,跟升级官方固件差不多,我就不再赘述了。刷完梅林后开启ssh。

智能家居MQTT与路由器更配-华硕路由刷梅林安装使用Mosquitto方法

2、格式化U盘

安装entware必须插U盘,并且用梅林自带安装脚本安装,必须把U盘格式成Ext4等文件格式。不过格式化也很简单,插上U盘。ssh连接到路由器后输入 amtm,再输入fd,然后按照提示一步一步操作即可。

智能家居MQTT与路由器更配-华硕路由刷梅林安装使用Mosquitto方法

智能家居MQTT与路由器更配-华硕路由刷梅林安装使用Mosquitto方法

3、安装entware

U盘格式化完成后,继续用梅林自带的amtm工具安装entware。依然很简单。输入amtm后再输入ep,然后按照提示,做好选择,最后就能自动安装成功了。

智能家居MQTT与路由器更配-华硕路由刷梅林安装使用Mosquitto方法

4、安装Mosquitto服务器程序。在ssh命令行中输入opkg install mosquitto-nossl。

智能家居MQTT与路由器更配-华硕路由刷梅林安装使用Mosquitto方法

编辑Mosquitto设置文件。在Mosquitto配置文件夹下输入 nano mosquitto.conf (没安装nano的可以用opkg install nano进行安装),然后复制下面两行到文件最前面。然后CTRL X退出编辑,输入Y,按下enter键保存修改。

allow_anonymous false

password_file /etc/mosquitto/pwfile

智能家居MQTT与路由器更配-华硕路由刷梅林安装使用Mosquitto方法

然后在同一目录下(/etc/mosquitto)新建一个文件名为“pwfile”的文件(命令为nano pwfile),然后输入“mqtt用户名(你自己随意设置):密码”,然后同样CTRL X退出编辑,输入Y,按下enter键保存修改。

5、启动Mosquitto

我们修改完配置文件后,在命令行输入mosquitto进行启动。但是发生下面的报警。提示用户mosquitto不存在。

智能家居MQTT与路由器更配-华硕路由刷梅林安装使用Mosquitto方法

那么添加用户mosquitto吧,提示添加用户命令不存在

智能家居MQTT与路由器更配-华硕路由刷梅林安装使用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,输入下面的内容,然后保存退出。

智能家居MQTT与路由器更配-华硕路由刷梅林安装使用Mosquitto方法

然后还需要给该文件执行权限。chmod a+rx /jffs/scripts/*

智能家居MQTT与路由器更配-华硕路由刷梅林安装使用Mosquitto方法

最后可以reboot重启了。

7、最后你就可以用你node-red或手机上的MQTTool软件测试MQTT服务器是否正常启动了。

智能家居MQTT与路由器更配-华硕路由刷梅林安装使用Mosquitto方法

这次先到这里,homeassistant中使用MQTT的地方我们下次再说。


推荐阅读:红米1s