Mqtt 订阅和阅读多个主题
Mqtt Subscribing and reading from multiple topics
我需要读取两个传感器并在 pygame window 上获得结果。我有一个 pi 零 运行ning 作为传感器的发布者和经纪人。它创建了两个主题,"house" 和 "heat"。在第二个 pi(jessie on virtualbox)上,我 运行 下面的 python 脚本,我得到了预期的结果。因此我会问我选择创建两个不同的客户端(有两个不同的 on_message)是否是一个正确的选择,以便从两个不同的主题中获得两个值。
请原谅我的代码错误或不准确之处,我不是专家而且我一个月前才知道 Mosquitto。此代码的大部分是仅用于测试 mqtt 的原始代码。在网上冲浪我没有找到关于如何读取传感器值并将它们放入 window(如 pygame 或 Tkinter)的实际示例,而不使用云应用程序并使用 python 和 pi's ;有人知道这样的教程吗?
谢谢
import time
import paho.mqtt.client as paho
import pygame, sys
pygame.init()
screen = pygame.display.set_mode((640,480),0,32)
background = pygame.Surface(screen.get_size())
background.fill((0,0,0))
font = pygame.font.SysFont("comicsansms", 72)
broker = "192.168.100.21"
ss=''
tt=''
def omessage(client, userdata, message):
if message.topic=="house":
global ss
ss=(str(message.payload.decode("utf-8")+message.topic))
if message.topic=="heat":
global tt
tt=(str(message.payload.decode("utf-8")+message.topic))
client=paho.Client("cliente-001")
client.on_message=omessage
client.connect(broker)
client.loop_start()
client.subscribe("house")
client.subscribe("heat")
while True:
screen.blit(background, (0,0))
text=font.render(" %s" %ss, True, (0,255,0))
textRect = text.get_rect()
screen.blit(text,textRect)
text1=font.render(" %s" %tt, True, (0,255,0))
text1Rect = text1.get_rect(center=(150,150))
screen.blit(text1,text1Rect)
time.sleep(0.2)
pygame.display.update()
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
pygame.quit()
sys.exit()
我需要读取两个传感器并在 pygame window 上获得结果。我有一个 pi 零 运行ning 作为传感器的发布者和经纪人。它创建了两个主题,"house" 和 "heat"。在第二个 pi(jessie on virtualbox)上,我 运行 下面的 python 脚本,我得到了预期的结果。因此我会问我选择创建两个不同的客户端(有两个不同的 on_message)是否是一个正确的选择,以便从两个不同的主题中获得两个值。 请原谅我的代码错误或不准确之处,我不是专家而且我一个月前才知道 Mosquitto。此代码的大部分是仅用于测试 mqtt 的原始代码。在网上冲浪我没有找到关于如何读取传感器值并将它们放入 window(如 pygame 或 Tkinter)的实际示例,而不使用云应用程序并使用 python 和 pi's ;有人知道这样的教程吗? 谢谢
import time
import paho.mqtt.client as paho
import pygame, sys
pygame.init()
screen = pygame.display.set_mode((640,480),0,32)
background = pygame.Surface(screen.get_size())
background.fill((0,0,0))
font = pygame.font.SysFont("comicsansms", 72)
broker = "192.168.100.21"
ss=''
tt=''
def omessage(client, userdata, message):
if message.topic=="house":
global ss
ss=(str(message.payload.decode("utf-8")+message.topic))
if message.topic=="heat":
global tt
tt=(str(message.payload.decode("utf-8")+message.topic))
client=paho.Client("cliente-001")
client.on_message=omessage
client.connect(broker)
client.loop_start()
client.subscribe("house")
client.subscribe("heat")
while True:
screen.blit(background, (0,0))
text=font.render(" %s" %ss, True, (0,255,0))
textRect = text.get_rect()
screen.blit(text,textRect)
text1=font.render(" %s" %tt, True, (0,255,0))
text1Rect = text1.get_rect(center=(150,150))
screen.blit(text1,text1Rect)
time.sleep(0.2)
pygame.display.update()
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
pygame.quit()
sys.exit()