WB-MR6C v.3 - включаются два канала

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

Safe mode, значения по умолчанию, все отключено, все одинаково по всем 6 каналам.

В реле включается два канала - K2 и K3. Если отключить канал через web-интерфейс в devices - отключается, потом снова включается.

В логах вот это:

1785798719: Received PUBLISH from contactless-CpbPWwHk6f (d0, q1, r0, m11, '/devices/wb-mr6c_75/controls/K2/on', ... (1 bytes))
1785798719: Sending PUBLISH to contactless-u2mLrFwUfF (d0, q0, r0, m0, '/devices/wb-mr6c_75/controls/K2/on', ... (1 bytes))
1785798719: Sending PUBLISH to contactless-CpbPWwHk6f (d0, q0, r0, m0, '/devices/wb-mr6c_75/controls/K2/on', ... (1 bytes))
1785798719: Sending PUBLISH to wb-modbus (d0, q0, r0, m0, '/devices/wb-mr6c_75/controls/K2/on', ... (1 bytes))
1785798719: Received PUBLISH from wb-modbus (d0, q0, r1, m0, '/devices/wb-mr6c_75/controls/K2', ... (1 bytes))
1785798719: Sending PUBLISH to contactless-u2mLrFwUfF (d0, q0, r0, m0, '/devices/wb-mr6c_75/controls/K2', ... (1 bytes))
1785798719: Sending PUBLISH to contactless-CpbPWwHk6f (d0, q0, r0, m0, '/devices/wb-mr6c_75/controls/K2', ... (1 bytes))
1785798719: Sending PUBLISH to rules-wirenboard-AAWOUCMQ-2467 (d0, q0, r0, m0, '/devices/wb-mr6c_75/controls/K2', ... (1 bytes))
1785798719: Sending PUBLISH to mosq/=Xs6`l9Nh9w0_ExYU; (d0, q0, r0, m0, '/devices/wb-mr6c_75/controls/K2', ... (1 bytes))

1785798726: Received PUBLISH from wb-modbus (d0, q0, r1, m0, '/devices/wb-mr6c_75/controls/K2', ... (1 bytes))
1785798726: Sending PUBLISH to contactless-u2mLrFwUfF (d0, q0, r0, m0, '/devices/wb-mr6c_75/controls/K2', ... (1 bytes))
1785798726: Sending PUBLISH to contactless-CpbPWwHk6f (d0, q0, r0, m0, '/devices/wb-mr6c_75/controls/K2', ... (1 bytes))
1785798726: Sending PUBLISH to rules-wirenboard-AAWOUCMQ-2467 (d0, q0, r0, m0, '/devices/wb-mr6c_75/controls/K2', ... (1 bytes))
1785798726: Sending PUBLISH to mosq/=Xs6`l9Nh9w0_ExYU; (d0, q0, r0, m0, '/devices/wb-mr6c_75/controls/K2', ... (1 bytes))

Если отключить RS-485 от реле - каналы не включаются, из этого делаю вывод, что их зачем-то включает контроллер.

Как понять, кто их включает и зачем?

Добрый день.

Судя по первому фрагменту лога, канал включает не контроллер сам по себе: команда пришла по MQTT от клиента с идентификатором contactless-CpbPWwHk6f, он публикует в топик /devices/wb-mr6c_75/controls/K2/on. Топик с суффиксом /on — это команда на запись, топик без /on — состояние, которое драйвер прочитал из модуля. wb-rules в этом фрагменте только подписчик и ничего не пишет. Подскажите, пожалуйста, что за ПО подключается с таким Client ID — судя по логу, оно не только читает топики, но и пишет в командные.

Во втором фрагменте команды нет вообще, там только публикация состояния от wb-modbus — то есть драйвер прочитал из модуля новое значение. Какое именно, из лога mosquitto не видно: он не показывает содержимое сообщений.

Чтобы увидеть значения, запустите на контроллере:

mosquitto_sub -v -t '/devices/wb-mr6c_75/controls/+/on' -t '/devices/wb-mr6c_75/controls/+'

И пришлите, пожалуйста, версию ПО контроллера и версию прошивки реле: часть настроек, например таймерные функции, появилась только в прошивке 1.25.0, и от версии зависит, увидите ли вы их в веб-интерфейсе.

Я поделил логи на две части (по времени). Первая часть начинается с переключения движка канала на закладке devices в положение off, видимо, contactless-CpbPWwHk6f это как раз что-то, что принимает команду из веб-интерфейса.

Через несколько секунд в логах появляется вторая пачка, и в веб-интерфейсе флажок возвращается в положение on.

Вывод команды (переводом строки отмечены паузы)

