目录
MQTTX无法连接树莓派mosquitto2.0.14版本服务器的问题
Windows版本:
安装
使用的是mosquitto,下载网址:
无脑安装即可,可参考:
Windows下搭建MQTT服务器_CodingPioneer的博客-CSDN博客_mqtt服务器
但是使用这个方法
mosquitto_passwd.exe -c pwfile.example admin
创建用户不成功,总是提示:
Password:Error:Empty password。
百度了很多次,没有一个相关的博客,无奈,甚是无奈。
翻看一下help手册吧,终于还是找到了解决方案:
mosquitto_passwd -c -b pwfile.example admin 111111
然后打开pwfile.example文件,发现已经替换过去了,Nice!
然后就可以启动服务了,具体可参照上面的博客。
启动mosquitto服务:
在 计算机->管理->服务和应用程序->服务,英文状态下按下m,跳转到M开头的服务,然后选择 mosquitto broker,重启动即可。
订阅主题:
mosquitto_sub -h 127.0.0.1 -p 7788 -u admin -P 111111 -v -t localNet_test
发布主题:
mosquitto_pub -h 127.0.0.1 -p 7788 -u admin -P 111111 -t localNet_test -m "消息测试"
-m后的是消息内容,可以双引,也可以不引
树莓派:
安装
参考下面的连接,安装是使用的编译源码的方法。
树莓派+Ubuntu 20.04安装Mosquitto MQTT服务_晨之清风的博客-CSDN博客_树莓派mosquitto基本上没什么问题。
启动
启动服务和windows不同,使用命令行进行:
在调试的时候使用下面的命令,-v 查看运行信息:
mosquitto -c /etc/mosquitto/mosquitto.conf -v
实际使用时命令多个 -d 在后台运行:
mosquitto -d -c /etc/mosquitto/mosquitto.conf
发布
mosquitto_pub -h 127.0.0.1 -p 7788 -u admin -P 111111 -t localNet_test -m "Hello!"
订阅
mosquitto_sub -h 127.0.0.1 -p 7788 -u admin -P 111111 -t localNet_test
Address already in use 排雷
在启动服务的时候出问题,默认的1883端口占用,然后提示错误:
Address already in use
然后使用:
ps -ef | grep mosquitto
找到相关的进程号,然后杀掉:
sudo kill xxxx
这里注意,不要使用 kill -9 xxxx,不知道为什么使用 kill -9 杀不彻底。然后就正常启动了
我配置在树莓派上的mosquitto的端口号是 7788, 账号密码是admin 111111。
基本上都是启动了相关的服务没有关闭。查看下面的连接。
mosquitto启动时Address already in use 和 一般的 Address already in use_林尧彬的博客-CSDN博客
局域网服务器的配置(单IP多IP):
在Windows上安装好之后,mosquitto broker服务会开机自动启动,很方便,树莓派上基本都是订阅或者发布,无需启动broker即可直接使用。
服务器配置在局域网中,只需要配置以下几条:
listener 7788 // 监听的端口,此时必须只有一个IP,多个IP的话这样设置是无效的
listener 7788 192.168.18.66 // 当网卡有多个IP时,必须指定其中一个IP,订阅或发布时也必须使用 -h 指定服务器的IP
allow_anonymous false // 不允许匿名访问,必须使用设置好的用户名和密码
password_file D:/mosquitto/pwfile.example //设置好密码文件,也就是之前设置密码的文件
其他的根据需要自行设定,包括帧长度,默认是无限长;等
MQTTX无法连接树莓派mosquitto2.0.14版本服务器的问题
需要指定服务器
sudo nano /etc/mosquitto/mosquitto.conf
添加socket_domain ipv4 protocol mqtt
然后重启,记得使用mosquitto.conf这个配置重启
自动启动mosquitto
1、修改rc-local.service文件
sudo nano /lib/systemd/system/rc-local.service
2、最后增加这些内容:
[Install]
WantedBy=multi-user.target
Alias=rc-local.service
3、增加以后,打开rc.local
sudo nano /etc/rc.local
4、向其中添加:
#!/bin/sh
mosquitto -d -c /etc/mosquitto/mosquitto.conf
exit 0
5、修改权限
sudo chmod +x /etc/rc.local
6、重启验证