WB-MIR v.2 не записывает в ROM

Добрый день.
Есть модули WB-MIR v.2 (две штуки), висят на интерфейсе MOD1 (wirenboard 6).
Контроллер и модули обновлены до последнего.
Настройка интерфейса: 9600 8N2, таймаут ответа - 500, период опроса - 20

В интерфейса wirenboard включаю свичт Learn to RAM - команда считывается.
Жму Play from RAM - производится, кондиционер нормально реагирует.

Пытаюсь записать в любую ячейку ROM (1-9) - записи не происходит, размер ROM остается 0. В логах выдает ошибку:

21-02-2022 17:04:49.708 [wb-mqtt-serial] WARNING: [modbus] failed to read 1 input(s) @ 283 of device modbus:157: Serial protocol error: malformed response: invalid crc
21-02-2022 17:04:19.784 [wb-mqtt-serial] WARNING: [modbus] failed to read 2 input(s) @ 270 of device modbus:157: Serial protocol error: request timed out
21-02-2022 17:04:19.583 [wb-mqtt-serial] WARNING: [modbus] failed to read 2 input(s) @ 9 of device modbus:157: Serial protocol error: malformed response: invalid crc
21-02-2022 17:03:49.667 [wb-mqtt-serial] WARNING: [modbus] failed to read 2 input(s) @ 9 of device modbus:157: Serial protocol error: request timed out

Что я не так делаю?

Добрый день.
Какая используется прошивка на MIR?

Переключается ли соответствующий coil?

Прошивка 4.16.19
Я в web-интерфейсе включаю переключатель “Записать команду в ROM1”
Даю команду с пульта
Затем выключаю переключатель

Пытался из коммандной строки:
modbus_client --debug -mrtu -b9600 -s2 -pnone /dev/ttyMOD1 -a157 -t5 -r5301 1
Датем ИК сигнал с пульта
modbus_client --debug -mrtu -b9600 -s2 -pnone /dev/ttyMOD1 -a157 -t5 -r5301 0
Вывод:
Data to write: 0x1
Opening /dev/ttyMOD1 at 9600 bauds (N, 8, 2)
[9D][05][14][B5][FF][00][85][B0]
Waiting for a confirmation…
<9D><05><14><00><85>
SUCCESS: written 1 elements!

Затем произвести сигнал:
modbus_client --debug -mrtu -b9600 -s2 -pnone /dev/ttyMOD1 -a157 -t5 -r5102 1
Вывод:
Data to write: 0x0
Opening /dev/ttyMOD1 at 9600 bauds (N, 8, 2)
[9D][05][14][B5][00][00][C4][40]
Waiting for a confirmation…
<9D><05><14><00><00><40>
SUCCESS: written 1 elements!

Но размер команды в ROM1 - 0
И кондиционер не реагирует никак.

Прочитайте/покажите пожалуйста записанную в RAM банк команду.

Здравствуйте!

Данная команда включает запись команды в банк ROM2! Чтобы записать команду в ROM1 нужно использовать регистр 5300 (coil) для записи и 5100 (coil) для воспроизведения.

В логах видны ошибки связи с модулем. Возможно, модуль просто не получает команды на запись ИК сигнала. Нужно проверить линию связи и параметры обмена модуля и порта. Этих ошибок быть не должно.

Проверил работу прошивки 4.16.19 и запись сигналов модулем - проблем не обнаружил.

Добрый день.
Извините за задержку.

Немного про ситуацию:

  • при записи в ROM с другой пульта другого кондиционера (Fujitsu AR-RCE1E)- запись производится, никаких ошибок в логе

  • при записи в ROM с пульта нужного кондиционера (Mitsubishi SG175) - запись в ROM НЕ производится и в лог падают ошибки:
    11-03-2022 11:26:32.181 [wb-mqtt-serial] WARNING: [register handler] failed to write: <modbus:161:coil: 5001>: Serial protocol error: server device is busy

  • при записи в RAM с пульта нужного кондиционера (Mitsubishi SG175) - запись в RAM производится и затем вопроиводится через передатчик

