繁体   English   中英

Paho MQTT模块未从订阅的主题返回完整的消息

[英]Paho MQTT module not returning full message from subscribed topic

我目前正在使用通过MQTT发送字节的传感器,并且我正在使用Paho MQTT模块制作测试环境,因此我可以了解它的后端过程。 这是我的代码,用于连续打印主题发送的消息。

def on_message(sensorclt, userdata, msg):
    print(msg.payload)

def on_connect(sensorclt, userdata, flags, rc):
    if rc == 0:
        print('Connected')
        sensorclt.subscribe([(Topics[0], 0), (Topics[1], 0), (Topics[2], 0)])
    else:
        print("Failed to connect")
sensorclt = mqtt.Client()
sensorclt.connect(host='iot.eclipse.org', port=1883)
sensorclt.on_connect = on_connect
sensorclt.on_message = on_message
sensorclt.loop_forever()

这是几秒钟的输出结果:

b'\x01\x01\x00\x1f\xa4\x94Z\xe3\x03\x00'
b'\x01\x01\x01\x1f\xa4\x94Z\n\x00\x80'
b'\x01\x01\x02\x1f\xa4\x94Z\x06\x00\x00'
b'\x01\x01\x00 \xa4\x94Z\xe4\x03\x00'
b'\x01\x01\x01 \xa4\x94Z\n\x00\x80'
b'\x01\x01\x02 \xa4\x94Z\x06\x00\x00'
b'\x01\x01\x00!\xa4\x94Z\xe3\x03\x00'
b'\x01\x01\x01!\xa4\x94Z\t\x00\x80'

问题是传感器制造商教程说输出指向时应该有10个字节,而不是8个字节,有时甚至是7个字节。 我可以使用一个简单的node-red环境证明信息,该主题实际上发送了10个字节,并且永远不会少于10个字节,而node-red总是接收10个字节,同样,它也同样如此。

以“ Complete Message Object”作为输出的节点红色调试节点

为什么会这样呢? 我该如何应对?

您显示的所有示例都只有10个字节:

'\x01' '\x01' '\x00' '\x1f' '\xa4' '\x94' 'Z' '\xe3' '\x03' '\x00'
'\x01' '\x01' '\x01' '\x1f' '\xa4' '\x94' 'Z' '\n' '\x00' '\x80'
'\x01' '\x01' '\x02' '\x1f' '\xa4' '\x94' 'Z' '\x06' '\x00' '\x00'
'\x01' '\x01' '\x00' ' ' '\xa4' '\x94' 'Z' '\xe4' '\x03' '\x00'
'\x01' '\x01' '\x01' ' ' '\xa4' '\x94' 'Z' '\n' '\x00' '\x80'
'\x01' '\x01' '\x02' ' ' '\xa4' '\x94' 'Z' '\x06' '\x00' '\x00'
'\x01' '\x01' '\x00' '!' '\xa4' '\x94' 'Z' '\xe3' '\x03' \x00'
'\x01' '\x01' '\x01' '!' '\xa4' '\x94' 'Z' '\t' '\x00' '\x80'

碰巧有些字节属于正常字符范围,例如!,Z,空格,换行(\\ n)或制表符(\\ t)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM