Как подписаться на все темы брокера 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 предшествует теме