[英]python mqtt subscribe to mutliple message
我確實發布了多條消息:
#!/usr/bin/env python3
import paho.mqtt.publish as publish
topic1 = "testtopic/topic1"
topic2 = "testtopic/topic2"
val1 = b'54.8'
val2 = b'598.45'
val3 = b'4813.9'
msgs = [(topic1, val1),
(topic1, val2),
(topic2, val3)]
publish.multiple(msgs, hostname="localhost")
訂閱它時
#!/usr/bin/env python3
import paho.mqtt.client as mqtt
import json
broker_url = "localhost"
broker_port = 1883
def on_connect(client, userdata, flags, rc):
print("Connected With Result Code: {}".format(rc))
def on_disconnect(client, userdata, rc):
print("Client Got Disconnected")
def on_message(client, userdata, message):
msg = json.loads(message.payload.decode())
print("Message Recieved: " + str(msg))
client = mqtt.Client()
client.connect(broker_url, broker_port)
client.on_connect = on_connect
client.on_message = on_message
client.on_disconnect = on_disconnect
topic = "testtopic/#"
client.subscribe(topic, qos=0)
client.loop_forever()
我明白了
Connected With Result Code: 0
Message Recieved: 54.8
Message Recieved: 598.45
Message Recieved: 4813.9
我如何將三個值分配給單個變量(例如 value1 = 54.8、value2 = 598.45、value3 = 598.45)以便能夠像進行一些計算或將其保存到文件一樣使用它們。
您可以使用下面這樣的 JSON 格式..
#!/usr/bin/env python3
import paho.mqtt.publish as publish
topic1 = "testtopic/topic1"
topic2 = "testtopic/topic2"
val1 = b'54.8'
val2 = b'598.45'
val3 = b'4813.9'
payload1=json.dumps({"value1":val1, "value2":val2})
payload2=json.dumps({"value3":val3)
msgs = [(topic1, payload1),
(topic2, payload2)]
publish.multiple(msgs, hostname="localhost")
對於 on_message 函數中的訂閱者...
def on_message(client, userdata, message):
msg = json.loads(message.payload.decode())
res=json.loads(str(msg))
if message.topic == topic1:
print(str(res["value1"])+" & "+str(res["value2"]))
else:
print(str(res["value2"]))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.