如何解决python mqtt订阅多条消息
我确实发布了多封邮件:
#!/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,rc):
print("Client Got Disconnected")
def on_message(client,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"]))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。