python中mqtt的msg.payload.split失败。如何修复?
我已经创建了一个MQTT类。它确实连接良好,并在连接时发布“在线”消息。然而,on_message方法出现了一些问题,因为它启动时无法拆分有效负载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
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