Как найти неизвестный MQTT-топик за минуту: TopicListener в AbromSoft
Типичная ситуация на объекте: к контроллеру подключили новый модуль или клиент просит привязать сцену к выключателю, который монтажники завели на какой-то вход. Чтобы написать правило, нужен MQTT-топик этого входа или реле. А какой он — непонятно: модулей на шине десяток, входов и выходов сотни, подписи в щите не всегда совпадают с реальностью.
Как это обычно делают
Классический путь — зайти на контроллер по SSH, запустить mosquitto_sub с подпиской на все устройства и нажать нужную кнопку. В ответ в консоль сыплется поток сообщений: напряжения, температуры, счётчики, служебные метаданные. Нужную строку приходится выцеплять глазами, а если клиент в этот момент ещё и включил свет в соседней комнате — начинать заново.
Второй вариант — открыть список MQTT-каналов в веб-интерфейсе Wirenboard и искать там. Это работает, когда знаешь хотя бы модуль. Когда не знаешь — листать сотни строк, гадая, какая из них только что изменилась.
И то и другое отнимает время и требует от интегратора навыков работы с консолью. Мы решили сделать эту задачу кнопкой.
Что такое TopicListener
TopicListener — встроенный инструмент AbromSoft. Его не нужно описыватьна каждом контроллере с AbromSoft в виде виртуального устройства TopicListener. Его видно и в интерфейсе AbromSoft, и прямо в веб-интерфейсе Wirenboard рядом с остальными устройствами.

У устройства один переключатель enable и группы полей. В каждой группе — топик, значение и время последнего события:
- last_input — последний сработавший вход: дискретные входы модулей реле, нажатий.
- last_output — последний сработавший выход: реле модулей WB-MR, WB-MWAC и выходы контроллера.
- last_hasp_state — последнее событие с сенсорной панели, если на объекте
Группы разделены специально: пока вы ищете вход, щелчок реле в соседнем топик. Служебные сообщения, показания датчиков и метаданные Topic Listener отбрасывает сам — остаются только события, которые интересны при настройке.
Как найти топик выключателя
- Откройте устройство Topic Listener в интерфейсе AbromSoft или в веб-интерфейсе Wirenboard.
- Включите переключатель enable.
- Нажмите выключатель на стене.
- Посмотрите в поле last_input_topic — там появится путь вида wb-mr6c_45/ремя нажатия.
- Скопируйте путь и вставьте его в правило: «Выключатель», «Сцена» или любое другое.


С реле так же: включите TopicListener, щёлкните нужную группу света с панели или из приложения — в last_output_topic окажется что-то вроде wb-mr6c_45/K3. Так удобно проверять, какое реле на самом деле управляет какой линией, когда нужно здесь и сейчас.

Автоотключение
Через минуту после включения TopicListener выключается сам. Это страховка: широкая подписка на все устройства создаёт лишнюю нагрузку, и оставлять её работать бесконечно незачем. Минуты хватает, чтобы дойти до выключателя и нажать его. Если не успели — включите ещё раз, найденные значения при этом сохраняются до следующего события.
Преимущества
В wb-rules и в большинстве систем для Wirenboard поиск топика — это консоль или ручной просмотр списка каналов. В AbromSoft это переключатель и одно нажатие кнопки на объекте. Интегратору не нужен SSH, не нужно знать синтаксис mosquitto_sub и фильтровать поток сообщений. Найти топик может даже монтажник с телефоном в руке, стоя у щита.
Вместе с быстрой настройкой через виджеты, о которой мы рассказывали в статье «Виджеты AbromSoft: быстрая настройка объекта с телефона», это сокращает время первичной настройки объекта: устройство найдено, топик скопирован, правило создано — без использования консоли.
Еще никто не написал комментариев.