I have setup MQTT on a Raspberry Pi and configured an Arduino Uno to the broker, but I am seeing the following entry in the /var/log/mosquitto/mosquitto.log file:
New connection from 192.168.10.114 on port 1883.
Socket error on client <unknown>, disconnecting.
The Pi is setup with ETH0 wired to my local LAN and has an IP address of 192.168.1.50
There is also a WiFi AP setup on the Pi. The Arduino Uno connects via WiFi to send/receive MQTT messages. The WiFi AP has an IP address of 192.168.10.1 and provides DHCP leases via dnsmasq
.
I have tried publishing and subscribing test on the local MQTT broker server (the Pi) and get the same error:
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.
Here is /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.
There might be an issue in my interfaces configuration. Here is /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
Can anyone point me on where the socket error is coming from on MQTT?
I came to this thread because I was facing the same error. After some more troubleshooting, it was related to the authentication configuration - the client (Arduino) was trying to connect anonymously (with no password), while the broker (Pi) was set up to only allow authenticated connections (allow_anonymous false in the MQTT configuration).
Adding the correct password to the Arduino connection code solved the issue for me.
I was encountering similar issues from an Arduino connecting to mosquitto:
mosquitto_1 | 1551412354: New connection from 10.0.3.9 on port 1883.
mosquitto_1 | 1551412354: New client connected from 10.0.3.9 as weather-station (c1, k15).
mosquitto_1 | 1551412376: Client weather-station has exceeded timeout, disconnecting.
mosquitto_1 | 1551412376: Socket error on client weather-station, disconnecting.
mosquitto_1 | 1551412402: New connection from 10.0.3.9 on port 1883.
mosquitto_1 | 1551412402: New client connected from 10.0.3.9 as weather-station (c1, k15).
mosquitto_1 | 1551412424: Client weather-station has exceeded timeout, disconnecting.
mosquitto_1 | 1551412424: Socket error on client weather-station, disconnecting.
The initial connection would work, then it would encounter frequent socket errors, eventually totally failing to work.
After some digging, I discovered I wasn't calling the loop()
function of PubSubClient. Without this the connection isn't properly serviced, resulting in timeouts and socket errors. Try adding client.loop()
to your loop()
function.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With