Wiren Board 7 + Crestron по TCP

Здравствуйте, снова!

Пишу по примерно такому же вопросу, но теперь поставлена задача научить общаться Crestron и Wiren Board 7 по TCP.
Нужно ли делать через Modbus TCP или можно подписаться на изменения TCP порта?

Modbus TCP поддерживается контроллером, сразу и как Master и как Slave. А что имеется в виду

?

Другие методы работы с оборудованием, помимо Modbus.
По Telnet или SSH?

У меня есть MQTT топик на включение/выключение света и обратной связи (два разных). Все сделано по мануалу и все четко работает за исключением одного - fb сам не отправляется на Crestron. То есть приходится пулить каждый раз, когда включил/выключил свет не из Crestron`a.

Можно ли избежать этого, не хочется poll каждые пару секунд?
Спасибо!

В контроллере обычный Linux, тот же что и на настольном компьютере. Естественно SSH - стоит из коробки, telnet можно поставить.

Не очень понятное описание. На каком брокере топик? Что именно нужно отправлять на Crestron и почему это нельзя сделать скриптом?

Простите, что сразу не дал информацию.

Управление в офисе светом по KNX.
Для взаимодействия интерфейса и KNX используется WB7 и WBE2-I-KNX.
Сделано через мануал, появились MQTT топики.

Прилетела задача управления светом с Crestron’a без BAOS’a.
Подключил Modbus TCP. Управление работает.

Однако если управлять не с Crestron, а, например, из шины KNX, fb не прилетает в Crestron, только при опросе с Crestron.
Про скрипт пока не думал, т.к. должно (по логике) работать без скрипта ,
ибо я вижу что топик fb изменяется на веб интрефейсе Wiren Board.

Так… Ну, тут довольно интресно.
В топик MQTT записывается драйвером значение поступившее из шины. А значение записанное в топик, точнее в его /on подтопик переджается драйвером в шину.
Таким образом в топике всегда последнее актуальное значение, независимо от того откуда оно поступило.
Поэтому драйвер Modbus всегда регулярно читает значения из шины.
Поэтому тут что-то странное все ж.

Ситуация такая, что для управления и обратной связи два отдельных топика, так как разные групповые адреса KNX.

Тогда в чем образуется проблема?
В том что Wiren board не может передать инфу по Modbus из-за того, что Slave не может инициализировать передачу данных?

И опять я не понял. Если MQTT топики разные - то каждый из них можно отобразить в разные регистры.

Так как они в разных топиках - это значит что они в разных регистрах.
Но Crestron не читает это значение.

Есть какие то советы? Что можно попробовать сделать?

Для начала все же опишите что именно вы хотите сделать.
Мне не очень понятна задача целиком.
Как я вижу: Есть какое-то внешнее устройство (Crestron).
Оно подключено к контроллеру по MQTT.
Есть два MQTT топика, в один внешнее устройство пишет желаемое значение (/on топик) а из другого читает фактическое.

Ну и вопросы - какой драйвер на контроллере обслуживает эти топики?
Еще пример бы - какой топик меняется, какой топик нужно менять. Это ведь несложно делается правилом.

Есть шина KNX, которая управляет светом.
Управляется с Wiren Board через модуль WBE2-I-KNX.
Соответственно управляется через MQTT топики.

Добавляется Crestron. Подключается к Wiren Board через Modbus TCP.
Нужно управлять светом с Crestron.
Включать и выключать получается. Получился шлюз из Modbus TCP → MQTT → KNX.
Прошу заметить, что управление и фб разные адреса Modbus.
Но не получается получить фб на Crestron, если управляли светом из вне.

Как получить фб на Crestron? Периодический poll не желателен, но он работает.

А кто его должен генерировать? Что в этом топике за значение, когда (по какому событию) оно должно меняться?

Команда “ВКЛ СВЕТ” - Crestron → Wirenboard - > KNX.
Обратная связь о включенном свете KNX → Wirenboard - > Crestron.
Это работает.

Команда “ВКЛ СВЕТ” - Wirenboard - > KNX или просто KNX.
Обратная связь о включенном свете должна лететь таким путем KNX → Wirenboard - > Crestron.
В KNX есть информация, в Wirenboard тоже есть информация, в Crestron нет информации.

Какой топик на контроллере меняется (или должен меняться) для обратной связи? КТо (какой драйвер) его меняет?
Просто подпишитесь на топики и покажите что в них меняется.

Топик для обратной связи меняется в KNX, так как светом управляет KNX.
На топики подписан.

Хорошо. Как по Modbus TCP с Wirenboard насильно отправить значение в Crestron об изменении топика?
Только через правила?

Я видимо понял в чем проблема:
Modbus работает по системе Master - Slave.
И видимо если мастер (Crestron) не запросил статус у слэйва (Wirenboard), то слэйв и не отправит и мастер не сможет узнать.

Поэтому и возник этот вопрос “Как еще можно организовать общение между Crestron и Wirenboard?”

Да, все совершенно верно. Не существует способа заставить мастер прочитать что-то. Именно поэтому мастер постоянно читает все регистры. И это нормальное поведение и менять тут что-то ни к чему.

Возможно сделать наоборот: настройте контроллер Crestron в Modbus Slave и тогда уже контроллер Wirenboard будет мастером и сможет записывать что угодно и как угодно часто, в пределах пропускной способности шины. Шаблон для Wirenboard могу помочь описать.

Wirenboard - самый обычный контроллер с Linux. Поэтому - хоть http запросами, хоть ssh командами…

Насколько я знаю, Crestron не может быть Slave, но попробую.
А сможет ли Crestron отправлять команду, если Slave не может инициализировать отправку информации?
Если получится обращусь за шаблонами.
Спасибо!

Есть какие нибудь примеры, чтобы не изобретать велосипед?

например Сетевой стерео ресивер URRI A1 — Wiren Board

А есть примеры SSH?
Пока не могу найти в примерах правил.