在某些时候,我需要查看特定主题“topicName”的历史记录。我怎样才能在Python中做到这一点?
paho-mqtt
不会自动保存历史记录。您必须将每条传入的 MQTT 消息添加到历史对象中。像这样:
import paho.mqtt.client as mqtt
history = []
def on_message(client, userdata, message):
history.append(message))
client = mqtt.Client()
client.on_message = on_message
client.connect(ADDRESS, PORT, 60)
client.subscribe(TOPIC, 0)
client.loop_forever()
然后在某个时刻您可以查看历史数据。您还可以使用
history = []
清除历史记录。我希望这能引导您走向正确的方向。
简短回答:你不
(MQTT 协议要求代理仅存储当前离线且请求高 QOS 订阅的已知客户端的消息,否则它不会保留任何状态,客户端库也不会为您保留历史记录)
更长的答案:
查看发布到主题的消息历史记录的唯一方法是设置客户端订阅该主题并将它们存储在某个位置(例如数据库中),然后查询该存储。 (一些经纪商有插件支持可以做到这一点)
MQTT 没有开箱即用,但您可以使用文件系统或数据库。根据消息的大小,如果它们小于 10KB,那么您可以使用 Timescale 数据库,如果它们大于某些 Blob 存储可能是更好的解决方案,或者使用 ReductStore 作为特定解决方案。