我在 Raspberry Pi 上设置了 MQTT 并为代理配置了 Arduino Uno,但我在 /var/log/mosquitto/mosquitto.log 文件中看到以下条目:
New connection from 192.168.10.114 on port 1883.
Socket error on client <unknown>, disconnecting.
Pi 设置了 ETH0 连接到我的本地 LAN,IP 地址为 192.168.1.50
Pi 上还有一个 WiFi AP 设置。 Arduino Uno 通过 WiFi 连接以发送/接收 MQTT 消息。 WiFi AP 的 IP 地址为 192.168.10.1,并通过 dnsmasq
提供 DHCP 租约。
我尝试在本地 MQTT 代理服务器(Pi)上发布和订阅测试并得到相同的错误:
Command:
mosquitto_sub -h 192.168.10.1 -t topic
mosquitto.log:
New connection from 192.168.10.1 on port 1883.
New client connected from 192.168.10.1 as mosqsub/1837-raspberryp (cl, k60).
Socket error on client <unknown>, disconnecting.
这是/etc/mosquitto/mosquitto.conf:
pid_file /var/run/mosquitto.pid
persistence true
log_dest file /var/log/mosquitto/mosquitto.log
allow_anonymous true
include_dir /etc/mosquitto/conf.d
sudo service mosquitto stop sudo service mosquitto start:
mosquitto version 1.4.8 terminating
mosquitto version 1.4.8 (build date Sun, 14 Feb 2016 15:06:55 +0000) starting
Config loaded from /etc/mosquitto/mosquitto.conf.
Opening ipv4 listen socket on port 1883.
Opening ipv6 listen socket on port 1883.
我的接口配置可能存在问题。这是/etc/network/interfaces:
source-directory /etc/network/interfaces.d
auto lo
iface lo inet loopback
iface eth0 inet manual
auto wlan0
allow-hotplug wlan0
iface wlan0 inet static
address 192.168.10.1
netmask 255.255.255.0
谁能指出我在 MQTT 上的套接字错误来自哪里?
原文由 rwkiii 发布,翻译遵循 CC BY-SA 4.0 许可协议
我来到这个线程是因为我面临同样的错误。经过更多故障排除后,它与身份验证配置有关 - 客户端(Arduino)试图匿名连接(没有密码),而代理(Pi)设置为仅允许经过身份验证的连接(MQTT 配置中的 allow_anonymous false )。
将正确的密码添加到 Arduino 连接代码为我解决了这个问题。