WB-MSx Consumer IR Manual: различия между версиями
(не показано 30 промежуточных версий 3 участников) | |||
Строка 3: | Строка 3: | ||
{{DISPLAYTITLE: Инструкция по работе с ИК-приёмопередатчиком в устройствах WB-MSW, WB-MIR }} | {{DISPLAYTITLE: Инструкция по работе с ИК-приёмопередатчиком в устройствах WB-MSW, WB-MIR }} | ||
= Назначение = <!--T:1--> | |||
Инфракрасный приёмопередатчик, установленный в устройствах WB-MSW модификации I и WB-MIR, предназначен для записи сигналов с ИК-пультов ДУ бытовых устройств и дальнейшего управления бытовой техникой: кондиционерами, телевизорами и т.д. Модули WB-MIR v.2 и WB-MSW v.3 | Инфракрасный приёмопередатчик, установленный в устройствах WB-MSW модификации I и WB-MIR, предназначен для записи сигналов с ИК-пультов ДУ бытовых устройств и дальнейшего управления бытовой техникой: кондиционерами, телевизорами и т.д. Модули WB-MIR v.2 и WB-MSW v.3 поддерживают около 80 ИК-команд (зависит от объема занимаемой в памяти). | ||
'''Внимание! Все модули, кроме WB-MSW v.3 | '''Внимание! Все модули, кроме WB-MSW v.3, обеспечивают управление возможно только с небольшого расстояния (< 1 метра).''' | ||
== Принцип работы == <!--T:2--> | == Принцип работы == <!--T:2--> | ||
=== Описание === | === Описание === | ||
Строка 18: | Строка 18: | ||
Подробнее о записи и воспроизведении сигналов читайте в разделах [[#Постоянный режим|Постоянный режим]] и [[#Оперативный режим|Оперативный режим]]. | Подробнее о записи и воспроизведении сигналов читайте в разделах [[#Постоянный режим|Постоянный режим]] и [[#Оперативный режим|Оперативный режим]]. | ||
=== Как работают пульты ДУ === | |||
Пульты дистанционного управления устройствами обычно работают в одном из двух режимов: | |||
* одиночный — пульт передаёт на устройство код нажатой клавиши; | |||
* пакетный — пульт передаёт на устройство набор команд, который соответствует выбранному на пульте режиму. Притом, состояние устройства (включено или выключено) может передаваться отдельно. | |||
Обычно пульт телевизора работает в одиночном режиме, а пульт климатической техники (кондиционера, сплит-системы или тепловой завесы) — в пакетном, но могут быть исключения. | |||
=== Управление телевизором === | === Управление телевизором === | ||
Чтобы управлять телевизором, достаточно записать сигналы используемых кнопок пульта и вы сможете полностью управлять устройством. | |||
В итоге у вас получится набор команд, которые соответствуют клавишам на пульте ДУ: | |||
* Включить / выключить | |||
* Прибавить громкость | |||
* Убавить громкость | |||
* Листать каналы вперёд | |||
* Листать канала назад | |||
* Нажата кнопка 1 | |||
Также можно записывать целые режимы, например, включить 13 программу. | |||
=== Управление | === Управление кондиционером или тепловой завесой === | ||
Чтобы управлять кондиционером, нужно сперва выставить нужный режим на пульте, а потом записать его в модуль. | |||
В итоге получится набор готовых режимов: | |||
* Выключен | |||
* Включён | |||
* вентилятор на максимум, охлаждаем до 20 °C | |||
* вентилятор на малый, охлаждаем до 20 °C | |||
* вентилятор на средний, нагреваем до 27 °C | |||
==Способ представления и хранения сигнала== <!--T:6--> | ==Способ представления и хранения сигнала== <!--T:6--> | ||
Строка 38: | Строка 58: | ||
<!--T:9--> | <!--T:9--> | ||
В последних версиях прошивок модулей WB-MIR v.2 и WB-MSW v.3 последовательности команд сжимаются по специальному алгоритму, чтобы обеспечить более высокую плотность хранения. Перед воспроизведением последовательности разархивируются. | |||
== Управление модулем по Modbus == <!--T:10--> | == Управление модулем по Modbus == <!--T:10--> | ||
Строка 58: | Строка 77: | ||
* редактирование сигнала в оперативной памяти. | * редактирование сигнала в оперативной памяти. | ||
В каждый момент времени можно выполнять только одну операцию только над одним сигналом. Так как во время выполнения любой операции в один из регистров флагов ставится 1, а после завершения операции туда же ставится 0, в каждый момент времени среди всех регистров флагов, относящихся к ИК-приёмопередатчику, только один регистр может быть установлен в единицу. Попытка записи 1 в регистры флагов, связанных с ИК, при уже имеющейся единице приведёт к ошибке <code>BUSY</code>. | В каждый момент времени можно выполнять только одну операцию только над одним сигналом. Так как во время выполнения любой операции в один из регистров флагов ставится 1, а после завершения операции туда же ставится 0, в каждый момент времени среди всех регистров флагов, относящихся к ИК-приёмопередатчику, только один регистр может быть установлен в единицу. Попытка записи 1 в регистры флагов, связанных с ИК, при уже имеющейся единице приведёт к ошибке <code>BUSY</code>. | ||
== Постоянный режим == <!--T:15--> | == Постоянный режим == <!--T:15--> | ||
В постоянном режиме ИК-команды сохраняются в памяти устройства и доступны после перезагрузки по питанию. Каждая команда хранится в отдельном "банке" памяти. Количество банков памяти зависит отпрошивки устройства. До прошивки 3.7.2 включительно устройства имели 7 банков памяти ИК-команд. Начиная с версии 4.4.0 поддерживается 32 банка. Промежуточные версии позволяли записывать до 80 команд, но в ряде случаев делали это некорректно | В постоянном режиме ИК-команды сохраняются в памяти устройства и доступны после перезагрузки по питанию. Каждая команда хранится в отдельном "банке" памяти. Количество банков памяти зависит отпрошивки устройства. До прошивки 3.7.2 включительно устройства имели 7 банков памяти ИК-команд. Начиная с версии 4.4.0 поддерживается 32 банка. Промежуточные версии позволяли записывать до 80 команд, но в ряде случаев делали это некорректно. | ||
==== Запись сигнала в постоянную память с пульта ДУ ==== <!--T:16--> | ==== Запись сигнала в постоянную память с пульта ДУ ==== <!--T:16--> | ||
Строка 70: | Строка 85: | ||
<!--T:17--> | <!--T:17--> | ||
Чтобы записать сигнал под номером <code>i</code> с пульта ДУ в память, запишите 1 в регистр флагов по адресу <code>5300 + i</code>. Затем направьте пульт ДУ на ИК-приёмник и нажмите | Чтобы записать сигнал под номером <code>i</code> с пульта ДУ в память, запишите 1 в регистр флагов по адресу <code>5300 + i</code>. Затем направьте пульт ДУ на ИК-приёмник и нажмите кнопку на пульте. После отпускания кнопки, завершите запись сигнала, записав 0 в регистр флагов по адресу <code>5300 + i</code>. | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
#Начинаем запись сигнала с номером 1. Устройство подключено к порту /dev/ttyRS485-1 и имеет Modbus-адрес 16 | #Начинаем запись сигнала с номером 1. Устройство подключено к порту /dev/ttyRS485-1 и имеет Modbus-адрес 16 | ||
Строка 80: | Строка 95: | ||
==== Воспроизведение сигнала из постоянной памяти ==== <!--T:18--> | ==== Воспроизведение сигнала из постоянной памяти ==== <!--T:18--> | ||
Чтобы воспроизвести сигнал под номером <code>i</code> из памяти, запишите 1 в регистр флага по адресу <code>5100 + i</code>. Пока идёт воспроизведение сигнала, регистр флага по адресу <code>5100 + i</code> будет установлен в 1, а затем сам установится в 0. Пока идёт воспроизведение сигнала, никакие другие операции с ИК-приёмопередатчиком по Modbus не будут доступны. | Чтобы воспроизвести сигнал под номером <code>i</code> из памяти, запишите 1 в регистр флага по адресу <code>5100 + i</code>. Если сигнал под номером <code>i</code> не был записан ранее, будет возвращена ошибка. Пока идёт воспроизведение сигнала, регистр флага по адресу <code>5100 + i</code> будет установлен в 1, а затем сам установится в 0. Пока идёт воспроизведение сигнала, никакие другие операции с ИК-приёмопередатчиком по Modbus не будут доступны. | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
#Отдаём команду воспроизвести сигнал с номером 1. Устройство подключено к порту /dev/ttyRS485-1 и имеет Modbus-адрес 16 | #Отдаём команду воспроизвести сигнал с номером 1. Устройство подключено к порту /dev/ttyRS485-1 и имеет Modbus-адрес 16 | ||
Строка 91: | Строка 106: | ||
==== Удаление всех сигналов из постоянной памяти ==== <!--T:19--> | ==== Удаление всех сигналов из постоянной памяти ==== <!--T:19--> | ||
Чтобы удалить все записанные сигналы, запишите 1 в регистр флагов по адресу <code>5000</code>. | Чтобы удалить все записанные сигналы, запишите 1 в регистр флагов по адресу <code>5000</code>. | ||
== Оперативный режим == <!--T:20--> | == Оперативный режим == <!--T:20--> | ||
Строка 107: | Строка 111: | ||
Чтобы записать сигнал (только один) с пульта в оперативную память, не помещая при этом в ПЗУ - запишите 1 в регистр флага по адресу <code>5001</code>. Далее действия происходят так же, как описано выше для записи сигнала в ПЗУ. После прекращения записи в регистрах хранения по адресу <code>2000</code> и дальше будет храниться сигнал в виде последовательности чисел. Эту последовательность можно редактировать, как описано выше. Внимание: содержимое этих регистров хранения не сохраняется при отключении питания устройства! | Чтобы записать сигнал (только один) с пульта в оперативную память, не помещая при этом в ПЗУ - запишите 1 в регистр флага по адресу <code>5001</code>. Далее действия происходят так же, как описано выше для записи сигнала в ПЗУ. После прекращения записи в регистрах хранения по адресу <code>2000</code> и дальше будет храниться сигнал в виде последовательности чисел. Эту последовательность можно редактировать, как описано выше. Внимание: содержимое этих регистров хранения не сохраняется при отключении питания устройства! | ||
=== Воспроизведение сигнала из оперативной памяти === | === Воспроизведение сигнала из оперативной памяти === | ||
Чтобы воспроизвести сигнал из оперативной памяти, запишите 1 в регистр флага по адресу <code>5002</code>. Будет воспроизведён сигнал, записанный в регистрах хранения, начиная с <code>2000</code>. Пока идёт воспроизведение сигнала, регистр флага по адресу <code>5002</code> будет установлен в 1, а затем сам установится в 0. Пока идёт воспроизведение сигнала, никакие другие операции с ИК-приёмопередатчиком по Modbus не будут доступны. | Чтобы воспроизвести сигнал из оперативной памяти, запишите 1 в регистр флага по адресу <code>5002</code>. Будет воспроизведён сигнал, записанный в регистрах хранения, начиная с <code>2000</code>. В случае отсутствия маркера конца команды будет возвращена ошибка. Пока идёт воспроизведение сигнала, регистр флага по адресу <code>5002</code> будет установлен в 1, а затем сам установится в 0. Пока идёт воспроизведение сигнала, никакие другие операции с ИК-приёмопередатчиком по Modbus не будут доступны. | ||
<!--T:21--> | <!--T:21--> | ||
Строка 124: | Строка 128: | ||
== Чтение/запись банков команд == | == Чтение/запись банков команд == | ||
Пользователь [https://support.wirenboard.com/u/pivcheg pivcheg] написал скрипты чтения и записи IR-команд, которые [https://support.wirenboard.com/t/wb-mir-wb-msw-skript-dlya-sohraneniya-i-zapisi-komand-ik-ir/7918/16 | Пользователь [https://support.wirenboard.com/u/pivcheg pivcheg] написал скрипты чтения и записи IR-команд, которые [https://support.wirenboard.com/t/wb-mir-wb-msw-skript-dlya-sohraneniya-i-zapisi-komand-ik-ir/7918/16 выложил на форуме]. | ||
Мы немного поправили им имена и опубликовали в архиве: [[Media:ir_backup.tgz | ir_backup.tgz]] | Мы немного поправили им имена и опубликовали в архиве: [[Media:ir_backup.tgz | ir_backup.tgz]] | ||
Строка 189: | Строка 193: | ||
Starting wb-mqtt-serial | Starting wb-mqtt-serial | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Карта регистров == <!--T:24--> | == Карта регистров == <!--T:24--> | ||
Строка 293: | Строка 216: | ||
|- | |- | ||
| 5400 || input || number_of_banks || style="text-align:left" | Размер данных IR-команды в байтах || I | | 5400 || input || number_of_banks || style="text-align:left" | Размер данных IR-команды в байтах || I | ||
|- | |- | ||
|} | |} | ||
<!--T:29--> | <!--T:29--> | ||
В последних версиях прошивок значение number_of_banks равняется 80, то есть, например, регистры размера команд имеют значения от 5400 до 5479. | |||
</translate> | </translate> |
Версия 13:51, 2 ноября 2021
Назначение
Инфракрасный приёмопередатчик, установленный в устройствах WB-MSW модификации I и WB-MIR, предназначен для записи сигналов с ИК-пультов ДУ бытовых устройств и дальнейшего управления бытовой техникой: кондиционерами, телевизорами и т.д. Модули WB-MIR v.2 и WB-MSW v.3 поддерживают около 80 ИК-команд (зависит от объема занимаемой в памяти).
Внимание! Все модули, кроме WB-MSW v.3, обеспечивают управление возможно только с небольшого расстояния (< 1 метра).
Принцип работы
Описание
Записываете управляющий сигнал с пульта дистанционного управления устройством в память модуля и потом воспроизводите его.
Вы можете записать сигнал в одну из двух видов памяти:
- Постоянную — записанные команды хранятся в ROM-буферах, которые записываются в ПЗУ модуля и сохраняются при отключении питания.
- Оперативную — это RAM-буфер модуля, данные теряются при отключении питания.
Помните, что при использовании постоянной памяти вы расходуете ресурс ПЗУ, каждую ячейку можно перезаписать не более 1000 раз.
Подробнее о записи и воспроизведении сигналов читайте в разделах Постоянный режим и Оперативный режим.
Как работают пульты ДУ
Пульты дистанционного управления устройствами обычно работают в одном из двух режимов:
- одиночный — пульт передаёт на устройство код нажатой клавиши;
- пакетный — пульт передаёт на устройство набор команд, который соответствует выбранному на пульте режиму. Притом, состояние устройства (включено или выключено) может передаваться отдельно.
Обычно пульт телевизора работает в одиночном режиме, а пульт климатической техники (кондиционера, сплит-системы или тепловой завесы) — в пакетном, но могут быть исключения.
Управление телевизором
Чтобы управлять телевизором, достаточно записать сигналы используемых кнопок пульта и вы сможете полностью управлять устройством.
В итоге у вас получится набор команд, которые соответствуют клавишам на пульте ДУ:
- Включить / выключить
- Прибавить громкость
- Убавить громкость
- Листать каналы вперёд
- Листать канала назад
- Нажата кнопка 1
Также можно записывать целые режимы, например, включить 13 программу.
Управление кондиционером или тепловой завесой
Чтобы управлять кондиционером, нужно сперва выставить нужный режим на пульте, а потом записать его в модуль.
В итоге получится набор готовых режимов:
- Выключен
- Включён
- вентилятор на максимум, охлаждаем до 20 °C
- вентилятор на малый, охлаждаем до 20 °C
- вентилятор на средний, нагреваем до 27 °C
Способ представления и хранения сигнала
Сигнал хранится в памяти устройства виде последовательности натуральных чисел (каждое от 0 до 65535), где каждое число - продолжительность логического 0 или 1 в сигнале в квантах по 10 микросекунд. Следовательно, максимальная продолжительность каждого нуля или единицы должна быть не более 65535 * 10 мкс = 655350 мкс = 0,655 секунд
. Первое число последовательности — длительность первой логической единицы. Конец последовательности маркируется двумя периодами продолжительностью 0.
В оперативном режиме IR-сигнал (только один) находится в оперативной памяти устройства. Он записывается туда с пульта управления при подаче соответствующей Modbus-команды или путем записи значений в соответствующие регистры с внешнего устройства по Modbus (например, с контроллера Wiren Board), также IR-сигнал может быть скопирован из Flash-ПЗУ. IR-сигнал может быть воспроизведён из оперативной памяти и затем перезаписан; ресурс ПЗУ при этом не расходуется. При отключении питания сигнал в оперативной памяти не сохраняется.
В последних версиях прошивок модулей WB-MIR v.2 и WB-MSW v.3 последовательности команд сжимаются по специальному алгоритму, чтобы обеспечить более высокую плотность хранения. Перед воспроизведением последовательности разархивируются.
Управление модулем по Modbus
Внимание! Номера используемых Modbus регистров менялись, начиная с версии прошивки 3.2.0. В инструкции указаны новые номера регистров. Если вы пользуетесь устройством со старой прошивкой, общий принцип остаётся прежним, но номера регистров сдвигаются; как именно — смотрите в Карта регистров флагов и входов (Coils и Inputs). Полное описание регистров ИК-устройств можно найти в этой статье в разделе Карта регистров.
Обмен данными
На физическом уровне модуль подключается через интерфейс RS-485. Для управления модулем используется протокол Modbus RTU. В устройствах Wirenboard данные Modbus передаются по линиям связи RS-485. Подробнее смотрите страницу Протокол Modbus. Modbus-адрес модуля задается на заводе и нанесен на наклейке на его боковой стороне. Адрес может быть изменен программно.
В устройствах с версией прошивки 3.1.0 и позднее также можно изменить настройки параметров обмена данными — смотрите таблицу регистров Modbus.
Управление ИК-приёмопередатчиком производится через регистры флагов Modbus; полный список можно найти в описании карты регистров. Есть 3 типа операций с сигналами:
- запись сигнала в память с пульта ДУ,
- воспроизведение сигнала из памяти,
- редактирование сигнала в оперативной памяти.
В каждый момент времени можно выполнять только одну операцию только над одним сигналом. Так как во время выполнения любой операции в один из регистров флагов ставится 1, а после завершения операции туда же ставится 0, в каждый момент времени среди всех регистров флагов, относящихся к ИК-приёмопередатчику, только один регистр может быть установлен в единицу. Попытка записи 1 в регистры флагов, связанных с ИК, при уже имеющейся единице приведёт к ошибке BUSY
.
Постоянный режим
В постоянном режиме ИК-команды сохраняются в памяти устройства и доступны после перезагрузки по питанию. Каждая команда хранится в отдельном "банке" памяти. Количество банков памяти зависит отпрошивки устройства. До прошивки 3.7.2 включительно устройства имели 7 банков памяти ИК-команд. Начиная с версии 4.4.0 поддерживается 32 банка. Промежуточные версии позволяли записывать до 80 команд, но в ряде случаев делали это некорректно.
Запись сигнала в постоянную память с пульта ДУ
Примечение: Подробно о работе в режиме командной строки рассказано в разделе Управление модулем из командной строки.
Чтобы записать сигнал под номером i
с пульта ДУ в память, запишите 1 в регистр флагов по адресу 5300 + i
. Затем направьте пульт ДУ на ИК-приёмник и нажмите кнопку на пульте. После отпускания кнопки, завершите запись сигнала, записав 0 в регистр флагов по адресу 5300 + i
.
#Начинаем запись сигнала с номером 1. Устройство подключено к порту /dev/ttyRS485-1 и имеет Modbus-адрес 16
root@wirenboard:~# modbus_client --debug -mrtu -b9600 -s2 -pnone /dev/ttyRS485-1 -a16 -t5 -r5301 1
#Направляем пульт на окно приемника и нажимаем кнопку на пульте ДУ
root@wirenboard:~# modbus_client --debug -mrtu -b9600 -s2 -pnone /dev/ttyRS485-1 -a16 -t5 -r5301 0
#Завершаем запись сигнала с номером 1
Воспроизведение сигнала из постоянной памяти
Чтобы воспроизвести сигнал под номером i
из памяти, запишите 1 в регистр флага по адресу 5100 + i
. Если сигнал под номером i
не был записан ранее, будет возвращена ошибка. Пока идёт воспроизведение сигнала, регистр флага по адресу 5100 + i
будет установлен в 1, а затем сам установится в 0. Пока идёт воспроизведение сигнала, никакие другие операции с ИК-приёмопередатчиком по Modbus не будут доступны.
#Отдаём команду воспроизвести сигнал с номером 1. Устройство подключено к порту /dev/ttyRS485-1 и имеет Modbus-адрес 16
root@wirenboard:~# modbus_client --debug -mrtu -b9600 -s2 -pnone /dev/ttyRS485-1 -a16 -t5 -r5101 1
Редактирование сигнала в постоянной памяти
Чтобы отредактировать сигнал под номером i
или записать его по Modbus (без пульта ДУ), запишите 1 в регистр флага по адресу 5200 + i
. После этого сигнал в виде последовательности натуральных чисел (смотрите рисунок "Пример содержимого оперативного буфера WB-MIR") будет записан в подряд идущие регистры хранения, начиная с регистра 2000
. В конце последовательности будут два подряд идущих регистра хранения, содержащих 0. Если сигнал под номером i
не был записан ранее, в регистрах хранения 2000
и 2001
будут находиться 0. Для внесения изменений в последовательность (в том числе для записи команды по Modbus) нужно записать правильную последовательность в данные регистры хранения с помощью команд WRITE_SINGLE_REGISTER
и WRITE_MULTI_REGISTERS
. В конце изменённой последовательности всё также должен быть маркер конца последовательности - два подряд идущих регистра хранения, содержащих 0. Чтобы удалить сигнал, запишите в первые два регистра хранения (2000
и 2001
) 0. После окончания редактирования запишите 0 в регистр флагов по адресу 5200 + i
. До тех пор пока в регистре флагов по адресу 5200 + i
не будет стоять 0, никакие другие операции, в том числе и над другими сигналами, не будут доступны.
Удаление всех сигналов из постоянной памяти
Чтобы удалить все записанные сигналы, запишите 1 в регистр флагов по адресу 5000
.
Оперативный режим
Запись сигнала в оперативную память с пульта ДУ
Чтобы записать сигнал (только один) с пульта в оперативную память, не помещая при этом в ПЗУ - запишите 1 в регистр флага по адресу 5001
. Далее действия происходят так же, как описано выше для записи сигнала в ПЗУ. После прекращения записи в регистрах хранения по адресу 2000
и дальше будет храниться сигнал в виде последовательности чисел. Эту последовательность можно редактировать, как описано выше. Внимание: содержимое этих регистров хранения не сохраняется при отключении питания устройства!
Воспроизведение сигнала из оперативной памяти
Чтобы воспроизвести сигнал из оперативной памяти, запишите 1 в регистр флага по адресу 5002
. Будет воспроизведён сигнал, записанный в регистрах хранения, начиная с 2000
. В случае отсутствия маркера конца команды будет возвращена ошибка. Пока идёт воспроизведение сигнала, регистр флага по адресу 5002
будет установлен в 1, а затем сам установится в 0. Пока идёт воспроизведение сигнала, никакие другие операции с ИК-приёмопередатчиком по Modbus не будут доступны.
Управление ИК-приёмопередатчиком производится через регистры флагов Modbus (полный список можно найти в #Карта регистров флагов и входов (Coils и Inputs)). Есть 3 типа операций с сигналами:
- запись сигнала в память с пульта ДУ,
- воспроизведение сигнала из памяти,
- редактирование сигнала в памяти.
- в следующих версиях предполагается реализовать непосредственную запись из оперативного буфера в ПЗУ.
Как и в случае работы с регистрами постоянного хранения, в каждый момент времени можно выполнять только одну операцию только над одним сигналом. Так как во время выполнения любой операции в один из регистров флагов ставится 1, а после завершения операции туда же ставится 0, в каждый момент времени среди всех регистров флагов, относящихся к ИК-приёмопередатчику, только один регистр может быть установлен в единицу. Попытка записи 1 в регистры флагов, связанных с ИК, при уже имеющейся единице приведёт к ошибке BUSY
.
Удаление всех сигналов из постоянной памяти
Чтобы удалить все записанные сигналы, запишите 1 в регистр флагов по адресу 5000
.
Чтение/запись банков команд
Пользователь pivcheg написал скрипты чтения и записи IR-команд, которые выложил на форуме.
Мы немного поправили им имена и опубликовали в архиве: ir_backup.tgz
Подготовка
Содержимое архива:
- read_roms.pl — скрипт сохранения ИК-команд в файлы
- write_roms.pl — скрипт записи ИК-команд из файлов в регистры датчика
- compare_bufs.pl, getbuffer.pl, putbuffer.pl — вспомогательные скрипты, запускаются автоматически.
Перед тем, как приступить к чтению и записи команд:
- Зайдите в консоль контроллера по SSH.
- Перейдите в папку
/home
- Загрузите скрипт на контроллер и распакуйте его:
# wget -qO- https://wirenboard.com/wiki/images/1/19/Ir_backup.tgz | tar -xvz -C ./ ir_backup/ ir_backup/getbuffer.pl ir_backup/write_roms.pl ir_backup/putbuffer.pl ir_backup/read_roms.pl ir_backup/readme.txt ir_backup/compare_bufs.pl
- Перейдите в папку с распакованными файлами:
cd ir_backup
Настройки скриптов read_roms.pl и write_roms.pl:
- Скрипт читает/записывает только первые пять банков памяти: 0 — 4, если вам нужно считать/записать больше банков, то измените в скрипте значения
0..4
. - Скорость подключения и serial-порту можно указать в строке
modbus_client…
.
Чтение команд в файлы
Для чтения ИК-команд используется скрипт read_roms.pl
.
Формат запуска скрипта:
./read_roms.pl directory modbus-address
Пример, в котором ИК-команды из устройства с адресом 22
сохраняются в папку ./roms
:
# ./read_roms.pl ./roms 22
Stoping wb-mqtt-serial
->1<-->2<-->3<-->4<-->5<-
Starting wb-mqtt-serial
Запись команд из файлов
Для записи ИК-команд используется скрипт write_roms.pl
.
Формат запуска скрипта:
./write_roms.pl directory modbus-address
Пример, в котором ИК-команды из папки ./roms
записываются в устройство с адресом 22
:
# ./write_roms.pl ./roms/ 22
Stoping wb-mqtt-serial
->1<-->2<-->3<-->4<-->5<-
Starting wb-mqtt-serial
Карта регистров
Карта регистров флагов и входов (Coils и Inputs)
Начальный адрес | Тип | Количество | Назначение | В модификациях |
---|---|---|---|---|
5000 | coil | 1 | Очистка всех банков ИК-команд | I |
5001 | coil | 1 | Запись ИК-команды с ИК-приёмника в Modbus регистры хранения (2000-2509) (RAM), без сохранения в банк команд | I |
5002 | coil | 1 | Воспроизведение ИК-команды из Modbus регистров хранения (2000-2509) (RAM) | I |
5100 (в прошивке 3.1.0 и ранее - 0) | coil | number_of_banks | Воспроизведение ИК-команды из соответствующего банка ROM (Play) | I |
5200 (в прошивке 3.1.0 и ранее - 1000) | coil | number_of_banks | Редактирование ИК-команд (ROM) с копированием в RAM (ROM -> RAM) | I |
5300 (в прошивке 3.1.0 и ранее - 2000) | coil | number_of_banks | Запись в банк ИК-команд с использованием IR-приёмника (Learn) | I |
5400 | input | number_of_banks | Размер данных IR-команды в байтах | I |
В последних версиях прошивок значение number_of_banks равняется 80, то есть, например, регистры размера команд имеют значения от 5400 до 5479.