You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GUIZERO结合MQTT传感器读数刷新文本功能无法正常更新问题求助

问题修正说明

核心错误点

  • MQTT的on_connect回调参数不符合paho-mqtt的规范,且未绑定到client实例,导致连接成功后无法自动订阅主题:
    • paho-mqtt要求on_connect回调必须接收client, userdata, flags, rc四个参数,原代码缺少flags和rc参数,函数内引用的rc变量未定义
    • 代码未执行client.on_connect = on_connect绑定操作,连接成功后不会触发订阅逻辑
  • MQTT后台循环被提前终止:client.loop_stop()被放在了app.display()之前,而app.display()是GUI的阻塞式主循环,程序运行到UI创建完成后就直接停止了MQTT消息处理循环,自然无法接收任何消息
  • 传感器读数赋值逻辑存在多余前缀:on_message中给sensorReading赋值时直接用str(message.payload),会保留字节串的b''前缀,显示不符合预期

修正后的完整代码

from guizero import App, Text
import paho.mqtt.client as mqtt 

sensorReading = ''

def on_connect(client, userdata, flags, rc):
    print("Connected with result code "+str(rc))
    # 连接成功后订阅主题,重连时会自动重新订阅
    client.subscribe("room/temperature")

def on_message(client, userdata, message):
    global sensorReading
    # 直接用解码后的内容赋值,避免b''前缀
    sensorReading = str(message.payload.decode("utf-8"))  
    print("message received " , sensorReading)
    print("message topic=",message.topic)
    print("message qos=",message.qos)
    print("message retain flag=",message.retain)

def updateReading():
    # 测试用发布逻辑,不需要可以删除
    # client.publish('room/temperature','84')
    reading.value = sensorReading
    reading.after(1000,updateReading)

brokerAddress = 'redacted'
client = mqtt.Client('GG1')
# 绑定on_connect回调
client.on_connect = on_connect
client.on_message = on_message

print("connecting to broker")
try:
    client.connect(brokerAddress, port=1883)
    print('Connection Successful!')
except:
    print('Connection Failed')
    exit(1)

app = App(title='Admin Page Test', layout='auto', height=480,width=640)
app.bg = 'white'

# 启动MQTT后台循环,只要程序不退出就一直运行
client.loop_start()
welcomeText = Text(app, text='Welcome!', size=40, font='Times New Roman', color='darkgreen', align='top')
clientReading = Text(app,text='Latest Reading is: ')
reading=Text(app,text='****')
reading.after(1000, updateReading)

app.display()
# GUI关闭后再停止MQTT循环
client.loop_stop()

内容的提问来源于stack exchange,提问作者Secretasianman7

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 23:24:00