Ubuntu+Mosquitto+Paho-MQTT出现invalid protocol version错误求助
MQTT客户端连接报错:invalid protocol version(mid=1)
环境信息
- 系统:Ubuntu 18.04(运行于NVIDIA Jetson设备)
- MQTT Broker:Mosquitto 2.0.15
- Python客户端库:Paho-MQTT 1.6.1
问题现象
通过Python客户端向本地Mosquitto Broker发布消息时,持续收到消息标识符(mid)为1的“invalid protocol version”错误。已尝试指定MQTTv5(Broker明确支持该版本)和MQTTv31协议版本,均无法解决问题。
已完成的排查
- Broker状态正常:
执行命令systemctl status mosquitto,输出显示Broker处于活跃运行状态:
mosquitto.service - Mosquitto MQTT Broker Loaded: loaded (/lib/systemd/system/mosquitto.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2024-01-06 19:10:01 CET; 1h 35min ago Docs: man:mosquitto.conf(5) man:mosquitto(8) Main PID: 22604 (mosquitto) Tasks: 1 (limit: 4180) CGroup: /system.slice/mosquitto.service └─22604 /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf Jan 06 19:10:01 gabe-desktop systemd[1]: Starting Mosquitto MQTT Broker... Jan 06 19:10:01 gabe-desktop systemd[1]: Started Mosquitto MQTT Broker.
- 端口监听正常:
执行命令netstat -at,确认1883端口在localhost和ip6-localhost上正常监听:
Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:sunrpc 0.0.0.0:* LISTEN tcp 0 0 localhost:domain 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN tcp 0 0 localhost:1883 0.0.0.0:* LISTEN tcp 0 0 localhost:40283 0.0.0.0:* LISTEN tcp 0 0 localhost:42269 0.0.0.0:* LISTEN tcp 0 0 localhost:34941 0.0.0.0:* LISTEN tcp 0 0 localhost:40451 0.0.0.0:* LISTEN tcp 0 0 localhost:gpsd 0.0.0.0:* LISTEN tcp 0 0 localhost:40283 localhost:47786 ESTABLISHED tcp 0 0 gabe-desktop:35130 13.107.5.93:https ESTABLISHED tcp 0 108 gabe-desktop:ssh Gabes-MBP:53006 ESTABLISHED tcp 0 0 gabe-desktop:35140 13.107.5.93:https ESTABLISHED tcp 0 0 localhost:40283 localhost:47788 ESTABLISHED tcp 0 0 localhost:47786 localhost:40283 ESTABLISHED tcp 0 0 localhost:47788 localhost:40283 ESTABLISHED tcp 0 0 localhost:40283 localhost:47272 CLOSE_WAIT tcp6 0 0 [::]:sunrpc [::]:* LISTEN tcp6 0 0 [::]:ssh [::]:* LISTEN tcp6 0 0 ip6-localhost:1883 [::]:* LISTEN tcp6 0 0 ip6-localhost:gpsd [::]:* LISTEN
命令行客户端测试正常:
使用mosquitto_sub和mosquitto_pub工具测试Broker通信,功能完全正常。已检查Mosquitto配置文件:未发现异常配置项。
Python客户端代码及错误输出
发布代码
import paho.mqtt.client as mqtt # MQTT broker information BROKER_ADDRESS = "localhost" PORT = 1883 TOPIC = "testing" RESPONSE = { 0: "connection succeeded", 1: "connection failed - incorrect protocol version", 2: "connection failed - invalid client identifier", 3: "connection failed - the broker is not available", 4: "connection failed - wrong username or password", 5: "connection failed - unauthorized" } def on_publish(client, data, mid): print(f"Connected to broker with status: {mid}: {RESPONSE.get(mid, 'Unknown')}") def main(): client = mqtt.Client(client_id="jetson", protocol=mqtt.MQTTv5) # Set the callback function for when the publisher connects to the broker client.on_publish = on_publish # Connect to the broker client.connect(BROKER_ADDRESS, PORT) # Publish a message to the "testing" topic message = "Hello, world!" client.publish(TOPIC, message) # Keep client running "forever" client.loop_forever() if __name__ == '__main__': main()
错误输出
Connected to broker with status: 1: connection failed - incorrect protocol version
请求帮助解决该Python客户端的连接报错问题。
内容的提问来源于stack exchange,提问作者Gabe Stechschulte
相关产品推荐
相关产品推荐

