如何从 mqtt 主题获取通配符值?
How to get wildcard value from mqtt topic?
假设我有多个设备,每个设备都有温度。所有与设备温度相关的消息都发布在主题 device/1/temerature
、device/2/temperature
等上。我使用 Python paho-mqtt 处理关于此主题发布的所有消息,并带有一个使用通配符表达式 client.message_on_callback_add("device/+/temperature", ...)
的回调函数。有没有办法获取通配符表达式的值,这里直接+
(w.o。需要解析msg.topic
)?
不,回调包括消息发布到的主题。
您可以从主题中提取所需的任何信息。
我相信您希望从主题中提取客户 ID。回调函数将 clientid 作为回调的一部分。请检查下面的函数 URL.
https://pypi.org/project/paho-mqtt/#callbacks
如果您对收到的消息使用默认回调函数,您将能够将客户端作为单独的参数获取。
在这个例子中,您可以在消息到达时获取订阅的主题。您可以拆分主题以从订阅的主题中获取通配符。
import paho.mqtt.client as mqtt
def on_connect(client, userdata, flags, rc):
client.subscribe("device/+/temperature")
client.message_callback_add("device/+/temperature", handler("device/+/temperature"))
def handler(subscribed_topic):
wildcard_expression = subscribed_topic
def on_message(client, userdata, msg):
print(msg.topic+" "+str(msg.payload), wildcard_expression)
return on_message
client = mqtt.Client()
client.on_connect = on_connect
client.connect(<mqtt broker url>, 1883, 60)
client.loop_forever()
假设我有多个设备,每个设备都有温度。所有与设备温度相关的消息都发布在主题 device/1/temerature
、device/2/temperature
等上。我使用 Python paho-mqtt 处理关于此主题发布的所有消息,并带有一个使用通配符表达式 client.message_on_callback_add("device/+/temperature", ...)
的回调函数。有没有办法获取通配符表达式的值,这里直接+
(w.o。需要解析msg.topic
)?
不,回调包括消息发布到的主题。
您可以从主题中提取所需的任何信息。
我相信您希望从主题中提取客户 ID。回调函数将 clientid 作为回调的一部分。请检查下面的函数 URL.
https://pypi.org/project/paho-mqtt/#callbacks
如果您对收到的消息使用默认回调函数,您将能够将客户端作为单独的参数获取。
在这个例子中,您可以在消息到达时获取订阅的主题。您可以拆分主题以从订阅的主题中获取通配符。
import paho.mqtt.client as mqtt
def on_connect(client, userdata, flags, rc):
client.subscribe("device/+/temperature")
client.message_callback_add("device/+/temperature", handler("device/+/temperature"))
def handler(subscribed_topic):
wildcard_expression = subscribed_topic
def on_message(client, userdata, msg):
print(msg.topic+" "+str(msg.payload), wildcard_expression)
return on_message
client = mqtt.Client()
client.on_connect = on_connect
client.connect(<mqtt broker url>, 1883, 60)
client.loop_forever()