如何通过 MQTT 发送包含不同数据类型的消息?



我正在尝试通过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 格式复杂,但足够标准化,您至少可以说您正在尝试与其他应用程序兼容。

相关内容

最新更新