Я хочу подключить клиента, который будет контролировать все темы брокера, чтобы реагировать на события, когда я не знаю, что такое имена темы.
Как подписаться на все темы брокера 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 предшествует теме