Простые сценарии без головного модуля / модификация прошивки

Привет!

Есть WB-MGEv2 и по несколько модулей реле/диммеров (WB-MR6Cv3, WB-LED, WB-MDM3).

Для примера рассмотрим простой случай: по долгому нажатию любого выключателя в комнате A выключать все связанные с ним линии всех реле/диммеров этой комнаты. Разных комнат несколько и каждая использует какое-то количество входов-выходов этих модулей.
Если соответствовать духу гайдлайнов, то это необходимо делать на головном модуле, либо обрабатывать “снаружи” своими силами через Modbus (RTU over) TCP.

Я хотел бы уметь обрабатывать такие простые сценарии автономно, головной модуль или внешняя обработка выглядят для меня излишними. (хотя, конечно, имеющими право на существование)
В каких-то конкретных единичных случаях можно было бы решить подключением выключателя сразу к нескольким модулям (например мастер-выключатель подключить к каждому модулю), но в общем случае такое решение невозможно.

В связи с этим вопросы:

  1. По аналогии с GitHub - wirenboard/wirenboard: Tools for building Debian rootfs for Wiren Board as well as default config files можно ли где-то найти исходники/тулчейн для сборки прошивок непосредственно самих модулей? (обработать сценарий на WB-MGEv2 было бы идеально, но прошивки для остальных модулей тоже могли бы помочь)
  2. Какие есть ещё варианты для решения этой задачи?

Я уже почти отчаялся и думаю о том, чтобы для обработки этих сценариев собрать полностью кастомный modbus-прокси на DIN-рейку на RP2040/ESP32/STM32 и GitHub - emelianov/modbus-esp8266: Most complete Modbus library for Arduino. A library that allows your Arduino board to communicate via Modbus protocol, acting as a master, slave or both. Supports network transport (Modbus TCP) and Serial line/RS-485 (Modbus RTU). Supports Modbus TCP Security for ESP8266/ESP32. :slight_smile: но может быть всё-таки есть какие-то более стандартные варианты.
Спасибо!

Добрый день.

Нет. Сами прошивки модулей - не GPL, не выкладывались и не планируются выкладываться в свободный доступ.

Оптимальный - наличие на шине (шинах) Modbus мастера, который обеспечивает обработку изменений состояния.

А прокси между чем и чем? то есть в чем будет заключаться его задача?
Я одно время шел по DIY пути создания “одноранговых” устройств, обменивающихся информацией между собой. Но сразу же столкнулся с проблемой интеграции с другими, не самодельными устройствами и вообще с окружающим миром. Да и настройка самого взаимодействие путем изменения прошивок - удовольствие ниже среднего. Причем замена, на сегодняшний день тот же HA на малинке - дешева и удобна.

Идея в том, чтобы простые сценарии, которые не затрагивают ничего кроме самих диммеров/реле (например, долгие/двойные нажатия, но не в рамках одного модуля, а в рамках всех модулей димеров/реле) обрабатывались автономно, но всё ещё оставалась возможность управления извне, например с того же HA.

Т.е. примерно вот так:
← внешняя шина (Modbus либо Ethernet) → [“умный” прокси] ← внутренняя шина Modbus → [WB-MR6Cv3, WB-LED, WB-MDM3]

Под “умным” я здесь подразумеваю то, что он может какие-то базовые сценарии обработать сам, в остальном он просто прокидывает регистры на “внешнюю” шину как это делает WB-MGEv2.

Согласен, что HA на Raspberry и подобном — легко и недорого, как промежуточное решение я буду именно такой вариант использовать.
Но мне принципиально хотелось бы всё “внутреннее” делать автономно на чём-то с Real-time OS или ещё более низкоуровнево, условно не хотелось бы чтобы выключатель перестал работать как надо из-за того, что HA или докер понаписал кучу логов и на флешке Raspberry внезапно кончилось место, пришёл OOM или просто что-то упало с segfault :slight_smile:
Опять же все варианты нажатий выключателей даже в рамках одного модуля можно было бы обрабатывать “извне” в головном модуле или на HA, но они сейчас обрабатываются внутри самого модуля — хотелось бы вот такого же добиться, но между несколькими модулями реле/диммерами.

В любом случае, большое спасибо за разъяснения!

Это, описанное, возможно. Но - цена разработки и поддержки - изрядно велика получается.
Я бы посоветовал если есть желание сделать именно вот такой отдельный мастер - сразу закладывать в него работу с “основным” по IP, например по MQTT.
Ну и вижу основные задачи, которые проходил сам:

  • опрос Slave устройств (таблица регистров для каждого, с MQTT топиком для каждого регистра)
  • публикация в брокер актуальных состояний (изменений) регистров.
  • при изменении на брокере - запись в регистр устройства
  • при изменении в регистрах - проверять не участвуют ли они в “локальных” автоматизациях и запускать их.

На контроллере первые три выполняет GitHub - wirenboard/wb-mqtt-serial: Wiren Board MQTT serial protocol driver (оцените объем кода, кстати и алгоритм) а последнюю - или движок правил или любое стороннее ПО по MQTT.

Да, можно реализовать Modbus-master на микроконтроллере и это несложно. Но дальше…
Если хотите реально реализовать желаемое и иметь достаточно удобный механизм изменения - посмотрите на 1.5 Installing OpenPLC Runtime on Microcontrollers – Autonomy
Открытая СКАДА с автономным рантаймом выполняемым в том числе и на микроконтроллере.

1 лайк