Запись ик команд в модуль wb-mir

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

  1. как проверить верно ли записалась команда в модуль?
  2. Почему с одних пультов команда записывается а с других нет? Пульты самые обычные от телевизоров, муз центров и т.п.
  3. в инструкции написано, что можно передавать ик команды напрямую с контроллера на модуль wb-mir, но как это сделать не описано. Если можно выложите инструкцию для этого.
  4. Если пульт работает на другой частоте, можно ли изменить настройки модуля под другую частоту? Спасибо!

Толком никак. Вы можете выгрузить сигнал из блока памяти в блок оперативной памяти WB-MIR и, затем, прочитать его оттуда и посмотреть на него глазами.

Это раздел “Редактирование сигнала в постоянной памяти” в документации: Инструкция по работе с ИК-приёмопередатчиком в устройствах WB-MSW, WB-MIR — Wiren Board

Нужна вся информация.

тот же пункт “Редактирование сигнала в постоянной памяти”

нет, к сожалению

Подскажите, пожалуйста, читал в вики, но не нашёл… как прочитать код клавиши записанной в постоянную память? мне нужно узнать какую последовательность кодов выдаёт каждая кнопка на пульте ду. ещё лучше если бы была команда которая отправляла бы код клавиши сразу в текстовый файл. напишите как правильно должна выглядеть такая команда? хотя бы чтобы выводить код записанной клавиши в консоль.

Добрый день!
В соответствии с https://contactless.ru/wiki/index.php/WB-MSx_Consumer_IR_Manual#.D0.A0.D0.B5.D0.B4.D0.B0.D0.BA.D1.82.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5_.D1.81.D0.B8.D0.B3.D0.BD.D0.B0.D0.BB.D0.B0_.D0.B2_.D0.BF.D0.BE.D1.81.D1.82.D0.BE.D1.8F.D0.BD.D0.BD.D0.BE.D0.B9_.D0.BF.D0.B0.D0.BC.D1.8F.D1.82.D0.B8
чтобы получить команду из постоянной памяти:

  1. “Чтобы отредактировать сигнал под номером i или записать его по Modbus (без пульта ДУ), запишите 1 в регистр флага по адресу 5200 + i. После этого сигнал в виде последовательности натуральных чисел (смотрите рисунок “Пример содержимого оперативного буфера WB-MIR”) будет записан в подряд идущие регистры хранения, начиная с регистра 2000. В конце последовательности будут два подряд идущих регистра хранения, содержащих 0.”
  2. Вычитайте содержимое holding регистров 2000-2509 например, через modbus_client с параметром -t3 -с510 (прочитать 510 регистров). Скорее всего, с какого-то момента в регистрах начнут быть одни нули. Собственно ИК-команда идёт с первых регистров до момента первого появления двух нулей подряд.

Здравствуйте! спасибо! неужели нельзя как-то проще. как тогда мне определить какая команда принадлежит какой кнопке пульта? если там уже записано 3 или 5 команд? поясните, пожалуйста, по подробней.
в правилах навесил на кнопки следующие функции.
для начала записи ик команды я использую
dev [“wb-mir_63”][“Learn to ROM2”] =1;
для окончания:
dev [“wb-mir_63”][“Learn to ROM2”] =0;
для воспроизведения ик команды:
dev [“wb-mir_63”][“Play from ROM2”] =1;

есть ли возможность таким же образом через движок правил послать команду на вывод ик команды в текстовый файл?
спасибо!

Не понял ваш вопрос.
Во-первых, если это пульт от кондиционера, то он по нажатию на любую клавишу передаёт кондиционеру не команду, а итоговое состояние. То есть нажатие на кнопку “+1” при отображаемой на пульте температуре 22С отдаёт в кондиционер не команду “увеличь температуры на 1С”, а “перейди в состояние уставка температуры 23С”.
Для того же примера с кондиционером, вы должны записать такие “команды-состояния” в разные ячейки ROM. Например, в ROM1 - состояние “кондиционер выключен”, в ROM2 - состояние “кондиционер включен, уставка температуры - 18С”, в ROM3 - состояние “кондиционер включен, уставка температуры - 25С”.
Каждый такой записанный сигнал помещается в отдельную ячейку ПЗУ и из неё воспроизводится. Вы не можете хранить несколько сигналов в одной ячейке.