Какой командой можно прочитать записанную в RAM-банк команду?

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

Вот тут теория:

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

А можно меня не в теорию посылать, а написать четкое HOWTO с конкретными примерами для, судя по всему, типичного случая, когда купленное оборудование не работает как надо.

Как я понял, в моем случае надо:

  • считать из RAM команду (как?, пример)
  • понять где дубль или главная часть (как?, пример)
  • записать команду в ROM (как?, пример)
  • или придется скриптами посылать в RAM и оттуда воспроизводить, если команда все равно большая для ROM (как определить объем rom-банка?)

Нужно-то всего 4 команды посылать и столько вопросов.

Если команда длиннее 512 импульсов - без ручного редактирования/пересохранения команд работать будет только в том случае если она, команда дублируется.
Если у вас оборудование работает с длинными командами - можете попробовать их проанализировать-обрезать или вернуть WB-MIR. Для анализа как раз нужна теория.
HOWTO доскональное тут: Запись ИК команд в формате pcf - #3 от пользователя BrainRoot

Размер хранится в 5400+i как описано

Хорошо, я считал команду из RAM:
0x0153 0x00a5 0x002d 0x007c 0x002b 0x007d 0x002c 0x0028 0x002c 0x002a 0x002a 0x002a 0x002a 0x007c 0x002c 0x0028 0x002c 0x002a 0x002a 0x007c 0x002c 0x007c 0x002c 0x002a 0x002a 0x007c 0x002c 0x0028 0x002c 0x002a 0x002b 0x007b 0x002c 0x007c 0x002c 0x0028 0x002c 0x007c 0x002c 0x007c 0x002d 0x002a 0x002a 0x002a 0x002a 0x007b 0x002c 0x0028 0x002c 0x002b 0x0029 0x007c 0x002c 0x0028 0x002d 0x002a 0x002a 0x002a 0x002a 0x002a 0x002a 0x002a 0x0029 0x002b 0x0029 0x002b 0x0029 0x002b 0x0029 0x002b 0x0029 0x002b 0x002a 0x002a 0x002a 0x002a 0x002a 0x002a 0x002a 0x002a 0x002a 0x002a 0x002a 0x002a 0x0029 0x002b 0x0029 0x002b 0x0029 0x002b 0x002a 0x0027 0x002d 0x0027 0x002d 0x002a 0x002a 0x002a 0x002a 0x0027 0x002d 0x002a 0x002a 0x0027 0x002c 0x007c 0x002c 0x007c 0x002d 0x0027 0x002d 0x002a 0x002a 0x002a 0x002a 0x002a 0x002a 0x007b 0x002c 0x0028 0x002d 0x002a 0x002a 0x002a 0x002a 0x0028 0x002c 0x002a 0x002a 0x002a 0x002a 0x002a 0x002a 0x007c 0x002c 0x007c 0x002c 0x0028 0x002c 0x002a 0x002a 0x0028 0x002c 0x002a 0x002a 0x002a 0x002a 0x007c 0x002c 0x007c 0x002d 0x0027 0x002c 0x0028 0x002c 0x0028 0x002c 0x0028 0x002c 0x007c 0x002c 0x0028 0x002c 0x002a 0x002b 0x0027 0x002d 0x0027 0x002d 0x0027 0x002c 0x0028 0x002c 0x002b 0x0029 0x0028 0x002c 0x0028 0x002c 0x0028 0x002c 0x002b 0x002a 0x002a 0x002a 0x002a 0x002a 0x002a 0x002a 0x002a 0x0029 0x0028 0x002c 0x0028 0x002c 0x002b 0x0029 0x002b 0x0029 0x0028 0x002d 0x002a 0x002a 0x002a 0x002a 0x002a 0x002a 0x002a 0x002a 0x002a 0x0029 0x0028 0x002c 0x002b 0x0029 0x0028 0x002c 0x0028 0x002d 0x0027 0x002d 0x0027 0x002d 0x002a 0x002a 0x002a 0x002a 0x0027 0x002d 0x002a 0x002a 0x002a 0x0029 0x002b 0x0029 0x0028 0x002d 0x0027 0x002d 0x0027 0x002d 0x0027 0x002d 0x0027 0x002d 0x0027 0x002d 0x0027 0x002d 0x002a 0x002a 0x0027 0x002c 0x0028 0x002c 0x0028 0x002d 0x002a 0x002a 0x002a 0x002a 0x002a 0x002a 0x002a 0x002a 0x0028 0x002c 0x002a 0x002a 0x0028 0x002c 0x002a 0x002b 0x0029 0x002a 0x0028 0x002c 0x002a 0x002a 0x002a 0x002a 0x007c 0x002c 0x007c 0x002c 0x007c 0x002d 0x007b 0x002c 0x002a 0x002a 0x046d 0x0152 0x00a6 0x002c 0x007c 0x002c 0x007c 0x002c 0x002a 0x002a 0x0028 0x002d 0x0029 0x002b 0x007b 0x002c 0x0028 0x002c 0x0028 0x002c 0x007c 0x002c 0x007c 0x002d 0x0027 0x002d 0x007b 0x002c 0x0028 0x002c 0x0028 0x002c 0x007c 0x002c 0x007c 0x002d 0x0027 0x002d 0x007b 0x002d 0x007b 0x002c 0x0028 0x002c 0x0028 0x002c 0x007c 0x002d 0x0027 0x002d 0x0027 0x002d 0x007b 0x002d 0x0027 0x002d 0x0027 0x002c 0x002b 0x0029 0x002b 0x0029 0x002b 0x002a 0x002a 0x002a 0x002a 0x002a 0x0027 0x002d 0x002a 0x002a 0x002a 0x002a 0x002a 0x002a 0x002a 0x0029 0x002b 0x0029 0x0028 0x002d 0x002a 0x002a 0x002a 0x002a 0x002a 0x002a 0x002a 0x002a 0x002a 0x002a 0x002a 0x002a 0x002a 0x002a 0x002a 0x0029 0x002b 0x002a 0x002a 0x002a 0x002a 0x002a 0x002a 0x002a 0x007c 0x002c 0x007c 0x002c 0x002a 0x002b 0x0029 0x002a 0x002a 0x002a 0x002a 0x002a 0x007c 0x002c 0x002a 0x002a 0x002a 0x002a 0x0028 0x002c 0x002a 0x002b 0x0029 0x002b 0x0027 0x002c 0x002a 0x002a 0x007c 0x002c 0x007c 0x002c 0x0028 0x002c 0x002b 0x002a 0x002a 0x002a 0x002a 0x002a 0x002a 0x0029 0x007c 0x002c 0x007c 0x002c 0x0028 0x002c 0x002b 0x002a 0x002a 0x002a 0x002a 0x002a 0x007b 0x002c 0x0028 0x002c 0x002b 0x0029 0x002b 0x0029 0x002b 0x0029 0x002b 0x002a 0x002a 0x002a 0x002a 0x002a 0x002a 0x002a 0x002a 0x002a 0x002a 0x002a 0x002a 0x0029 0x002b 0x0029 0x002b 0x0029 0x002b 0x002a 0x002a 0x002a 0x002a 0x002a 0x002a 0x002a 0x002a 0x002a 0x002a 0x002a 0x002a 0x002a 0x002a 0x0029 0x002b 0x0029 0x002b 0x002a 0x002a 0x002a 0x002a 0x002a 0x002a 0x002a 0x002a 0x002a 0x002a 0x0000 0x0000

Как понять, где здесь пауза между дублированием команд?

Почему бы при записи в ROM-банк не делать также, как и в RAM? Обрезать команду и все-таки записывать ее вместо выдачи ничего неговорящей ошибки Serial protocol error: server device is busy?

Предполагаю что после этой паузы идет повтор.

Как раз для того чтобы не записывать “обрезанную”. Ну или не записать две подряд разных команды.
Вот про то что если команда длинней и просто не запишется о выдаче особой ошибки - да, подумаем.