为了更好的支持MQTT5.0、3.1.1 和 3.1 版本,paho-mqtt2.x更改了传递给 user-callback 的参数,如果再使用旧的回调,会报错Unsupported callback API version,提示你更新版本。
以下解决方案均在官方文档中找到:paho.mqtt.python/docs/migrations.rst at master · eclipse/paho.mqtt.python · GitHub
解决方案一,继续使用旧版本
第一种方法是继续使用旧版本的回调,需要在连接客户端的时候进行旧版本的声明
具体写法:
client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION1, client_id)
就是这样,代码的其余部分可以保持不变。
解决方案二,升级新版本的API回调
写法
同时需要更改其他回调函数的传参(如果有使用)
on_connect
def on_connect(client, userdata, flags, reason_code, properties):
on_disconnect
def on_disconnect(client, userdata, flags, reason_code, properties):
on_subscribe
def on_subscribe(client, userdata, mid, reason_codes, properties):
on_unsubscribe
def on_subscribe(client, userdata, mid, reason_codes, properties):
on_publish
def on_publish(client, userdata, mid, reason_codes, properties):