在某些时候,我需要查看特定主题'topicName'的历史记录。我如何在python中做到这一点?
简短的回答:你没有
(MQTT协议要求代理只存储当前处于脱机状态并请求高QOS订阅的已知客户机的消息,否则它不会保留任何状态,客户机库也不会为您保留历史记录)
长答:
查看发布到某个主题的消息历史的唯一方法是设置客户端订阅该主题并将其存储在某处(例如在数据库中),然后查询该存储。(有些代理有插件支持)
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 = []
清除历史记录。我希望这篇文章能给你指明正确的方向。