我正在尝试通过websocket向代理发送消息。该消息包含表示传感器数据的数字,因此该消息可以是整数和浮点数的混合。当我运行代码时,我得到TypeError: payload must be a string, bytearray, int, float or None.
如何更改代码以发送包含整数和浮点数的消息?我正在使用CloudMQTT作为代理。
完整代码:
import paho.mqtt.client as mqtt
import time
client = mqtt.Client()
client.username_pw_set("User", "Password")
client.connect("Server", "Port")
num_one = 5.83
num_two = -12.46
num_three = 2
message = (num_one, num_two, num_three)
while True:
client.publish("topic", message)
time.sleep(1)
看起来您的问题是您发送的消息是一个元组。你可能想要
message = (num_one, num_two, num_three)
message = ''.join([str(x) for x in message])
这会将每个数字转换为字符串,然后将它们连接到单个字符串。
为消息选择适当的二进制或基于文本的格式,并以该格式对结构进行编码。然后,它将是字节数组或字符串。
除非有充分的理由推出自己的格式,否则我建议使用 SenML,因为它几乎不比大多数非标准 JSON 格式复杂,但足够标准化,您至少可以说您正在尝试与其他应用程序兼容。