Спасибо! Но я не это имел в виду. использую пульт от телевизора, который просто передаёт команду, например следующий канал или предыдущий канал. там нет никаких состояний, но есть набор этих самыхъ байт. так вот мне этот набор и нужно получить в читаемом виде чтобы потом напрямую с контроллера передавать эту команду на модуль wb-mir без записи в постоянную память.
Спасибо!

Самым простым решением будет постараться ограничить количество команд восемью, и записать их в ROM1-ROM8.
Если требуется больше команд, то их действительно нужно хранить на компьютере, и загружать при необходимости. При этом загружать их в ПЗУ строго не рекомендуется - flash память микроконтроллера в WB-MIR гарантирует, кажется, около 10 000 перезаписей, чего хватает на обычную работу, но может не хватить при 10 перезаписях на каждое включение телевизора. Поэтому если вы будет подгружать команды с контроллера, то загружайте их в оперативную память (holding 2000…) - она находится в оперативной памяти и не расходует ресурс флеш-памяти.
Готовых программ для таких действий у нас нет, но можете посмотреть набор скриптов, которые написал наш сотрудник для переноса команд из ПЗУ одного WB-MIR в другой. На их основе можете написать скрипт под свои цели, но без нашей помощи. Скрипты вышлю на вашу почту

Сообщение перенесено в новую тему: WB-MIR перестал отвечать по RS-485

Здравствуйте !
7 команд в постоянной памяти не хватает
У меня та же проблема .
Можно скрипт с переносом команд в публичный доступ (либо в почту )
Столкнулся с проблемой - команда в оперативном буфере состоит из 509 регистров
Записать их все модбас клиентом за одну команду не получается (потому ,что максимум 125 регистров)
Как записать команду полностью в оперативную память блока MIR из скрипта?

Добрый день! Основная идея – в цикле по кускам. Есть скрипты, которые это делают, но без официальной поддержки, для технического использования. Давайте я выложу их здесь.

mir_banks.zip (2,8 КБ)

1 лайк

Спасибо . Эти файлы возможно запустить из движка правил ?

Вот с движком правил сложнее. Эти скрипты рассчитаны на то, что wb-mqtt-serial остановлен и выполняются из командной строки. Поэтому вам надо в движке правил через runShellCommand останавливать wb-mqtt-serial, запускать скрипты, запускать wb-mqtt-serial: при этом на всё это время коммуникации по RS-485 с остальными устройствами на шине останавливаются. Если вы можете, подключите MIR к отдельному порту, Если вам действительно часто нужно использовать много инфракрасных команд, то стоит подумать о новой версии, MIR2, он запоминает десятки команд.

20 команд (судя по описанию).
У меня куплен именно этот модуль . При подключении модбас устройств к WB5 нет шаблона WB-MIR v2. Его возможно доустановить ? .

Смотрите, шаблон можно скачать отсюда:


Он ограничен 20 командами, но теоретически устройство поддерживает до восьмидесяти. Вы можете скопировать контролы “Learn to ROM”, “Play from ROM” до нужного вам числа, последовательно увеличивая адреса регистров. При этом шаблон, конечно, получится очень большой, поэтому не стоит создавать контролы сверх необходимости.

Например, в шаблоне есть контрол:
{
“name”: “Play from ROM20”,
“reg_type”: “coil”,
“address”: 5119,
“type”: “pushbutton”
},

После него вы можете создать контрол

{
                "name": "Play from ROM21", 
                "reg_type": "coil", 
                "address": 5120, 
                "type": "pushbutton"
}, 

и так далее…

Спасибо. шаблон скачал и установил
Теперь появилась еще одна проблема .
Модуль работает только с оперативным буфером(запись и воспроизведение с ним работают хорошо)
При записи в банк постоянной памяти и попытке воспроизведения устройство(у меня телевизор) не управляется
Пробовал с разными банками 1,2 ,20 разницы нет . В Веб интерфейсе после записи видно что команда записалась (в поле появляется число 278)
После манипуляций с постоянной памятью перестает работать кнопка записи в оперативный буфер (становится красной ) в Settings написано - Error:w.(Ошибка записи)

Добрый день,
Я могу попросить вас детально описать последовательность действий, которую вы выполняете? Какая модель телевизора? Не удается запомнить ни одну из кнопок?
И скриншот вот этого: “в Settings написано - Error:w.(Ошибка записи)”
Спасибо!

