web-dev-qa-db-ja.com

クライアントのMQTTソケットエラー<不明>

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はローカルLANに配線されたETH0でセットアップされ、192.168.1.50のIPアドレスを持っています

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サービスmosquittoを停止Sudoサービスmosquittoを開始:

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のソケットエラーの原因を教えてもらえますか?

10
rwkiii

私は蚊に接続するArduinoから同様の問題に遭遇していました:

_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.
_

最初の接続は機能し、その後頻繁にソケットエラーが発生し、最終的には完全に機能しなくなります。

掘り下げた後、PubSubClientのloop()関数を呼び出していなかったことがわかりました。これがないと、接続は適切に処理されず、タイムアウトとソケットエラーが発生します。 client.loop()関数にloop()を追加してみてください。

3
madleech

私は同じエラーに直面していたので、このスレッドに来ました。さらにトラブルシューティングを行った後、認証構成に関連していました-クライアント(Arduino)は匿名で接続しようとして(パスワードなし)、ブローカー(Pi)は認証された接続のみを許可するようにセットアップされました(MQTT構成でallow_anonymous false) )。

Arduino接続コードに正しいパスワードを追加すると、問題が解決しました。

2
Bogd

匿名で接続する場合、問題が発生しました。ユーザー名とパスワードとして「」を指定することは、明らかに匿名では不十分です。接続ステートメントの方がうまく機能することを言及しないでください。

//mqtt_user = ""
//mqtt_password =""
//if (client.connect(mqtt_clientid, mqtt_user, mqtt_password)) {
if (client.connect(mqtt_clientid)) {
1
ExploWare