Взаимодействие 2х контроллеров без сервера


#1

Добрый день!
прошу подскажите есть ли возможность передавать MQTT между 2мя контроллерами из движка правил.
фактически нужно с одного контроллера данные со входов WBIO-DI-WD-14 передать данные на 2й контроллер WBIO-DO-R1G-16. при этом проверяя доступность канала связи.


#2

Владимир, добрый день!
Если я правильно вас понял, вы хотите боковым модулем на одном контроллере
(“контроллер 1”)управлять модулем реле на другом контроллере (“контроллер 2”) по MQTT?

Если так, то я предложил бы следующее решение:

  1. На контроллере 1 вы настраиваете MQTT-бридж для топиков WBIO-DI-WD-14, которые будут направляться на “контроллер 2”, с релейным модулем. (Краткий пример можно найти в статье Wirenboard 6: сетевые настройки контроллера на удаленном объекте, в разделе “Передача данных с контроллера в облако”), на форуме тоже много где обсуждалась настройка бриджа.
  2. Если все правильно настроено, то на контроллере 2 с релейным модулем у вас появится устройство WBIO-DI-WD-14 — копия устройства с первого контроллера. После этого вы можете писать правила на втором контроллере так, как будто WBIO-DI-WD-14 установлен на контроллере 2.
  3. Доступность канала связи на уровне движка правил вы можете проверять, отправляя MQTT-keepalive-сообщения с одного контроллера на другой и отслеживать их движком правил.

#3

Попрошу подробнее рассказать про 3 пункт.
Как правильно проверять доступность MQTT-keepalive-сообщениями?


#4

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