Детально:
для опробования команды записываю команду в оперативный буфер

  1. нажимаю Learn to RAM
  2. нажимаю кнопку на пульте на 3 с (нажимаю power)
  3. проверяю отработку команды через кнопку Play from RAM
    телевизор включается (модель Panasonic TH-R42PV70K)

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

4)нажимаю Learn to ROM1
5)нажимаю кнопку на пульте на 3 с (нажимаю power)
6)в поле ROM1 size появляется значение 278
7)проверяю отработку команды через кнопку Play from ROM1
ни чего не происходит (телевизор не управляется )
хотя ИК светодиод мигает во время подачи команды (проверяли через камеру моб. телефона)

снова пытаюсь проверить команду через оператичный буфер
8) нажимаю Learn to RAM
9) нажимаю кнопку на пульте на 3 с (нажимаю power)
10) проверяю отработку команды через кнопку Play from RAM
телевизор включается (модель Panasonic TH-R42PV70K)

Ошибка Error:w больше не проявилась
в прошлый раз ошибка Error:w топика Learn to RAM проявлялась после записи в постоянную память и после некоторого времени пропадала .

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

Есть ли отличие воспроизведения команды из оперативного и постоянного буфера на MIR?

для анализа команды перевожу ее из постоянной памяти в оперативный буфер
11) нажимаю ROM1 -> RAM на некоторое время (Switch переводится в положение ON)
12)нажимаю ROM1 -> RAM (Switch переводится в положение OFF)
в поле ROM1 size значение меняется на 31

при считывании модбасом получаем первых 100 регистров
0x00ae 0x00ae 0x00ae 0x00ae 0x00ae 0x00ae 0x00ae 0x00ae 0x00ae 0x1709 0x07bf 0x0000 0x0032 0x00ae 0x015d 0x044b 0x07bf 0x1709 0x2001 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000

при считывании модбас клиентом команды из оперативного буфера после успешного опробования (команда 100 % отработала ):

