ELXSoftware

Промышленная автоматизация и IoT

ELX-MODBUS

Мост между шиной Modbus и MQTT-брокером

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

v1.2.38 LinuxARM Бесплатно

Шлюзы TCP и Serial

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

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

Шаблоны, собранные по техпаспортам: регистры, масштабы, виджеты и перечисления уже прописаны. Добавление известного устройства занимает пару щелчков вместо вечера.

Регистры — до последнего бита

Holding, Input, Coil и Discrete; целые, вещественные и строки; порядок слов и байт; битовые маски; множитель и смещение. Любой отдельный регистр выключается, не задевая остальные.

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

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

Терминал обмена

Сырой обмен в шестнадцатеричном виде, с длительностью и ошибкой каждого запроса. Именно этот экран превращает незнакомое устройство в работающее.

Один пакет, без зависимостей

Один .deb ставит службу systemd на Debian, Ubuntu и Raspberry Pi OS. Сборки для amd64, arm64 и armhf; больше ставить нечего.

Скриншоты

Дашборд: плитки устройств с живыми значениями, тумблеры и ползунки
Список устройств и порядок опроса
Карта регистров устройства
Шлюзы: TCP и последовательный RTU
Библиотека готовых шаблонов устройств
Настройки MQTT-брокера
Терминал обмена — живой обмен в шестнадцатеричном виде

Какую задачу это решает

Промышленное оборудование говорит на Modbus — протоколе 1979 года, ставшем стандартом де-факто для датчиков, реле, счётчиков и приводов. Умный дом и автоматизация зданий говорят на MQTT. Сами по себе они не встречаются, и обычное лекарство — россыпь скриптов, по одному на устройство, каждый из которых ломается, когда кто-то меняет адрес регистра.

ELX-MODBUS — это та самая россыпь, заменённая одной службой. Она опрашивает шину, превращает сырые регистры в именованные значения, публикует их в ваш брокер и принимает команды обратно. Всё настраивается в браузере.

Устройства Modbus

Датчики, реле, приводы, счётчики — на RS-485 или по Ethernet

ELX-MODBUS

Опрос, декодирование, публикация, обратная запись

MQTT-брокер

Home Assistant, Node-RED, OpenHAB, ваш собственный код

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

  1. Добавьте шлюз. Опишите соединение с шиной: адрес шлюза RTU-over-TCP или последовательный порт со скоростью и чётностью.
  2. Добавьте устройство. Возьмите шаблон из библиотеки или соберите свою карту регистров, затем укажите адрес на шине и префикс MQTT.
  3. Укажите брокер. Введите адрес и включите публикацию. Значения сразу пойдут в топики, а команды — обратно.
Как ведёт себя опросВнутри одного шлюза запросы идут строго последовательно — на шине один мастер — и сверху вниз по списку. Разные шлюзы опрашиваются параллельно. Период задаётся для устройства или для отдельного регистра.

Как значения становятся топиками

Сырой регистр превращается в значение по формуле значение = raw × множитель + смещение с учётом типа данных, порядка слов и байт и битовой маски. Результат публикуется в {базовый}/{префикс}/{ключ}.

Кондиционер в гостиной
home/livingroom/ac/temp        → 24.5      (публикуется при каждом опросе)
home/livingroom/ac/set_temp    ← 22.0      (командный топик, пишется в регистр)
home/livingroom/ac/mode        → cooling

У каналов «чтение и запись» появляется командный топик — по умолчанию {топик}/set. Значение, отправленное туда, встаёт первым в очередь опроса и записывается сразу, поэтому управление ощущается мгновенным, а не отложенным на цикл.

Флаг retainС ним брокер хранит последнее значение и отдаёт его новому подписчику при подключении. Дашборд, открытый в три часа ночи, покажет числа, а не пустые места.

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

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

ГруппаУстройства
КлиматАдаптеры кондиционеров по Modbus, контроллеры котлов с OpenTherm и eBus, приточно-вытяжные установки
Реле6- и 16-канальные модули реле с командными регистрами открытия и закрытия
ДатчикиДатчики температуры и влажности, мультидатчики, зонды 1-Wire
СветДиммеры, LED-контроллеры, шлюзы DALI
АналогМодули выходов 0–10 В и 4–20 мА
Всё остальноеПустое «своё устройство», в котором регистры прописываются вручную
Если устройства нет в библиотекеСоздайте своё и пропишите регистры руками — у каждого поля есть подсказка, что в него класть. Терминал обмена поможет подобрать адреса и форматы: он показывает, что устройство отвечает на самом деле.

Коротко о главном

Транспорты
Modbus TCP, RTU-over-TCP, RTU по последовательному порту
Типы регистров
Holding, Input, Coil, Discrete
Типы данных
int, float, строка, битовые маски, порядок слов и байт
Операционные системы
Debian, Ubuntu, Raspberry Pi OS
Архитектуры
amd64, arm64, armhf
Настройка
Веб-интерфейс; состояние в SQLite, выгружается в JSON
Порт веб-интерфейса
8080 по умолчанию
Внешние зависимости
Нет

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

Какие транспорты Modbus поддерживаются?
Modbus TCP и RTU-over-TCP через Ethernet-шлюз, а также Modbus RTU по локальному последовательному порту — /dev/ttyUSB0, /dev/ttyS1 и подобным — с настройкой скорости, чётности и стоп-битов.
Нужно ли править конфигурационные файлы?
Нет. Шлюзы, устройства, регистры и брокер настраиваются в веб-интерфейсе. Конфигурация хранится в локальной базе SQLite и выгружается одним файлом JSON.
Можно ли управлять устройствами из MQTT?
Да. У каналов «чтение и запись» есть командный топик, по умолчанию {топик}/set. Отправленное туда значение записывается в регистр, а команды получают приоритет в очереди опроса.
На каком оборудовании это работает?
На любой машине с Debian или Ubuntu — от домашнего сервера до Raspberry Pi. Есть сборки для amd64, arm64 и armhf; служба лёгкая и ничего за собой не тянет.
Будет ли это работать с Home Assistant?
Да. Публикация идёт в обычный MQTT-брокер, поэтому Home Assistant подхватывает топики через интеграцию MQTT, а Node-RED или OpenHAB читают те же топики.
Сколько устройств потянет одна установка?
На практике ограничивает шина, а не программа. RS-485 терпит несколько десятков устройств на сегмент, а период опроса решает, как быстро дойдёт очередь до каждого. Несколько шлюзов опрашиваются параллельно.

ELX-MODBUS

Мост между шиной Modbus и MQTT-брокером

Скачать

Рядом в разделе