首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在python脚本中订阅两个主题MQTT

在python脚本中订阅两个主题MQTT
EN

Stack Overflow用户
提问于 2019-02-12 01:16:22
回答 2查看 3.2K关注 0票数 3

我有一个python脚本,它在MQTT中调优到一个主题,它工作得很好。

代码语言:javascript
复制
import paho.mqtt.client as mqtt #import the client1
import time
import json
import requests

def on_log(client, userdata, level, buf) :
    #print("log: "+buf)
    k=0

def on_connect(client, userdata, flags, rc) :
     if rc==0:
     print("connected ok")
else:
     print("not connected", rc)


def on_disconnect(client, userdata, flags, rc=0) :
    print("disconnect result code "+str(rc))


def on_message(client,userdata,msg) :
   global m_decode
   topic=msg.topic
   m_decode=str(msg.payload.decode("utf-8","ignore"))
   time.sleep(1)

   lora_s = str(m_decode)
   lora = {"lora_tram":lora_s}
   resp = requests.post('http://51.75.120.146/lora_tram_reception.php', data = lora)


broker_address="127.0.0.1:1883"
client = mqtt.Client("paca") #create new instance
client.on_connect=on_connect
client.on_disconnect=on_disconnect
client.on_log=on_log
client.on_message=on_message

print ("cnct to broker", broker_address)
client.connect("127.0.0.1", 1883, 60)
client.subscribe("gateway/a555b555c555d555/rx")
client.loop_forever()

我想同时订阅另一个话题!这样做有可能吗?

我尝试在下面添加client.subscribe(“网关/新主题/接收”):

代码语言:javascript
复制
client.subscribe("gateway/a555b555c555d555/rx")

它看起来像是在工作,但我不确定是不是像我们编码多个主题那样。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-12 21:38:41

您还可以在一条MQTT订阅消息中订阅多个主题。

代码语言:javascript
复制
client.subscribe([("gateway/a555b555c555d555/rx", 0), ("gateway/new topic/rx", 0)])

https://github.com/eclipse/paho.mqtt.python#subscribe-unsubscribe

票数 3
EN

Stack Overflow用户

发布于 2019-02-12 01:40:59

使用不同的主题多次调用subscribe是非常好的,您只需要在on_message回调中找出消息来自哪个主题即可。

您可以使用if语句来检查msg.topic值,然后相应地处理消息。

您可能还应该将对subscribe的调用移到on_connect回调中

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54635786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档