Как подписаться на все темы брокера MQTT

Я хочу подключить клиента, который будет контролировать все темы брокера, чтобы реагировать на события, когда я не знаю, что такое имена темы.

Ответы

Ответ 1

Подписка на # дает вам подписку на все, кроме тем, которые начинаются с $ (в любом случае это обычно контрольные темы).

Лучше знать, что вы подписываетесь на первое, хотя, конечно, и обратите внимание, что некоторые конфигурации брокеров могут запретить подписку на # явно.

Ответ 2

Вы можете использовать mosquitto_sub (который является частью пакета mosquitto-clients) и подписаться на тему шаблона #:

mosquitto_sub -v -h broker_ip -p 1883 -t '#'

Ответ 3

Используйте подстановочный знак "#", но будьте осторожны, что в какой-то момент вам придется как-то понять данные, проходящие через автобус!

Ответ 4

Конкретный пример

mosquitto.org очень активен (на момент публикации). Это хороший smoke тест для устройства Linux подписчика MQTT:

mosquitto_sub -h test.mosquitto.org -t "#" -v

"#" - это подстановочный знак для тем, который возвращает все сообщения (темы): на сервере было много трафика, поэтому он возвратил "пожарный шланг" сообщений.

Если ваше устройство MQTT публикует тему irisys/V4D-19230005/ для тестового брокера MQTT, вы можете отфильтровать сообщения:

mosquitto_sub -h test.mosquitto.org -t "irisys/V4D-19230005/#" -v

Опции:

  • -h имя хоста (порт MQTT по умолчанию = 1883)
  • -t предшествует теме