modbus2mqtt

Modbus → MQTT мост

Скачать
v1.2.36 · .deb для Linux

Мост между Modbus
и MQTT

Опрашивает Modbus-устройства по Ethernet и последовательной шине RS-485, публикует значения в MQTT-брокер и принимает обратные команды. Настройка целиком через красивый веб-интерфейс — конфиг-файлы не нужны.

RTUover TCP & Serial
30+готовых устройств
arm · amd64armhf · arm64
APT Установка одной командой
# ключ репозитория
curl -fsSL https://repo.um-d.ru/elx-repo.gpg | sudo tee /usr/share/keyrings/elx-repo.gpg >/dev/null
# источник пакетов
echo "deb [signed-by=/usr/share/keyrings/elx-repo.gpg] https://repo.um-d.ru stable main" | sudo tee /etc/apt/sources.list.d/elx.list
# установка
sudo apt update && sudo apt install elxmodbusmqtt -y

Из коробки поддержаны устройства

Wiren BoardONOKOMРЭЛСИБ ectoControlHaierGTCDS18B20 / AHT20 и другие
Возможности

Всё для связи промышленной шины с умным домом

Один сервис вместо россыпи скриптов: опрос, декодирование, публикация и управление — с наглядным контролем в браузере.

🔌

Шлюзы TCP и Serial

Подключение по Ethernet (Modbus TCP / RTU-over-TCP) или локальному порту /dev/ttyUSB*. Скорость, чётность, стоп-биты, тайминги — всё настраивается.

📚

Библиотека устройств

Готовые шаблоны по техпаспортам: регистры, масштабы, виджеты и enum уже прописаны. Добавление устройства — в пару кликов.

🎚️

Точная работа с регистрами

Holding / Input / Coil / Discrete, типы данных int/float/string, порядок слов и байт, битовые маски, множитель и смещение. Любой регистр включается и выключается отдельно.

📡

Настройка MQTT-брокера

Хост, порт, логин/пароль, TLS, базовый топик, retain и командные топики. Сборка имени топика — прозрачная и предсказуемая.

📊

Живой дашборд

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

🖥️

Терминал Modbus

Живой лог обмена с HEX-кадрами, длительностью и ошибками каждого запроса. Незаменим при отладке нового устройства.

♻️

Бэкап и восстановление

Вся конфигурация — шлюзы, устройства, настройки брокера — выгружается и восстанавливается одним JSON-файлом.

📦

Один .deb-пакет

Ставится как системный сервис на Debian/Ubuntu и Raspberry Pi. Сборки для amd64, arm64 и armhf. Без внешних зависимостей.

Как это работает

Три шага до данных в брокере

Никаких конфигов в терминале — весь путь проходится мышкой в веб-интерфейсе.

1

Добавьте шлюз

Опишите соединение с шиной: TCP-адрес шлюза RTU-over-TCP или последовательный порт со скоростью и чётностью.

2

Добавьте устройство

Выберите готовый шаблон из библиотеки или создайте своё и пропишите регистры. Укажите slave-адрес и MQTT-префикс.

3

Настройте брокер

Введите адрес MQTT-брокера и включите публикацию. Значения сразу пойдут в топики, а команды — обратно в устройства.

Веб-интерфейс

Управление прямо в браузере

Тёмная тема с glow-эффектами, отзывчивые виджеты и понятные подсказки у каждого поля. Нажмите на любой скриншот, чтобы рассмотреть его крупнее.

localhost:8080
Дашборд modbus2mqtt — плитки устройств с живыми значениями, тумблеры и ползунки
Дашборд в реальном времени

Остальные экраны — в разделе Галерея ↓

Библиотека устройств

Готовые шаблоны по техпаспортам

Регистры, масштабы и виджеты уже настроены — выбираете устройство, и карта регистров подставляется автоматически.

