我是Python的總新手,擁有非常基本的MQTT知識。將MQTT主題和消息放在數組中
我正在嘗試編寫一個訂閱通配符主題的python腳本,然後生成通配符下的主題列表。我明白MQTT協議並不適合這一點,所以我需要通過python來完成。我正在考慮將主題和消息放入數組中。
我有下列主題:
/天氣/電流/溫度
/天氣/電流/溼度
/天氣/電流/壓力
/天氣/電流/時間
在我的python腳本我正在訂閱/ weather/current /#。
例如,我想在陣列將是這樣的:
[/天氣/電流/溫度,消息]
[/天氣/電流/溼度,消息]
[/天氣/電流/壓力,消息]
[/天氣/電流/時間,消息]
我的腳本幾乎是標準的例子,我嘗試了幾種方法來達到這個目的,但是失敗了。我認爲我的根本問題是我對on_message函數缺乏瞭解。它是針對所有主題執行一次還是針對每個主題執行一次?
def on_connect(mqttc, obj, rc):
print("rc: "+str(rc))
def on_message(mqttc, obj, msg,):
# print(msg.topic+" "+str(msg.payload))
payload = str(msg.payload)
print(msg.topic+" Payload -> "+payload)
def on_publish(mqttc, obj, mid):
print("mid: "+str(mid))
def on_subscribe(mqttc, obj, mid, granted_qos):
print("Subscribed: "+str(mid)+" "+str(granted_qos))
def on_log(mqttc, obj, level, string):
print(string)
try:
mqttc = mqtt.Client("Python-MQTT-Sub")
mqttc = mqtt.Client()
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_publish = on_publish
mqttc.on_subscribe = on_subscribe
# Uncomment to enable debug messages
#mqttc.on_log = on_log
mqttc.connect("localhost", 1883, 60)
mqttc.subscribe("/weather/current/#", 0)
mqttc.loop_forever()
except KeyboardInterrupt:
print("\ninterrupt received, exiting...")
非常感謝你的魅力。 – Gregg