Промышленная автоматизация и IoT
ELX-MODBUS
Мост между шиной Modbus и MQTT-брокером
Опрашивает устройства Modbus по Ethernet и последовательной шине RS-485, превращает сырые регистры в понятные значения, публикует их в MQTT и принимает обратные команды. Настраивается целиком в браузере — конфигурационных файлов править не нужно.
Шлюзы TCP и Serial
Подключение по Ethernet — Modbus TCP или RTU-over-TCP — либо через локальный порт вроде /dev/ttyUSB0. Скорость, чётность, стоп-биты и тайминги настраиваются.
Библиотека готовых устройств
Шаблоны, собранные по техпаспортам: регистры, масштабы, виджеты и перечисления уже прописаны. Добавление известного устройства занимает пару щелчков вместо вечера.
Регистры — до последнего бита
Holding, Input, Coil и Discrete; целые, вещественные и строки; порядок слов и байт; битовые маски; множитель и смещение. Любой отдельный регистр выключается, не задевая остальные.
Живой дашборд
Плитки устройств со значениями, которые меняются на месте, тумблеры, ползунки и поля ввода. Перетаскивание плитки заодно задаёт порядок опроса: порядок на экране и есть порядок на шине.
Терминал обмена
Сырой обмен в шестнадцатеричном виде, с длительностью и ошибкой каждого запроса. Именно этот экран превращает незнакомое устройство в работающее.
Один пакет, без зависимостей
Один .deb ставит службу systemd на Debian, Ubuntu и Raspberry Pi OS. Сборки для amd64, arm64 и armhf; больше ставить нечего.
Скриншоты
Какую задачу это решает
Промышленное оборудование говорит на Modbus — протоколе 1979 года, ставшем стандартом де-факто для датчиков, реле, счётчиков и приводов. Умный дом и автоматизация зданий говорят на MQTT. Сами по себе они не встречаются, и обычное лекарство — россыпь скриптов, по одному на устройство, каждый из которых ломается, когда кто-то меняет адрес регистра.
ELX-MODBUS — это та самая россыпь, заменённая одной службой. Она опрашивает шину, превращает сырые регистры в именованные значения, публикует их в ваш брокер и принимает команды обратно. Всё настраивается в браузере.
Устройства Modbus
Датчики, реле, приводы, счётчики — на RS-485 или по Ethernet
ELX-MODBUS
Опрос, декодирование, публикация, обратная запись
MQTT-брокер
Home Assistant, Node-RED, OpenHAB, ваш собственный код
Три шага до данных в брокере
- Добавьте шлюз. Опишите соединение с шиной: адрес шлюза RTU-over-TCP или последовательный порт со скоростью и чётностью.
- Добавьте устройство. Возьмите шаблон из библиотеки или соберите свою карту регистров, затем укажите адрес на шине и префикс MQTT.
- Укажите брокер. Введите адрес и включите публикацию. Значения сразу пойдут в топики, а команды — обратно.
Как значения становятся топиками
Сырой регистр превращается в значение по формуле значение = raw × множитель + смещение с учётом типа данных, порядка слов и байт и битовой маски. Результат публикуется в {базовый}/{префикс}/{ключ}.
home/livingroom/ac/temp → 24.5 (публикуется при каждом опросе)
home/livingroom/ac/set_temp ← 22.0 (командный топик, пишется в регистр)
home/livingroom/ac/mode → cooling
У каналов «чтение и запись» появляется командный топик — по умолчанию {топик}/set. Значение, отправленное туда, встаёт первым в очередь опроса и записывается сразу, поэтому управление ощущается мгновенным, а не отложенным на цикл.
Библиотека устройств
В шаблонах уже настроены карта регистров, масштабы и виджеты — по техпаспортам. Среди них:
| Группа | Устройства |
|---|---|
| Климат | Адаптеры кондиционеров по 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 поддерживаются?
/dev/ttyUSB0, /dev/ttyS1 и подобным — с настройкой скорости, чётности и стоп-битов.Нужно ли править конфигурационные файлы?
Можно ли управлять устройствами из MQTT?
{топик}/set. Отправленное туда значение записывается в регистр, а команды получают приоритет в очереди опроса.