亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python - MQTT 多訂閱:消息來自哪個主題

Python - MQTT 多訂閱:消息來自哪個主題

江戶川亂折騰 2021-06-15 16:00:06
我有一個記錄器來記錄所有到達本地代理的 MQTT 消息。這個記錄器有多個訂閱,其中之一是“警報” - 它還會向用戶的手機發送短信(未顯示附加代碼)。我的問題(我想這有點新手)-但是有沒有辦法過濾到達的消息的來源?from sys import pathpath.append('/home/guy/.local/lib/python3.5/site-packages')import paho.mqtt.client as mqttfrom threading import Threadimport datetimeimport osclass LogMQTTactivity(Thread):    def __init__(self, sid=None, mqtt_server="192.168.2.113", username=None, password=None, topics=None, topic_qos=None,                 filename='/home/guy/MQTTlogger.log'):        Thread.__init__(self)        self.sid = sid        self.mqtt_server = mqtt_server        self.filename = filename        self.username = username        self.password = password        self.topics = topics        self.topic_qos = topic_qos        self.output2screen = 1        self.client, self.arrived_msg = None, None        self.check_logfile_valid()        self.log_header()    def log_header(self):        text = ' Connect to following topics '        x = 12        self.append_log('*' * x + text + x * "*")        for topic in self.topics:            self.append_log(topic)        self.append_log('*' * 2 * x + len(text) * "*")    def run(self):        self.client = mqtt.Client(str(self.sid))        self.client.on_connect = self.on_connect        self.client.on_message = self.on_message        if self.username is not None and self.password is not None:            self.client.username_pw_set(self.username, self.password)        self.client.connect(self.mqtt_server, 1883, 60)        self.client.loop_forever()    def on_connect(self, client, obj, flags, rc):        self.append_log(">> Connecting to MQTT mqtt_server %s: %d" % (self.mqtt_server, rc))        for topic in self.topics:            self.append_log(">> Subscribe topic: %s" % topic)            self.client.subscribe(topic, qos=self.topic_qos)    def on_message(self, client, obj, msg):        self.arrived_msg = msg.payload.decode()        self.append_log(self.arrived_msg)
查看完整描述

1 回答

?
翻過高山走不出你

TA貢獻1875條經驗 獲得超3個贊

msg傳入on_message回調的對象有一個topic字段,其中包含消息發布到的主題。


def on_message(self, client, obj, msg):

    print(msg.topic)

    self.arrived_msg = msg.payload.decode()

    self.append_log(self.arrived_msg)

正如此處的文檔中所述


查看完整回答
反對 回復 2021-06-16
  • 1 回答
  • 0 關注
  • 754 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號