Есть ли способ использовать несколько каналов с подписками клиента Python Adafruit MQTT? - PullRequest
0 голосов
/ 03 июля 2018

Я использую Python-клиент Adafruit IO MQTT для выполнения кода на основе каналов. Я хочу, чтобы один канал выполнял одну функцию, а другой - другую. Я посмотрел на это и искал вокруг, но ничего, что я нашел, не показывает, как подписаться на несколько каналов.

Ответы [ 2 ]

0 голосов
/ 03 июля 2018

Вы должны построить это сами

Просто добавьте оператор if в обратный вызов on_message, чтобы выбрать другую функцию в зависимости от темы (feed_id), например,

def message(client, feed_id, payload, retain):
    if feed_id == 'foo/bar':
       #call foo function
       foo(paylaod)
    elif feed_id == 'bar/foo':
       #call bar function
       bar(payload)
0 голосов
/ 03 июля 2018

Вы можете просто позвонить subscribe несколько раз, например:

for feed_id in ['feed1', 'feed2']:
  client.subscribe(feed_id)

Это базовая функция протокола MQTT. Ваш обработчик on_message_ получит идентификатор канала в качестве параметра.

...