首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >订阅和阅读有关mqtt蚊子使用泛美卫生组织python的几个主题

订阅和阅读有关mqtt蚊子使用泛美卫生组织python的几个主题
EN

Stack Overflow用户
提问于 2017-09-13 07:14:48
回答 1查看 4K关注 0票数 1

我设法发表了几个主题,并阅读了其中一个。我需要做的是倾听和阅读所有已发表的主题,并获取信息。这是我使用的代码:

  1. 将消息发布到3个主题: #!/usr/bin/env将python3 paho.mqtt.client导入为mqtt client = mqtt.Client() client.connect("localhost",1883,60) client.publish("topic/1","400区350320,410");client.publish("topic/2","200 x 350420x+ 110");client.publish("topic/3","200维多350 420双倍“);client.disconnect();
  2. 订阅和读取一个主题的消息 #!/usr/bin/env python3将paho.mqtt.client导入为mqttClient导入时间def on_connect(客户端、用户数据、标志、rc):如果rc == 0: print("Connected to broker")全局连接#使用全局变量Connected = True #信号连接,否则:print(“连接失败”) def on_message(客户端,用户数据,消息):打印“接收到的消息:”+ message.payload Connected = False broker_address= "localhost“端口= 1883 client = mqttClient.Client("Python") client.on_connect= on_connect client.on_message= on_message client.connect(broker_address,( port=port) client.loop_start() while != True: time.sleep(0.1) client.subscribe("topic/2")尝试:而True: time.sleep(1),除了KeyboardInterrupt:打印"exiting“client.disconnect() client.loop_stop()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-13 07:26:39

您可以多次调用client.subscribe()函数来订阅多个主题。

另外,您应该将调用移动到订阅on_connect回调,以消除对第一个循环的需求。

代码语言:javascript
复制
#!/usr/bin/env python3

import paho.mqtt.client as mqttClient
import time

def on_connect(client, userdata, flags, rc):
    if rc == 0:
        print("Connected to broker")
        client.subscribe("topic/1")
        client.subscribe("topic/2")
        client.subscribe("topic/3")
        client.subscribe("topic/4")

    else:
        print("Connection failed")

def on_message(client, userdata, message):
    print("Message received : "  + str(message.payload) + " on " + message.topic)


broker_address= "localhost"          
port = 1883                          

client = mqttClient.Client("Python")          
client.on_connect= on_connect    
client.on_message= on_message        
client.connect(broker_address, port=port)     
client.loop_start()


try:
    while True:
        time.sleep(1)

except KeyboardInterrupt:
    print("exiting")
    client.disconnect()
    client.loop_stop()

编辑:

您还可以一次订阅多个主题,语法如下

代码语言:javascript
复制
client.subscribe([("topic/1", 0), ("topic/2", 0), ("topic/3", 0),("topic/4", 0)])
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46191152

复制
相关文章

相似问题

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