You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

树莓派3B+(Raspbian)MQTT启动失败:缺少callback_api_version参数

问题解决:pi_mqtt_gpio启动报错TypeError: __init__() missing required 'callback_api_version'

问题背景

使用无SD卡的树莓派3B+,通过MQTT接收Home Assistant指令控制GPIO,此前运行正常,改为有线网络后3台设备需重装。按官方文档重新安装后,supervisor启动pi_mqtt_gpio时卡在STARTING状态,日志报错:

pi@raspberrypi005:~ $ sudo tail /var/log/pi-mqtt-gpio.log
    return _run_code(code, main_globals, None,
  File "/usr/lib/python3.9/runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "/home/pi/ve/lib/python3.9/site-packages/pi_mqtt_gpio/server.py", line 1269, in <module>
    main(args)
  File "/home/pi/ve/lib/python3.9/site-packages/pi_mqtt_gpio/server.py", line 1064, in main
    client = init_mqtt(config["mqtt"], config["digital_outputs"], config["stream_writes"])
  File "/home/pi/ve/lib/python3.9/site-packages/pi_mqtt_gpio/server.py", line 410, in init_mqtt
    client = mqtt.Client(client_id=client_id, clean_session=False, protocol=protocol)
TypeError: __init__() missing 1 required positional argument: 'callback_api_version'

已尝试:旧版Raspbian(32/64位)、不同Python版本(含3.7.3、Pyenv切换版本),排除Home Assistant配置问题(另外2台设备正常运行)。


原因分析

报错根源是paho-mqtt版本不兼容:pi_mqtt_gpio的旧代码基于paho-mqtt v1.x版本编写,新安装环境会自动拉取最新的paho-mqtt v2.0+版本,该版本对mqtt.Client()初始化方法新增了强制必填的callback_api_version参数,旧代码未适配此变化。

解决方案

方案1:降级paho-mqtt到兼容版本

在虚拟环境中执行以下命令:

# 进入虚拟环境
source /home/pi/ve/bin/activate
# 卸载当前paho-mqtt
pip uninstall -y paho-mqtt
# 安装兼容的1.x版本(示例为1.6.1)
pip install paho-mqtt==1.6.1

重启supervisor服务:

sudo supervisorctl restart pi_mqtt_gpio

方案2:修改pi_mqtt_gpio代码适配新版本

若需使用paho-mqtt v2.0+,修改/home/pi/ve/lib/python3.9/site-packages/pi_mqtt_gpio/server.py第410行,添加callback_api_version参数:

# 修改前
client = mqtt.Client(client_id=client_id, clean_session=False, protocol=protocol)
# 修改后
client = mqtt.Client(client_id=client_id, clean_session=False, protocol=protocol, callback_api_version=mqtt.CallbackAPIVersion.VERSION1)

保存文件后重启supervisor服务即可。

方案3:锁定依赖版本(避免后续重装出问题)

在虚拟环境的requirements.txt中添加固定版本的paho-mqtt,防止下次安装自动更新:

paho-mqtt==1.6.1

内容的提问来源于stack exchange,提问作者user1527079

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 17:01:07