Отправка ir-команд датчиком WB-MSW v.3

Есть проблема с передачей ir-команд отправляемых через датчик WB-MSW v.3. Если команда отправляется через CLI с отключенным mqtt-serial - проходит с первого раза. Если отправляю через web ui или mqtt, то команда проходит только со второго раза. Ниже немного логов:
messages.txt (215.4 КБ)

Присоединяюсь к теме. Аналогичное поведение.

Добрый день.
Почистите пожалуйста банки IR, запишите во второй команду

Запустите в одной сессии терминала, изменив адрес под свой

mosquitto_sub -v -t /devices/wb-msw-v3_98/# |grep Play

Во второй:

tail -f /var/log/messages |grep 'coil(s) @ 51'

нажмите несколько раз на кнопку “Play from ROM”

Вывод для четырехкратного нажатия:

/devices/wb-msw-v3_98/controls/Play from ROM2/on 1
/devices/wb-msw-v3_98/controls/Play from ROM2 1
/devices/wb-msw-v3_98/controls/Play from ROM2 0
/devices/wb-msw-v3_98/controls/Play from ROM2/on 1
/devices/wb-msw-v3_98/controls/Play from ROM2 1
/devices/wb-msw-v3_98/controls/Play from ROM2 0
/devices/wb-msw-v3_98/controls/Play from ROM2/on 1
/devices/wb-msw-v3_98/controls/Play from ROM2 1
/devices/wb-msw-v3_98/controls/Play from ROM2 0
/devices/wb-msw-v3_98/controls/Play from ROM2/on 1
/devices/wb-msw-v3_98/controls/Play from ROM2 1
/devices/wb-msw-v3_98/controls/Play from ROM2 0
Nov 24 17:24:56 wirenboard-ACAX3M6K user.notice serial: modbus: read 7 coil(s) @ 5100 of device modbus:98
Nov 24 17:24:56 wirenboard-ACAX3M6K user.notice serial: modbus: read 7 coil(s) @ 5100 of device modbus:98
Nov 24 17:24:57 wirenboard-ACAX3M6K user.notice serial: modbus: read 7 coil(s) @ 5100 of device modbus:98
Nov 24 17:24:57 wirenboard-ACAX3M6K user.notice serial: modbus: read 7 coil(s) @ 5100 of device modbus:98
Nov 24 17:24:58 wirenboard-ACAX3M6K user.notice serial: modbus: read 7 coil(s) @ 5100 of device modbus:98
Nov 24 17:24:58 wirenboard-ACAX3M6K user.notice serial: modbus: read 7 coil(s) @ 5100 of device modbus:98
Nov 24 17:24:58 wirenboard-ACAX3M6K user.notice serial: modbus: write 1 coil(s) @ 5101 of device modbus:98
Nov 24 17:24:59 wirenboard-ACAX3M6K user.notice serial: modbus: read 7 coil(s) @ 5100 of device modbus:98
Nov 24 17:24:59 wirenboard-ACAX3M6K user.notice serial: modbus: write 1 coil(s) @ 5101 of device modbus:98
Nov 24 17:24:59 wirenboard-ACAX3M6K user.notice serial: modbus: read 7 coil(s) @ 5100 of device modbus:98
Nov 24 17:25:00 wirenboard-ACAX3M6K user.notice serial: modbus: read 7 coil(s) @ 5100 of device modbus:98
Nov 24 17:25:00 wirenboard-ACAX3M6K user.notice serial: modbus: write 1 coil(s) @ 5101 of device modbus:98
Nov 24 17:25:00 wirenboard-ACAX3M6K user.notice serial: modbus: read 7 coil(s) @ 5100 of device modbus:98
Nov 24 17:25:00 wirenboard-ACAX3M6K user.notice serial: modbus: write 1 coil(s) @ 5101 of device modbus:98
Nov 24 17:25:01 wirenboard-ACAX3M6K user.notice serial: modbus: read 7 coil(s) @ 5100 of device modbus:98
Nov 24 17:25:01 wirenboard-ACAX3M6K user.notice serial: modbus: read 7 coil(s) @ 5100 of device modbus:98
Nov 24 17:25:02 wirenboard-ACAX3M6K user.notice serial: modbus: read 7 coil(s) @ 5100 of device modbus:98
Nov 24 17:25:02 wirenboard-ACAX3M6K user.notice serial: modbus: read 7 coil(s) @ 5100 of device modbus:98
Nov 24 17:25:03 wirenboard-ACAX3M6K user.notice serial: modbus: read 7 coil(s) @ 5100 of device modbus:98
Nov 24 17:25:03 wirenboard-ACAX3M6K user.notice serial: modbus: read 7 coil(s) @ 5100 of device modbus:98