0x015e 0x00ae 0x0032 0x0028 0x002f 0x007c 0x0033 0x0027 0x0030 0x0028 0x002f 0x0025 0x0032 0x0028 0x0030 0x0025 0x0032 0x0025 0x0032 0x0028 0x002f 0x0025 0x0033 0x0025 0x0032 0x0025 0x0032 0x0025 0x0033 0x007c 0x0031 0x0029 0x002e 0x0026 0x0032 0x0025 0x0032 0x0026 0x0031 0x0026 0x0032 0x0025 0x0032 0x0025 0x0032 0x0026 0x0031 0x0026 0x0032 0x007c 0x0032 0x0028 0x0030 0x0028 0x002f 0x0025 0x0032 0x0025 0x0032 0x0026 0x0032 0x0025 0x0032 0x0025 0x0032 0x0025 0x0033 0x007c 0x0032 0x0028 0x002f 0x007d 0x0032 0x007c 0x0033 0x007c 0x0032 0x007c 0x0032 0x0025 0x0032 0x0026 0x0031 0x007d 0x0032 0x0025 0x0032 0x007d 0x0032 0x007d 0x0031 0x007d 0x0032 0x007d 0x0032 0x0025 0x0032 0x007c 0x0032 0x1d75
0x015e 0x00ae 0x0031 0x0026 0x0032 0x007c 0x0032 0x0026 0x0031 0x0026 0x0032 0x0025 0x0032 0x0025 0x0032 0x0026 0x0032 0x0025 0x0032 0x0025 0x0032 0x0025 0x0032 0x0026 0x0032 0x0025 0x0032 0x0025 0x0032 0x007d 0x0032 0x0025 0x0032 0x0025 0x0032 0x0025 0x0033 0x0025 0x0032 0x0025 0x0032 0x0025 0x0032 0x0025 0x0033 0x0025 0x0032 0x0025 0x0031 0x007d 0x0032 0x0026 0x0031 0x0026 0x0031 0x0026 0x0032 0x0025 0x0032 0x0026 0x0031 0x0026 0x0032 0x0025 0x0032 0x0025 0x0032 0x007d 0x0032 0x0025 0x0032 0x007d 0x0032 0x007c 0x0032 0x007d 0x0032 0x007c 0x0032 0x0025 0x0033 0x0025 0x0032 0x007c 0x0033 0x0024 0x0033 0x007c 0x0032 0x007d 0x0032 0x007c 0x0032 0x007d 0x0031 0x0026 0x0031 0x007d 0x0032 0x1d77
0x015e 0x00ad 0x0032 0x0025 0x0032 0x007d 0x0032 0x0025 0x0032 0x0026 0x0031 0x0026 0x0032 0x0025 0x0032 0x0025 0x0032 0x0026 0x0032 0x0025 0x0032 0x0025 0x0032 0x0025 0x0032 0x0026 0x0032 0x0025 0x0032 0x007c 0x0033 0x0025 0x0032 0x0025 0x0032 0x0025 0x0032 0x0025 0x0033 0x0025 0x0032 0x0025 0x0032 0x0025 0x0031 0x0026 0x0032 0x0026 0x0031 0x007d 0x0032 0x0025 0x0032 0x0026 0x0031 0x0026 0x0031 0x0026 0x0032 0x0025 0x0032 0x0026 0x0031 0x0026 0x0032 0x0025 0x0032 0x007d 0x0031 0x0026 0x0032 0x007c 0x0032 0x007d 0x0032 0x007c 0x0032 0x007d 0x0032 0x0025 0x0032 0x0025 0x0032 0x007d 0x0032 0x0025 0x0032 0x007d 0x0032 0x007c 0x0033 0x007c 0x0032 0x007c 0x0032 0x0025 0x0032 0x007d 0x0031 0x1d76
0x015e 0x00ad 0x0032 0x0025 0x0032 0x007d 0x0032 0x0025 0x0032 0x0026 0x0032 0x0025 0x0032 0x0025 0x0032 0x0025 0x0032 0x0026 0x0032 0x0025 0x0032 0x0025 0x0032 0x0025 0x0032 0x0026 0x0032 0x0025 0x0032 0x007c 0x0033 0x0025 0x0032 0x0025 0x0032 0x0025 0x0031 0x0026 0x0032 0x0026 0x0031 0x0026 0x0031 0x0026 0x0032 0x0025 0x0032 0x0026 0x0031 0x007d 0x0032 0x0025 0x0032 0x0026 0x0031 0x0026 0x0031 0x0026 0x0032 0x0025 0x0032 0x0026 0x0031 0x0026 0x0032 0x0025 0x0032 0x007d 0x0032 0x0025 0x0032 0x007c 0x0032 0x007d 0x0032 0x007c 0x0033 0x007c 0x0032 0x0025 0x0032 0x0025 0x0033 0x007c 0x0032 0x0025 0x0032 0x007d 0x0032 0x007c 0x0033 0x007c 0x0031 0x007d 0x0032 0x0025 0x0032 0x007d 0x0032 0x1d76
0x015e 0x00ae 0x0032 0x0025 0x0032 0x007d 0x0031 0x0026 0x0032 0x0025 0x0032 0x0025 0x0032 0x0026 0x0031 0x0026 0x0032 0x0025 0x0032 0x0025 0x0032 0x0026 0x0031 0x0026 0x0032 0x0025 0x0032 0x0025 0x0032 0x0080 0x002f 0x0025 0x0032 0x0025 0x0032 0x0026 0x0032 0x0025 0x0032 0x0025 0x0032 0x0025 0x0033 0x0025 0x0032 0x0025 0x0032 0x0025 0x0032 0x007f 0x0030 0x0025 0x0032 0x0025 0x0033 0x0024 0x0033 0x0025 0x0031 0x0026 0x0031 0x0026 0x0032 0x0025 0x0032 0x0026 0x0031 0x0080 0x002f 0x0025 0x0032 0x007d 0x0032 0x007c 0x0032 0x007d 0x0032 0x007c 0x0032 0x0026 0x0032 0x0025 0x0032 0x007c 0x0032 0x0026 0x0032 0x007c 0x0032 0x007d 0x0032 0x007c 0x0032 0x007d 0x0032 0x0025 0x0032 0x007c 0x0033 0x1d74
0x015f 0x00ad 0x0032 0x0025 0x0032 0x007f 0x0030 0x0025 0x0000

Спасибо за подробное описание – исследуем…

есть результаты ? работа стоит