root@wirenboard-AAWOUCMQ:~# mosquitto_sub -v -t '/devices/wb-mr6c_75/controls/+/on' -t '/devices/wb-mr6c_75/controls/+'
/devices/wb-mr6c_75/controls/K1 0
/devices/wb-mr6c_75/controls/K2 1
/devices/wb-mr6c_75/controls/K3 1
/devices/wb-mr6c_75/controls/K4 0
/devices/wb-mr6c_75/controls/K5 0
/devices/wb-mr6c_75/controls/K6 0
/devices/wb-mr6c_75/controls/Safety Timer 10
/devices/wb-mr6c_75/controls/Input 1 0
/devices/wb-mr6c_75/controls/Input 2 0
/devices/wb-mr6c_75/controls/Input 3 0
/devices/wb-mr6c_75/controls/Input 4 0
/devices/wb-mr6c_75/controls/Input 5 0
/devices/wb-mr6c_75/controls/Input 6 0
/devices/wb-mr6c_75/controls/Input 0 0
/devices/wb-mr6c_75/controls/Input 1 counter 0
/devices/wb-mr6c_75/controls/Input 2 counter 0
/devices/wb-mr6c_75/controls/Input 3 counter 0
/devices/wb-mr6c_75/controls/Input 4 counter 0
/devices/wb-mr6c_75/controls/Input 5 counter 8
/devices/wb-mr6c_75/controls/Input 6 counter 0
/devices/wb-mr6c_75/controls/Input 0 counter 0
/devices/wb-mr6c_75/controls/Supply voltage 23.849
/devices/wb-mr6c_75/controls/Supply voltage 23.848

/devices/wb-mr6c_75/controls/K2/on 0
/devices/wb-mr6c_75/controls/K2 0

/devices/wb-mr6c_75/controls/K2 1

Сначала оно показывает исходное состояние, второй блок - в веб-интерфейсе выключаем канал, через несколько секунд он становится снова включенным.

ПО контроллера - 201610251510, ПО реле - 1.26.4

В логе есть только ваша команда K2/on 0: драйвер отчитался нулём, а через несколько секунд опубликовал единицу — это уже не команда, а прочитанное из модуля значение. Значит, переключает либо сам модуль по своим настройкам, либо драйвер пишет в регистр напрямую, минуя MQTT.

Разделить эти два случая проще всего так: остановите драйвер wb-mqtt-serial, ничем модуль не опрашивайте и полминуты смотрите на его индикаторы. Ждать нужно столько, потому что таймер потери связи у вас 10 секунд, а каждый принятый Modbus-пакет его перезапускает. Загорелся красный A и каналы включились — это безопасный режим. Остались выключенными — пишет контроллер.

Затем, не запуская драйвер, прочитайте утилитой modbus_client регистры 0–5 (команды на каналы), 96–101 (фактическое состояние реле) и 930–943 (настройки безопасного режима). С прошивки 1.24.0 команда и фактическое состояние лежат в разных регистрах, а старый шаблон читает только команду — то есть единица в веб-интерфейсе может быть не замкнутым реле, а записанной кем-то командой. Карта регистров: https://wiki.wirenboard.com/wiki/Relay_Module_Modbus_Management

ПО версии 201610251510 выпущено до перехода на систему релизов и заведомо старше, чем WB-MR6C v.3, а прошивка 1.26.4 умеет то, чего такое ПО не знает: таймерные функции выходов, расширенный безопасный режим, управление приводом. Любая из них переключает выход сама, и через чужой шаблон её не увидеть.

Рекомендую ознакомиться:

И что подключено к пятому входу? У него счётчик 8 при нулях на остальных и он может включать выходы.

По индикаторам и таймауту - проверю вечером.

Вход 5 и 6 подключены к выключателю и завязаны на каналы 5 и 6 (свет).

Это было сделано после тестов уже, когда не смог разобраться, почему два канала горят постоянно

Веб-конфигуратор я использовал, но он работал хреново, видимо, конфликтуя с тем, что происходит в сети. Я не стал насиловать трансиверы, отключил остальную сеть - и каналы перестали включаться. Воткнул сеть обратно - опять загорелись.

В сети счетик меркурий 236 и несколько преобразователей 1wire термометров, больше нет ничего.

Проверил. Если остановить mqtt-serial (kill на его процесс) и перегрузить реле по питанию - каналы 2 и 3 остаются выключенными. Подождал минут пять, потом перезагрузил wirenboard - и каналы снова включились (постарался максимально корректно запустить mqtt-serial - systemctl там отсутствует).

Лучше устройства с разными протоколами разделить на отдельные шины.

Давайте попробуем убрать счётчик Меркурий из настроек, отключить физически и перезапустить драйвер. Или подключить WB-MR6C v.3 на отдельный порт единственным устройством на шине.

Если найти закономерность не удастся, то пришлите, пожалуйста, файл настроек драйвера целиком, его сообщения из системного лога за время опыта и версию ПО контроллера. Если на вашей версии есть утилита wb-diag-collect — соберите диагностический архив, в нём это будет сразу. Создание архива описано в документации.

Развел Муркурий и модбасовские устройства на разные порты, глюки прекратились, каналы выключились и самопроизвольно не включаются.

Странно, что реле левый шум в линии (протокол меркурия) воспринимает как валидную модбасовскую посылку для себя и даже исполняет какие-то фантомные команды.

Тем не менее проблема решилась, спасибо за помощь!

Решается сменой адреса: поменяйте Modbus-адрес реле на любой свободный — https://wiki.wirenboard.com/wiki/Wiren_Board_Device_Modbus_Address.