root@wirenboard-AUZ3CUJC:~# mosquitto_sub -v -t /devices/wb-msw-v3_21/# |grep Play
/devices/wb-msw-v3_21/controls/Play from RAM 0
/devices/wb-msw-v3_21/controls/Play from RAM/meta/type pushbutton
/devices/wb-msw-v3_21/controls/Play from RAM/meta/order 15
/devices/wb-msw-v3_21/controls/Play from RAM/meta/error w
/devices/wb-msw-v3_21/controls/Play from ROM1 0
/devices/wb-msw-v3_21/controls/Play from ROM1/meta/type pushbutton
/devices/wb-msw-v3_21/controls/Play from ROM1/meta/order 23
/devices/wb-msw-v3_21/controls/Play from ROM2 0
/devices/wb-msw-v3_21/controls/Play from ROM2/meta/type pushbutton
/devices/wb-msw-v3_21/controls/Play from ROM2/meta/order 24
/devices/wb-msw-v3_21/controls/Play from ROM3 0
/devices/wb-msw-v3_21/controls/Play from ROM3/meta/type pushbutton
/devices/wb-msw-v3_21/controls/Play from ROM3/meta/order 25
/devices/wb-msw-v3_21/controls/Play from ROM4 0
/devices/wb-msw-v3_21/controls/Play from ROM4/meta/type pushbutton
/devices/wb-msw-v3_21/controls/Play from ROM4/meta/order 26
/devices/wb-msw-v3_21/controls/Play from ROM5 0
/devices/wb-msw-v3_21/controls/Play from ROM5/meta/type pushbutton
/devices/wb-msw-v3_21/controls/Play from ROM5/meta/order 27
/devices/wb-msw-v3_21/controls/Play from ROM6 0
/devices/wb-msw-v3_21/controls/Play from ROM6/meta/type pushbutton
/devices/wb-msw-v3_21/controls/Play from ROM6/meta/order 28
/devices/wb-msw-v3_21/controls/Play from ROM7 0
/devices/wb-msw-v3_21/controls/Play from ROM7/meta/type pushbutton
/devices/wb-msw-v3_21/controls/Play from ROM7/meta/order 29
/devices/wb-msw-v3_21/controls/Play from ROM2/on 1
/devices/wb-msw-v3_21/controls/Play from ROM2 1
/devices/wb-msw-v3_21/controls/Play from ROM2/on 0
/devices/wb-msw-v3_21/controls/Play from ROM2 0
/devices/wb-msw-v3_21/controls/Play from ROM2/on 1
/devices/wb-msw-v3_21/controls/Play from ROM2 1
/devices/wb-msw-v3_21/controls/Play from ROM2/on 1
/devices/wb-msw-v3_21/controls/Play from ROM2 1
/devices/wb-msw-v3_21/controls/Play from ROM2 0
/devices/wb-msw-v3_21/controls/Play from ROM2/on 1
/devices/wb-msw-v3_21/controls/Play from ROM2 1
/devices/wb-msw-v3_21/controls/Play from ROM2 0

root@wirenboard-AUZ3CUJC:~# tail -f /var/log/messages |grep ‘coil(s) @ 51’ - не возвращает ничего
Первая не прошла, 3 следующих дошли до кондиционера

А дебаг на serial включен? Я про это забыл написать, включите перед выполнением.

Правильно почистить все банки такой командой
modbus_client --debug -mrtu -b115200 -s2 -pnone /dev/ttyRS485-2 -a59 -t5 -r5000 1
Верно?

Да, совершенно верно.

Два теста с паузой, второго нажатия включается дальше с большой паузой между нажатиями

1 - ая попытка
/devices/wb-msw-v3_59/controls/Play from ROM2/on 1
/devices/wb-msw-v3_59/controls/Play from ROM2 1
/devices/wb-msw-v3_59/controls/Play from ROM2/on 0
/devices/wb-msw-v3_59/controls/Play from ROM2 0
/devices/wb-msw-v3_59/controls/Play from ROM2/on 1
/devices/wb-msw-v3_59/controls/Play from ROM2 1
/devices/wb-msw-v3_59/controls/Play from ROM2 0
/devices/wb-msw-v3_59/controls/Play from ROM2/on 1
/devices/wb-msw-v3_59/controls/Play from ROM2 1
/devices/wb-msw-v3_59/controls/Play from ROM2/on 0
/devices/wb-msw-v3_59/controls/Play from ROM2 0
/devices/wb-msw-v3_59/controls/Play from ROM2/on 1
/devices/wb-msw-v3_59/controls/Play from ROM2 1
/devices/wb-msw-v3_59/controls/Play from ROM2/on 0
/devices/wb-msw-v3_59/controls/Play from ROM2 0

