python中mqtt的msg.payload.split失败。如何修复?

python中mqtt的msg.payload.split失败。如何修复?,python,mqtt,payload,Python,Mqtt,Payload,我已经创建了一个MQTT类。它确实连接良好,并在连接时发布“在线”消息。然而,on_message方法出现了一些问题,因为它启动时无法拆分有效负载 class mqtt_function(): def __init__(self): self.mqttc = mqtt.Client() # MQTT settings here self.mqttc.loop_forever() def on_connect(self, client

我已经创建了一个MQTT类。它确实连接良好,并在连接时发布“在线”消息。然而,on_message方法出现了一些问题,因为它启动时无法拆分有效负载

class mqtt_function():
    def __init__(self):
        self.mqttc = mqtt.Client()
        # MQTT settings here
        self.mqttc.loop_forever()
    def on_connect(self, client, userdata,flags, rc):
        message = "connected with rc: " + str(rc)
        self.mqttc.subscribe(self.topic, 2)
        print("subscribed to ", self.topic)
        self.mqttc.publish(self.topicStatus, "Online", 1, True)
    def on_message(self, client, obj, msg):
        print("on_message method started")
        print(msg.payload)
        info = msg.payload.split(",")
        print("message was split")
返回

subscribed to commands/home
on_message method started
b'60,1581638400'
期望:
msg.payload.split应该用逗号将有效负载消息分隔到名为info的列表中。然而,这并没有发生

问题在于理解msg.payload格式

虽然print(msg.payload)返回一个清晰的文本,但msg.payload不是字符串,而是ASCII码。将msg.payload从ASCII转换为字符串后,可以使用.split函数。 以下是mqtt有效负载的工作转换

    def on_message(self, client, obj, msg):
        characters = [chr(ascii) for ascii in msg.payload] # Convert ASCII to char
        chars_joined = ''.join(characters) # Join chars to a string
        received_message = chars_joined.split(",")     # Split string by comma