#python #mqtt #paho
Вопрос:
Мой клиент Paho MQTT выполняет следующие действия:
- Подпишитесь на
mytopic/#
- Сделай что-нибудь
- Опубликовать в
mytopic/#
Проблема:
Опубликованное сообщение на шаге 3 поступает на шаг 1. Я бы хотел избежать добавления sender
атрибута-в полезную нагрузку.
Есть ли правильный способ игнорировать самостоятельно опубликованные сообщения? Что-то вроде следующего (псевдокод):
def on_message(self, client, userdata, message):
if client.id == message.sender_client_id: # Is there anything like the sender_client_id?
return
Есть идеи? Спасибо!
Ответ №1:
Начиная со спецификации MQTT v5, вы можете попросить брокера не отправлять вам ваши собственные сообщения обратно в рамках сообщения о подписке.
Это устраняет необходимость добавлять идентификатор, чтобы затем вы могли его игнорировать.
Это, конечно, зависит как от брокера, так и от клиента MQTT, поддерживающего MQTT v5
Ответ №2:
Эта логика должна работать:
- Назначьте идентификатор каждому клиенту
- каждый клиент публикует на mytopic/{id}
- каждый клиент, подключенный к mytopic/#
игнорировать сообщения, в которых сообщение.тема начинается с mytopic/{id}
Комментарии:
1. Я надеялся, что мне не придется касаться этих тем, но ваше решение должно сработать. Спасибо!
2. Идентификатор должен быть отправлен, полезная нагрузка или тема-это ваш выбор дизайна.