root@wirenboard-AB3RVWYB:~# tail -f /var/log/messages | grep "modbus:59:coil: 51 "
Dec 1 07:25:45 wirenboard-AB3RVWYB user.notice serial: setting device register: <modbus:59:coil: 5101> ← 1
Dec 1 07:25:45 wirenboard-AB3RVWYB user.notice serial: setting device register: <modbus:59:coil: 5101> ← 0
Dec 1 07:25:48 wirenboard-AB3RVWYB user.notice serial: setting device register: <modbus:59:coil: 5101> ← 1
Dec 1 07:25:49 wirenboard-AB3RVWYB user.notice serial: new val for <modbus:59:c oil: 5101>: 0
Dec 1 07:25:49 wirenboard-AB3RVWYB user.notice serial: register value change: < modbus:59:coil: 5101> ← 0
Dec 1 07:25:52 wirenboard-AB3RVWYB user.notice serial: setting device register: <modbus:59:coil: 5101> ← 1
Dec 1 07:25:52 wirenboard-AB3RVWYB user.notice serial: setting device register: <modbus:59:coil: 5101> ← 0
Dec 1 07:25:58 wirenboard-AB3RVWYB user.notice serial: setting device register: <modbus:59:coil: 5101> ← 1
Dec 1 07:25:58 wirenboard-AB3RVWYB user.notice serial: setting device register: <modbus:59:coil: 5101> ← 0

2- ая попытка
/devices/wb-msw-v3_59/controls/Play from ROM2/on 1
/devices/wb-msw-v3_59/controls/Play from ROM2 1
/devices/wb-msw-v3_59/controls/Play from ROM2/on 0
/devices/wb-msw-v3_59/controls/Play from ROM2 0
/devices/wb-msw-v3_59/controls/Play from ROM2/on 1
/devices/wb-msw-v3_59/controls/Play from ROM2 1
/devices/wb-msw-v3_59/controls/Play from ROM2/on 0
/devices/wb-msw-v3_59/controls/Play from ROM2 0
/devices/wb-msw-v3_59/controls/Play from ROM2/on 1
/devices/wb-msw-v3_59/controls/Play from ROM2 1
/devices/wb-msw-v3_59/controls/Play from ROM2/on 0
/devices/wb-msw-v3_59/controls/Play from ROM2 0
/devices/wb-msw-v3_59/controls/Play from ROM2/on 1
/devices/wb-msw-v3_59/controls/Play from ROM2 1
/devices/wb-msw-v3_59/controls/Play from ROM2/on 0
/devices/wb-msw-v3_59/controls/Play from ROM2 0

Dec 1 07:26:44 wirenboard-AB3RVWYB user.notice serial: setting device register: <modbus:59:coil: 5101> ← 1
Dec 1 07:26:44 wirenboard-AB3RVWYB user.notice serial: setting device register: <modbus:59:coil: 5101> ← 0
Dec 1 07:26:49 wirenboard-AB3RVWYB user.notice serial: setting device register: <modbus:59:coil: 5101> ← 1
Dec 1 07:26:49 wirenboard-AB3RVWYB user.notice serial: setting device register: <modbus:59:coil: 5101> ← 0
Dec 1 07:26:54 wirenboard-AB3RVWYB user.notice serial: setting device register: <modbus:59:coil: 5101> ← 1
Dec 1 07:26:55 wirenboard-AB3RVWYB user.notice serial: setting device register: <modbus:59:coil: 5101> ← 0
Dec 1 07:27:00 wirenboard-AB3RVWYB user.notice serial: setting device register: <modbus:59:coil: 5101> ← 1
Dec 1 07:27:00 wirenboard-AB3RVWYB user.notice serial: setting device register: <modbus:59:coil: 5101> ← 0

3-я попытка

/devices/wb-msw-v3_59/controls/Play from ROM2/on 1
/devices/wb-msw-v3_59/controls/Play from ROM2 1
/devices/wb-msw-v3_59/controls/Play from ROM2/on 0
/devices/wb-msw-v3_59/controls/Play from ROM2 0
/devices/wb-msw-v3_59/controls/Play from ROM2/on 1
/devices/wb-msw-v3_59/controls/Play from ROM2 1
/devices/wb-msw-v3_59/controls/Play from ROM2/on 0
/devices/wb-msw-v3_59/controls/Play from ROM2 0

