Запись ИК команд с пультов

Добрый день!
Пытаюсь записать команды с пультов в память(RAM, ROM) датчика WB-MSW v3. Если это делать через интерфейс, то не происходит вообще ничего при перемещении ползунка "Записать команду в RAM (ROM).
Если я делаю это через modbus_client, то следующая история:

root@wirenboard-A4EITCUP:~# systemctl stop wb-mqtt-serial
root@wirenboard-A4EITCUP:~# modbus_client --debug -mrtu -b9600 -s2 -pnone /dev/ttyRS485-1 -a85 -t5 -r5301 1
Data to write: 0x1
Opening /dev/ttyRS485-1 at 9600 bauds (N, 8, 2)
[55][05][14][B5][FF][00][95][F8]
Waiting for a confirmation…
<55><05><14><00><95>
SUCCESS: written 1 elements!

Но по факту ничего не записывается.
Пробую следующие пульты: ТВ Sharp, кондиционер Electrolux, привод штор DOOYA, пульт от ТВ приставки.
Результат одинаков, ошибок в реестре нет. Датчик нормально работает, параметры показывает и т.д.

Что еще посмотреть?

Случилась вот такая история:
пришлось контроллер перезагрузить, чтобы остановить сообщения в реестр. Перезагрузил все ок, ошибок нет, все работает.

13-02-2024 22:34:11.749 [wb-mqtt-serial] WARNING: [register handler] failed to write: <modbus:85:coil: 5002>: Serial protocol error: server device is busy
13-02-2024 22:34:11.726 [wb-mqtt-serial] WARNING: [serial client] Failed to enable events for modbus:85: Serial protocol error: modbus exception, code 3
13-02-2024 22:34:11.670 [wb-mqtt-serial] WARNING: [modbus] Continuous read is not enabled [slave_id is 85]

Если перевести ползунок записать Rom или Ram, то в системном журнале такая история.

После перезагрузки ошибок нет, все ок

Добрый день.
Открыл Инструкция по работе с ИК-приёмопередатчиком в устройствах WB-MSW, WB-MIR — Wiren Board и смотрю.
Использую WB-MSW v3 прошивка 4.31.6

systemctl stop wb-mqtt-serial

Запишу что-то в третий банк. Активирую запись, нажимаю кнопку, деактивирую:

modbus_client --debug -mrtu -pnone -s2 -b115200 /dev/ttyRS485-1 -a 98 -t0x05 -r5302 1  
Data to write: 0x1
Opening /dev/ttyRS485-1 at 115200 bauds (N, 8, 2)
[62][05][14][B6][FF][00][61][BF]
Waiting for a confirmation...
<62><05><14><B6><FF><00><61><BF>
SUCCESS: written 1 elements!
<тут нажата кнопка>

root@wirenboard-AGH767IU:~# modbus_client --debug -mrtu -pnone -s2 -b115200 /dev/ttyRS485-1 -a 98 -t0x05 -r5302 0
Data to write: 0x0
Opening /dev/ttyRS485-1 at 115200 bauds (N, 8, 2)
[62][05][14][B6][00][00][20][4F]
Waiting for a confirmation...
<62><05><14><B6><00><00><20><4F>
SUCCESS: written 1 elements!

Проверяю длину записанной команды:

modbus_client --debug -mrtu -pnone -s2 -b115200 /dev/ttyRS485-1 -a 98 -t0x04 -r5402 -c1
Opening /dev/ttyRS485-1 at 115200 bauds (N, 8, 2)
[62][04][15][1A][00][01][1D][92]
Waiting for a confirmation...
<62><04><02><01><8E><FC><CC>
SUCCESS: read 1 of elements:
	Data: 0x018e 

Воспроизвожу:

modbus_client --debug -mrtu -pnone -s2 -b115200 /dev/ttyRS485-1 -a 98 -t0x05 -r5102 1
Data to write: 0x1
Opening /dev/ttyRS485-1 at 115200 bauds (N, 8, 2)
[62][05][13][EE][FF][00][E1][18]
Waiting for a confirmation...
<62><05><13><EE><FF><00><E1><18>
SUCCESS: written 1 elements!

Ну и воспроизводится, вполне удачно.
Какая прошивка на устройстве? Какой релиз на контроллере?

Направляю версию прошивки контроллера и датчика

Релиз ПО - обычно ниже.
В любом случае рекомендую обновить как ПО контроллера так и прошивку самого WB-MSW. Высоковероятно: WB-MSW v.3: Errata — Wiren Board

Все обновил. Прошивка датчика: 4.31.4, контроллера 2401

image

Далее запускаю команду по Вашему образцу выше. После запуска modbus_client --debug -mrtu -pnone -s2 -b115200 /dev/ttyRS485-1 -a 85 -t0x05 -r5302 1 появляется ошибка, ERROR Connection timed out: select. ERROR occured!, нет выражения: SUCCESS: written 1 elements!.

Ошибка означает: Ждем подтверждения…
ОШИБКА Время ожидания подключения истекло: выберите
Произошла ошибка! Но нет времени нажимать ошибка появляется мгновенно после запуска команды.

Какие еще могут быть варианты? куда лезть?

Если делать по мануалу, ответы в SSH на картинке ниже. Но на итог ничего не записывается

Добрый день!
Вчера удалось записать сигнал только с одного пульта из трёх.
На форуме прочитал, что возможно вручную корректировать коды, так как их длина больше.
Подскажите как это делать? Спасибо!

У вас вряд ли скорость на шине такая же как у меня. Как я видел - дефолтная, 9600.

Тут вы вместо того чтобы прочитать длину сохраненной в банк команды (регистр input, используется для чтения функция 0x04) записываете в него “1” функцией 05.
Собственно чтение длины я показал как самый простой способ убедиться что записалось.

Так через интерфейс все ж делать это проще. Ну и сразу можно (на период настройки, естественно) включить чтение длин записанных команд.

Это устарело, сейчас сохраняются в два раза более длинные, в актуальных прошивках.
Идея такая? Команда пишется в RAM банк, она, даже если не помещается в него полностью - то все равно остается.
Вот тут про это: WB-MIR v.2 не записывает в ROM - #9 от пользователя BrainRoot
Но, повторюсь, неактуально.

Почему тогда не записываются сигналы с двух ИК пультов? Что ещё посмотреть, если дело не в длине команды…

“не записываются” - что в регистрах RAM банка? То есть - запишите в RAM и проверьте - есть ли что-то. Пульты могут использовать не ту частоту модуляции, например. Обычно помогает вплотную поднести.