КлиматONOKOM GR-1 / HR-1адаптеры кондиционеров по Modbus
КлиматHaier YCJ-A002адаптер кондиционера Haier
РелеWiren Board WB-MR6C6-канальные модули реле
Реле16-канальное реле RS-485командные регистры open/close
ДатчикиРЭЛСИБ ДВТ-05.RSтемпература и влажность
ДатчикиWB-MSW v.4мультидатчик Wiren Board
СветWB-MDM3 · WB-LEDдиммеры и LED-контроллеры
СветWB-DALI3шлюз DALI
АналогWB-MAO4 · 4-20мАаналоговые выходы 0–10В
ОтоплениеectoControl v2OpenTherm / eBus / Navien
ВентиляцияGTC ПВУприточно-вытяжная установка
СвоёCustom + 1-Wireлюбое устройство с нуля

Это лишь малая часть шаблонов — мы постоянно пополняем библиотеку. Если у вас есть свои устройства, присылайте нам список регистров Modbus — и мы с удовольствием бесплатно добавим его в нашу библиотеку. Прислать описание →

Установка

Поставьте за минуту

Актуальная версия 1.2.36. Рекомендуем подключить APT-репозиторий — тогда обновления приходят сами.

Обновление. Пакет обновляется вместе с системой: sudo apt update && sudo apt upgrade — или точечно: sudo apt install --only-upgrade elxmodbusmqtt
После установки
# сервис стартует автоматически; открыть веб-интерфейс
xdg-open http://localhost:8080

# статус и логи сервиса
systemctl status elxmodbusmqtt
journalctl -u elxmodbusmqtt -f

Или скачайте .deb напрямую и поставьте через sudo apt install ./файл.deb

База знаний

Modbus и MQTT: как устроен мост для умного дома

Коротко о протоколах, шине RS-485 и о том, как происходит синхронизация значений между промышленным оборудованием и системами умного дома.

Что такое Modbus и Modbus-шина (RS-485)

Modbus — это открытый промышленный протокол обмена данными, появившийся ещё в 1979 году и ставший де-факто стандартом для датчиков, реле, счётчиков, контроллеров и приводов. Он работает по принципу «мастер–слейв»: ведущее устройство (мастер) опрашивает ведомые (слейвы) по их адресам и читает либо записывает значения в регистры — Holding, Input, Coil и Discrete.

Чаще всего Modbus передаётся двумя способами. Modbus RTU — по последовательной шине RS-485: одна витая пара, к которой последовательно подключаются десятки устройств, с настройками скорости (baud), чётности и стоп-битов. Modbus TCP — поверх Ethernet, обычно через порт 502 или Ethernet-шлюз RTU-over-TCP. modbus2mqtt поддерживает оба транспорта.

Что такое MQTT и MQTT-брокер

MQTT — это лёгкий протокол обмена сообщениями по модели «издатель–подписчик», созданный специально для интернета вещей (IoT) и умного дома. Устройства не общаются напрямую: они публикуют значения в именованные топики на центральном сервере — MQTT-брокере (например, Mosquitto или EMQX), а другие подписываются на эти топики и мгновенно получают обновления. Это делает систему гибкой и слабосвязанной.

Именно на MQTT построены популярные системы автоматизации — Home Assistant, Node-RED, OpenHAB. Если данные с Modbus-оборудования попадают в MQTT, их сразу видят сценарии, дашборды и голосовые ассистенты.

Зачем нужен мост Modbus → MQTT

Проблема в том, что эти два мира говорят на разных языках: промышленные устройства — на Modbus, а умный дом — на MQTT. Мост Modbus → MQTT переводит одно в другое: он циклически опрашивает Modbus-устройства, декодирует «сырые» регистры в понятные значения (температура, состояние реле, мощность) и публикует их в MQTT-брокер. Обратно — принимает команды из MQTT и записывает их в регистры устройств.

Без такого моста пришлось бы писать и поддерживать собственные скрипты для каждого устройства. modbus2mqtt берёт это на себя и настраивается полностью через веб-интерфейс.

Как происходит синхронизация значений

Синхронизация в modbus2mqtt устроена прозрачно и предсказуемо:

  • Опрос. Внутри одного шлюза запросы идут строго последовательно (один мастер на шине), сверху вниз по списку. Разные шлюзы опрашиваются параллельно. Период опроса задаётся для устройства или отдельного регистра.
  • Декодирование. Сырой регистр превращается в значение по формуле значение = raw × множитель + смещение с учётом типа данных, порядка слов/байт и битовых масок.
  • Публикация. Значение уходит в MQTT-топик вида {базовый}/{префикс}/{ключ}. Флаг retain позволяет брокеру хранить последнее значение и сразу отдавать его новым подписчикам.
  • Обратные команды. У каналов «чтение/запись» есть командный топик ({топик}/set): отправленное туда значение немедленно встаёт первым в очередь и записывается в устройство — управление получается практически мгновенным.

Wiren Board, ONOKOM и другие устройства

В библиотеке modbus2mqtt уже есть готовые шаблоны популярного оборудования: модули реле и мультидатчики Wiren Board (WB-MR6C, WB-MSW v.4, WB-MDM3, WB-LED, WB-DALI3, WB-MAO4), адаптеры кондиционеров ONOKOM и Haier, датчики РЭЛСИБ, контроллеры котлов ectoControl и многое другое. Карта регистров, масштабы и виджеты в них уже настроены по техпаспортам — добавление устройства занимает пару минут.

Интеграция с умным домом

Поскольку modbus2mqtt публикует данные в стандартный MQTT-брокер, любое промышленное Modbus-оборудование становится частью умного дома. Home Assistant подхватывает топики через MQTT-интеграцию, Node-RED строит на них сценарии автоматизации, а дашборды показывают живые значения. Программа работает на любом Linux — от домашнего сервера до Raspberry Pi — и ставится одним .deb-пакетом.

Готовы попробовать? Скачать modbus2mqtt бесплатно →

FAQ

Частые вопросы

Какие транспорты Modbus поддерживаются?

Modbus TCP и RTU-over-TCP (через Ethernet-шлюз), а также Modbus RTU по локальному последовательному порту (/dev/ttyUSB0, /dev/ttyS1 и т. п.) с настройкой скорости, чётности и стоп-битов.

Нужно ли редактировать конфиг-файлы?

Нет. Всё настраивается через веб-интерфейс: шлюзы, устройства, регистры и брокер. Конфигурация хранится в локальной базе SQLite и может быть выгружена в JSON.

Можно ли управлять устройствами из MQTT?

Да. У каналов «чтение/запись» есть командный топик (по умолчанию {топик}/set): отправленное туда значение записывается в Modbus. Команды получают приоритет в очереди опроса.

На каком оборудовании работает?

Любой Linux на Debian/Ubuntu: от домашнего сервера до Raspberry Pi. Доступны сборки amd64, arm64 и armhf. Сервис лёгкий и не требует внешних зависимостей.

Моего устройства нет в библиотеке — что делать?

Создайте «Своё устройство» и пропишите регистры вручную — у каждого поля есть подсказка. А терминал Modbus поможет подобрать адреса и форматы данных.

О нас

Кто делает modbus2mqtt

🛠️

Мы являемся разработчиками оборудования для умного дома и программного обеспечения. Данное программное обеспечение абсолютно бесплатно и, надеемся, поможет вам в вашей работе по настройке оборудования MODBUS.

📩

Не нашли своё устройство?

Давайте добавим. Пришлите нам описание регистров вашего устройства (карту регистров из техпаспорта или руководства) — и мы бесплатно добавим его в библиотеку готовых шаблонов.

Готовы подключить шину к MQTT?

Поставьте пакет, откройте браузер и добавьте первый шлюз за несколько минут.

⤓ Скачать modbus2mqtt