Dec 1 07:39:16 wirenboard-AB3RVWYB user.notice serial: setting device register: <modbus:59:coil: 5101> ← 1
Dec 1 07:39:16 wirenboard-AB3RVWYB user.notice serial: setting device register: <modbus:59:coil: 5101> ← 0
Dec 1 07:39:34 wirenboard-AB3RVWYB user.notice serial: setting device register: <modbus:59:coil: 5101> ← 1
Dec 1 07:39:34 wirenboard-AB3RVWYB user.notice serial: setting device register: <modbus:59:coil: 5101> ← 0

Срабатывает после второго раза даже если между нажатиями кнопки прошло больше 6 секунд (в третьей попытке считал до десяти)

При выключенном дебаге пауза между посылками чтобы сработал такое впечатление должна быть значительно меньше. Хотя никакой особой логики не увидел.

Так, между попытками wb-mqtt-serial останавливался/перезапускался или ничего не делалось?
Сейчас протестирую у себя и попробуем понять - реально ли не пишется в устройство первая посылка.

Между попытками ничего не изменялось.

Не знаю это связано или нет, но обратить внимание должен.
После обновления на последнюю прошивку два датчика (из моих трех) уходили в дисконнект (переставали отвечать на запросы совсем) с разницей в неделю. Дисконнект лечится только снятием датчика с шины и втыканием обратно. Скорость шины 115200.

Скорее не связано.
А какое время работали до того как перестать отвечать?
и от чего питаются?

До последней прошивки возникали ошибки на шине (ошибки чтения.записи регистров), но до полной потери связи дело не доходило . Висят все три датчика на одной шине на втором порту 485. Датчики на этой шине питаются от выхода Vout контроллера.

Удалось ли проверить поведение ИК части датчика?

PS За последнюю неделю датчики отвалились 4 раза с сообщением в messages
Dec 5 10:08:58 wirenboard-AB3RVWYB user.notice serial: ModbusRTU::ReadRegisterRange(): failed to read 1 holding(s) @ 8 of device modbus:123: Serial protocol error: request timed out
Dec 5 10:08:59 wirenboard-AB3RVWYB user.notice serial: device modbus:123 disconnected
Dec 5 10:08:59 wirenboard-AB3RVWYB user.notice serial: ModbusRTU::ReadRegisterRange(): failed to read 1 holding(s) @ 8 of device modbus:123: Serial protocol error: request timed out

3 раза - первый датчик, 1 раз - второй датчик и ни разу третий.
Помогает вернуть их к жизни исключительно сброс по питанию, т.e. Vout выкл и вкл.

Пожалуйста уточните сроки, уже довольно много времени прошло, чтобы определиться ждем исправления в прошивке (когда выйдет) или это локальная проблема.
На последней прошивке рандомно один (наверное будет и два и три но я не жду и сбрасываю питание с шины) датчик из трех выпадает в disconnect.

Устройство msw3-48mh с прошивкой 4.16.1?
Чтобы точно на том же воспроизводил. А давайте завтра я попробую на вашем? Дадите anydesk или другой удаленный доступ?

Сможем мы перенести на послезавтра? Могу и завтра, но так как дело касается ИК и нужно фиксировать включение/выключение, то наверное завтра отпадает. Но если смогу настроить камеру на ТВ, то можно и завтра.
В любом случае, давайте запланируем время, а я подстроюсь.
По данным датчиков.

root@wirenboard-AB3RVWYB:~# echo -e modbus_client --debug -mrtu -pnone -s2 -b 115200 /dev/ttyRS485-2 -a59 -t0x03 -r200 -c 6 | grep Data | sed -e 's/0x00/\\\x/g' -e 's/Data://' -e 's/\s//g'
WBMSW3

root@wirenboard-AB3RVWYB:~# echo -e modbus_client --debug -mrtu -pnone -s2 -b 115200 /dev/ttyRS485-2 -a59 -t0x03 -r250 -c 19 | grep Data | sed -e 's/0x00/\x/g' -e 's/Data://' -e 's/s//g'| xxd -r -p && echo ‘’
4.16.1

Ок, послезавтра. В принципе я на связи 9-19, так что в удобное время.

Я готов сегодня, данные для подключения и связи написал в личку.

Исследовал, нашел багу, описываю методику воспроизведения.

Предлагаю “сбросить” контроллер к заводским. У меня после такой процедуры воспроизводиться перестало.
Инструкция: