Здравствуй, Хабр!
Работая с MQTT, я столкнулся с утомляющим неудобством: инструменты либо только показывают сообщения, либо требуют написания кода для автоматизации, либо усложнены в развертывании. Захотелось единого локального решения — мониторинг трафика, ручная публикация команд, простая логика и HMI-панель в одном окне. Ну и графики, конечно же графики! Так я начал разрабатывать MQTT Control RS. Пользусь сам, теперь решил открыть сообществу.
Рекламой, полагаю, не является, поскольку коммерческого интереса нет, ПО бесплатно.

Что это такое
Это, как можете наблюдать, уже не просто клиент с текстовыми данными, а рабочая среда для IoT-инженеров и автоматизаторов:
Просмотр и ручная публикация в MQTT-топики.
Графики — возможны несколько источников на одном графике, плюс аналитика: минимум, максимум, медиана, сигма, перцентили и т.п.
Визуальный редактор логики на нодах (Autopilot) — без кода, посредством складывания графа из готовых настраеваемых узлов. Поддержание климата, расписание, реакция на события (например, упал уровень воды в бочке — наполнить до отметки). Все то, что должно быть автоматизировано "тихо", то есть работать без дополнительного внимания человека.
Конструктор HMI(Human-Machine Interface )-дашбордов — виджеты независимы, связываются через брокер. Кнопки, лампы, задвижки, моторы, индикаторы, и проч.
Экспорт/импорт страниц Dashboard вместе с логикой.
Встроенный редактор схем на сетке — задумывался для рисования проводов, труб и стен, но честно говоря, оказался ещё и занятной пиксельной рисовалкой ?.
Всё работает на локальной машине. Но брокер (например Mosquitto) нужен отдельно. Подходит для тестирования устройств, настройки стендов, отладки сетевого взаимодйствия приборов, создания операторских панелей и быстрой проверки гипотез.
Как это работает
Приоритет на простоту: чтобы программу можно было освоить "методом тыка", хотя некоторые знания для понимания все же нужны, например при использовании бинарной логики в автопилотах. Хотя у каждой ноды есть подробная справка по использованию, а ноды Log (из названия понятно) и Event (ручная генерация события) особенно помогут вам.
Например: считать показания датчика, вывести на график, при превышении порога — автоматически опубликовать команду на включение вентилятора.
Одно из последних обновлений: виджеты двигателей и вентиляторов
Доработал соответствующие виджеты. Теперь имеют два независимых входа:
A — уставка (стоп/(пуск/обороты))
B — обратная связь (фактические обороты)
Бывает, механизм продолжает вращаться после отключения мотора — виджет это корректно отображает. Рассогласование между заданным и реальным состоянием видно сразу, без лишних блоков в схеме.
Платформы
Windows / Linux, есть сборка для одноплатников на базе Armbian. Приложение написано на Rust — потребление ресурсов скромное. Интерфейс переведён на 7 языков.
Статус и обратная связь
Проект активно разрабатывается: использую сам, закрываю реальные потребности. Ну или правлю, то что показалось неудачным . Не финальный продукт, а самый что ни на есть рабочий инструмент, который непосредственно допиливается и шлифуется.
Если нужно связать MQTT, графику и логику без написания кода — попробуйте. Набор нод компактный, меньше полусотни. Особо выделю ноду «Логический скрипт» (раздел «Поток») — это микроскрипт внутри графа, удобный для сложных вложенных условий, чем убивает необходимость использовать миллион других нод.

Буду рад фидбеку по UX, недостающим функциям и вашим сценариям использования. Используйте на здоровье! Связаться можно так же через меню Помощь - О программе.
? Скачать с сайта MQTT Control RS (возможно потребуется особый доступ к интернету), либо, взять напрямую с гита
Комментарии (14)

AndreyAbdulkayumov
11.04.2026 12:48Выглядит красиво. Но было бы здорово, если была бы какая-то демонстрация работы приложения. Демо проект или видео.

Ksiw Автор
11.04.2026 12:48Спасибо за совет, хоть и был упор на простоту, новым пользователям, возможно все так очевидно, как разработчику. Обязательно сделаю, и тогда, думаю, будет иметь смысл написать новую статью, более подробную со ссылкой на обучалку

D-Ant
11.04.2026 12:48Есть ли возможность писать именно скрипты вместо визуального программирования ? Я так понимаю это альтернатива node red, который немного тяжеловесный . Более того скрипты можно хранить в какой то папке под системой контроля версий . Я думаю у большинства людей , занимающихся автоматизацией нет проблем с написанием скриптов, особенно если взять что то вроде ecma (js)

D-Ant
11.04.2026 12:48Сам думал такое написать, но день и отсутствие сильной необходимости заставили ждать другого энтузиаста

Ksiw Автор
11.04.2026 12:48На этот случай как раз сделана нода "логический скрипт", она может содержать множество переменных между вызовами, и по условиям менять их. Это задумывалось как подобия скретча, только без циклов.
JS или тот же lua заманчивы, однако они же являют собой приглашение, для выполнения произвольного, потенциально вредоносного кода. По этой причине отказался от внедрения. На текущий момент не сталкивался с необходимостью, хотя в будущем, вполне допускаю разработку некой песочницы, для исполнения полноценных скриптов внутри нее
D-Ant
11.04.2026 12:48Не любого и не вредоносного. Js не встраивал, но луа точно будет иметь только то взаимодействие с внешним миром, которое явно прописано. Мне кажется этот инструмент и так на 100,% изолирован от внешних взаимодействий через брокер сообщений и доступен только администратору системы , так что вполне безопасно дать даже доступ к любым функциям ОС.
Лично я рассматриваю его как элемент умного дома , что бы на отделить логику от UI. Логику оставить в Control RS , ui отдать на одну или несколько других систем (open hab /home assistant) .
Логический скрипт, как я понял так же no code - это сложно ( не привычно / не удобно и это все есть в node red - надо же отличаться)
Сохранять состояние надо для определенных алгоритмов. Например "темная комната" когда есть датчик движения и датчик открытия двери и надо контролировать что сработало раньше (записать время срабатывания). Ну или в скриптах иметь доступ к истории.
Так как большинство людей привыкли к императивно у программированию, а не к функциональному, то переменные между вызовами гораздо привычней чем анализ истории .

Ksiw Автор
11.04.2026 12:48Ваши доводы убедили взглянуть по новому! Надо внимательнее проработать вопрос с lua.
Кстати, нод ред никогда не использовал, только поверхностно наслышан, вся схожеть исключительно как когерентный результат эволюции продукта
altrunner
Приложение выглядит очень интересно вот только не могу понять как удалять виджеты с дэшборда.
Ksiw Автор
Щелкните на на него мышью, виджет выделится голубой рамкой, и тогда клавишу del. Обратите внимание, если виджет заблокирован, его нельзя ни удалить, не переместить. В заблокированном состоянии в правим нижнем углу на виджете будет отображаться оранжевая точка. Для разблокировки, нажмите на нем правой кнопкой мыши и выбирайте в появившемся контестном меню строку Разблокировать.
altrunner
Спасибо! Может стоит добавить пункт в контекстное меню?
Ksiw Автор
да, почему бы не сделать. Ждите в след версии!)