WB-MSx Consumer IR Manual: различия между версиями

21 464 байта добавлено ,  10 месяцев назад
поправил
(поправил)
 
(не показано 128 промежуточных версий 11 участников)
Строка 1: Строка 1:
{{DISPLAYTITLE:Инструкция по работе с ИК-приёмопередатчиком в устройствах WB-MS/WB-MSW/WB-MSW2}}
<languages/>
<translate>
{{DISPLAYTITLE: Инструкция по работе с ИК-приёмопередатчиком в устройствах WB-MSW, WB-MIR }}


== Управление ==
== Назначение == <!--T:1-->
Инфракрасный приёмопередатчик, установленный в устройствах WB-MSW модификации I и WB-MIR, предназначен для записи сигналов с ИК-пультов ДУ бытовых устройств и дальнейшего управления бытовой техникой: кондиционерами, телевизорами и т.д. Модули WB-MIR v.2 и WB-MSW v.3 (WB-MSW v.4) поддерживают около 80 ИК-команд (зависит от объема занимаемой в памяти).


Управление '''IR-приемопередатчиком''' осуществляется через регистры флагов Modbus (см. [[#Карта регистров флагов (Coils)|карту регистров флагов]]). Устройство может хранить <code>number_of_banks</code> банков команд (это значение может варьироваться в зависимости от сборки). Всего 3 типа операций можно выполнить с IR-приемопередатчиком: чтение/запись, воспроизведение и запись с IR-приёмника. В одно и то же время можно оперировать лишь над одним банком и выполнять только одну функцию. Т.е. среди всех регистров флагов, относящихся к IR-приемопередатчику, только один регистр может быть установлен в единицу. Попытка записать единицу в регистры флагов IR при уже имеющейся единице приведёт к ошибке <code>BUSY</code>. Содержимое банка, с которым в данное время проводится оперирование, отображается в регистры хранения по адресу 2000 (см. [[#Карта регистров хранения (Holding Registers)|карту регистров хранения]]). Значение каждого регистра - продолжительность периода логических нуля или единицы в квантах по 10 микросекунд. Отсюда максимальная длительность одного периода <code>2^16 * 10 мкс = 655360 мск = 0,655 с</code>. Самый первый период соответствует логической единице. Конец последовательности маркируется двумя периодами продолжительностью 0.
'''Внимание! Все модули, кроме WB-MSW v.3 (WB-MSW v.4), обеспечивают управление возможно только с небольшого расстояния (< 1 метра).'''
== Принцип работы == <!--T:2-->
=== Описание ===
Записываете управляющий сигнал с пульта дистанционного управления устройством в память модуля и потом воспроизводите его.


Для того, чтобы прочитать содержимое банка <code>i</code> и/или внести изменение в него, необходимо записать единицу в регистр флагов по адресу  <code>1000 + i</code>. Далее, если необходимо прочитать содержимое банка, нужно прочитать регистры хранения, начиная с адреса 2000. Конец последовательности определяется маркером из двух последовательных нулей, как это было сказано выше. Если банк пуст, в первых двух регистрах (2000 и 2001) будут храниться нули. Для внесения изменений в последовательность нужно записать данные в интересующие регистры с помощью команд <code>WRITE_SINGLE_REGISTER</code> и <code>WRITE_MULTI_REGISTERS</code>. В конце изменённой последовательности всё также должен быть маркер конца последовательности. Для удаления содержимого банка необходимо записать в первые два регистра нули (2000 и 2001). Для фиксации изменений и просто завершения операции чтения банка <code>i</code> необходимо записать ноль в регистр флагов по адресу  <code>1000 + i</code>.
Вы можете записать сигнал в одну из двух видов памяти:
* Постоянную — записанные команды хранятся в ROM-буферах, которые записываются в ПЗУ модуля и сохраняются при отключении питания.
* Оперативную — это RAM-буфер модуля, данные теряются при отключении питания.


Для того, чтобы воспроизвести команду, хранящуюся в банке <code>i</code>, необходимо записать единицу в регистр флагов по адресу  <code> i</code>. В случае отсутствия команды в банке <code>i</code> будет возвращена ошибка. Пока идёт воспроизведение, регистр флага по адресу  <code> i</code> будет установлен в единицу. Никакие другие операции с IR-приемопередатчиком по Modbus не будут доступны.
Помните, что при использовании постоянной памяти вы расходуете ресурс ПЗУ, каждую ячейку можно перезаписать не более 1000 раз.


Для того, чтобы записать команду с пульта дистанционного управления (ПДУ) в банк <code>i</code>, необходимо записать единицу в регистр флагов по адресу  <code>2000 + i</code>. После чего направьте ПДУ на IR-приёмник и нажмите кнопку на пульте. После того, как отпустите кнопку, необходимо записать ноль в регистр флагов по адресу  <code>2000 + i</code>. Остановка записи может прекратиться самостоятельно, если буфер команды будет заполнен. Тогда регистр флагов по адресу  <code>2000 + i</code> самостоятельно установится в ноль. После записи команды ПДУ в банк <code>i</code>, можно читать, изменять и воспроизводить эту команду, как это описано выше.
Подробнее о записи и воспроизведении сигналов читайте в разделах [[#Постоянный режим|Постоянный режим]] и [[#Оперативный режим|Оперативный режим]].


Для того, чтобы записать команду с пульта дистанционного управления (ПДУ) в регистры хранения без записи в банк необходимо установить регистр флага по адресу <code>5001</code> в единицу. Далее действия происходят как описано выше. После прекращения записи в регистрах хранения по адресу 2000 и дальше будет храниться команда ПДУ, конец которой будет маркирован двумя последовательными нулями.
=== Управление телевизором ===
{{Wbincludes:WB-MSW v.3 IR TV Control}}


Для того, чтобы воспроизвести команду, хранящуюся в регистрах хранения, необходимо записать единицу в регистр флагов по адресу  <code>5002</code>. В случае отсутствия маркера конца команды будет возвращена ошибка. Пока идёт воспроизведение, регистр флага по адресу  <code>5002</code> будет установлен в единицу. Никакие другие операции с IR-приемопередатчиком по Modbus не будут доступны.
=== Управление климатической техникой ===
{{Wbincludes:WB-MSW v.3 IR AC Control}}


Для того, чтобы очистить все банки команд, достаточно записать единицу в регистр флагов по адресу <code>5000</code>.
=== Управление другой техникой по ИК ===
{{Wbincludes:WB-MSW v.3 IR Other Control}}


Банки команд нумеруются с нуля (0).
==Способ представления и хранения сигнала== <!--T:6-->
[[File:Buffer_mir.png |400px|thumb|right| Пример содержимого оперативного буфера WB-MIR]]


== Регистры, связанные с ИК ==
<!--T:7-->
Сигнал хранится в памяти устройства виде последовательности натуральных чисел (каждое от 0 до 65535), где каждое число - продолжительность логического 0 или 1 в сигнале в квантах по 10 микросекунд. Следовательно, максимальная продолжительность каждого нуля или единицы должна быть не более <code>65535 * 10 мкс = 655350 мкс = 0,655 секунд</code>. Первое число последовательности — длительность первой логической единицы. Конец последовательности маркируется двумя периодами продолжительностью 0.


=== Карта регистров хранения (Holding Registers)===
<!--T:8-->
В оперативном режиме IR-сигнал (только один) находится в оперативной памяти устройства. Он записывается туда с пульта управления при подаче соответствующей Modbus-команды или путем записи значений в соответствующие регистры с внешнего устройства по Modbus (например, с контроллера [[Wiren Board]]), также IR-сигнал может быть скопирован из Flash-ПЗУ. IR-сигнал может быть воспроизведён из оперативной памяти и затем перезаписан; ресурс ПЗУ при этом не расходуется. При отключении питания сигнал в оперативной памяти не сохраняется.


В процессе наполнения.
<!--T:9-->
=== Сжатие ИК-команд ===
Начиная с версии прошивки 4.22.0 в WB-MIR v.2 и WB-MSW v.3 последовательности команд сжимаются по специальному алгоритму, чтобы обеспечить более высокую плотность хранения. Перед воспроизведением последовательности разархивируются. Максимальная длина команды увеличена до 1000 символов (2000 байт). Сжатие данных использует "словарь": длительности сигнала, которые близки друг к другу, заносятся в словарь как один элемент. Команда хранит индексы на элементы словаря. Максимальная длина словаря - 64 слова, то есть в ROM не получится записать произвольные данные. Также следует учитывать, что при редактировании банка команд записанные данные после сохранения в ROM будут сжаты и будут отличаться от оригинала при чтении из банка. При этом остается возможность записывать и воспроизводить произвольные данные из RAM - там алгоритм сжатия не применяется.


== Управление модулем по Modbus == <!--T:10-->
<!--T:11-->
'''Внимание!''' Номера используемых Modbus регистров менялись, начиная с версии прошивки '''3.2.0'''. В инструкции указаны новые номера регистров. Если вы пользуетесь устройством со старой прошивкой, общий принцип остаётся прежним, но номера регистров сдвигаются; как именно — смотрите в [[#Карта регистров флагов и входов (Coils и Inputs)|Карта регистров флагов и входов (Coils и Inputs)]]. Полное описание регистров ИК-устройств можно найти в этой статье в разделе [[#Карта регистров|Карта регистров]].
=== Обмен данными === <!--T:12-->
На физическом уровне модуль подключается через интерфейс [[RS-485]]. Для управления модулем используется протокол Modbus RTU. В устройствах Wirenboard данные Modbus передаются по линиям связи RS-485. Подробнее смотрите страницу [[Протокол Modbus]]. Modbus-адрес модуля задается на заводе и нанесен на наклейке на его боковой стороне. Адрес может быть изменен программно.
<!--T:13-->
В устройствах с версией прошивки '''3.1.0''' и позднее также можно изменить настройки параметров обмена данными — смотрите [[#Карта_регистров|таблицу регистров Modbus]].
<!--T:14-->
Управление ИК-приёмопередатчиком производится через регистры флагов Modbus; полный список можно найти в описании карты регистров. Есть 3 типа операций с сигналами:
* запись сигнала в память с пульта ДУ,
* воспроизведение сигнала из памяти,
* редактирование сигнала в оперативной памяти.
В каждый момент времени можно выполнять только одну операцию только над одним сигналом. Так как во время выполнения любой операции в один из регистров флагов ставится 1, а после завершения операции туда же ставится 0, в каждый момент времени среди всех регистров флагов, относящихся к ИК-приёмопередатчику, только один регистр может быть установлен в единицу. Попытка записи 1 в регистры флагов, связанных с ИК, при уже имеющейся единице приведёт к ошибке <code>BUSY</code>.
=== Особенности при работе из Codesys ===
Читайте статью [[Codesys_IR_manual | Работа с ИК-командами в Codesys]].
== Постоянный режим == <!--T:15-->
В постоянном режиме ИК-команды сохраняются в памяти устройства и доступны после перезагрузки по питанию. Каждая команда хранится в отдельном "банке" памяти. Количество банков памяти зависит отпрошивки устройства. До прошивки 3.7.2 включительно устройства имели 7 банков памяти ИК-команд. Начиная с версии 4.4.0 поддерживается 32 банка. Промежуточные версии позволяли записывать до 80 команд, но в ряде случаев делали это некорректно. Начиная с версии прошивки 4.22.0 снова поддерживается до 80 команд.
==== Запись сигнала в постоянную память с пульта ДУ ==== <!--T:16-->
'''Примечение:''' Подробно о работе в режиме командной строки рассказано в разделе [[#Управление модулем из командной строки|Управление модулем из командной строки]].
<!--T:17-->
Чтобы записать сигнал под номером <code>i</code> с пульта ДУ в память, запишите 1 в регистр флагов по адресу <code>5300 + i</code>. Затем направьте пульт ДУ на ИК-приёмник и нажмите коротко один раз кнопку на пульте. Сразу после этого, завершите запись сигнала, записав 0 в регистр флагов по адресу <code>5300 + i</code>.
<syntaxhighlight lang="bash">
#Начинаем запись сигнала с номером 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
</syntaxhighlight>
==== Воспроизведение сигнала из постоянной памяти ==== <!--T:18-->
Чтобы воспроизвести сигнал под номером <code>i</code> из памяти, запишите 1 в регистр флага по адресу <code>5100 + i</code>. Если сигнал под номером <code>i</code> не был записан ранее, будет возвращена ошибка. Пока идёт воспроизведение сигнала, регистр флага по адресу <code>5100 + i</code> будет установлен в 1, а затем сам установится в 0. Пока идёт воспроизведение сигнала, никакие другие операции с ИК-приёмопередатчиком по Modbus не будут доступны.
<syntaxhighlight lang="bash">
#Отдаём команду воспроизвести сигнал с номером 1. Устройство подключено к порту /dev/ttyRS485-1 и имеет Modbus-адрес 16
root@wirenboard:~# modbus_client --debug -mrtu -b9600 -s2 -pnone /dev/ttyRS485-1 -a16 -t5 -r5101 1
</syntaxhighlight>
==== Редактирование сигнала в постоянной памяти ====
Чтобы отредактировать сигнал под номером <code>i</code> или записать его по Modbus (без пульта ДУ), запишите 1 в регистр флага по адресу <code>5200 + i</code>. После этого сигнал в виде последовательности натуральных чисел (смотрите рисунок "Пример содержимого оперативного буфера WB-MIR") будет записан в подряд идущие регистры хранения, начиная с регистра <code>2000</code>. В конце последовательности будут два подряд идущих регистра хранения, содержащих 0. Если сигнал под номером <code>i</code> не был записан ранее, в регистрах хранения <code>2000</code> и <code>2001</code> будут находиться 0. Для внесения изменений в последовательность (в том числе для записи команды по Modbus) нужно записать правильную последовательность в данные регистры хранения с помощью команд <code>WRITE_SINGLE_REGISTER</code> и <code>WRITE_MULTI_REGISTERS</code>. В конце изменённой последовательности всё также должен быть маркер конца последовательности - два подряд идущих регистра хранения, содержащих 0. Чтобы удалить сигнал, запишите в первые два регистра хранения (<code>2000</code> и <code>2001</code>) 0. После окончания редактирования запишите 0 в регистр флагов по адресу <code>5200 + i</code>. До тех пор пока в регистре флагов по адресу <code>5200 + i</code> не будет стоять 0, никакие другие операции, в том числе и над другими сигналами, не будут доступны.
==== Удаление всех сигналов из постоянной памяти ==== <!--T:19-->
Чтобы удалить все записанные сигналы, запишите 1 в регистр флагов по адресу <code>5000</code>.
==== Работа с сигналами через holding регистры ====
Начиная с версии прошивки 4.18.0 доступны holding регистры для работы с сигналами:
* 5500 — воспроизведение
* 5501 — редактирование
* 5502 — запись
Регистры доступны как для чтения, так и для записи. Изначально в регистрах записан 0, что говорит о готовности к работе.
Для воспроизведения сигнала с номером <code>i</code> в регистр 5500 нужно записать число <code>i + 1</code>. Пока идет воспроизведение, при чтении регистра будет возвращаться номер воспроизводимого сигнала. После окончания воспроизведения регистр будет сброшен в 0. Если запрошенного сигнала не существует — в регистр будет записан код ошибки <code>0xFFFF</code>.
Редактирование и запись сигналов производятся аналогичным образом. Для того, чтобы завершить редактирование (запись) сигнала, в регистр нужно записать 0 или номер следующего сигнала для редактирования (записи).
== Оперативный режим == <!--T:20-->
=== Запись сигнала в оперативную память с пульта ДУ ===
Чтобы записать сигнал (только один) с пульта в оперативную память, не помещая при этом в ПЗУ - запишите 1 в регистр флага по адресу <code>5001</code>. Далее действия происходят так же, как описано выше для записи сигнала в ПЗУ. После прекращения записи в регистрах хранения по адресу <code>2000</code> и дальше будет храниться сигнал в виде последовательности чисел. Эту последовательность можно редактировать, как описано выше. Внимание: содержимое этих регистров хранения не сохраняется при отключении питания устройства!
=== Воспроизведение сигнала из оперативной памяти ===
Чтобы воспроизвести сигнал из оперативной памяти, запишите 1 в регистр флага по адресу <code>5002</code>. Будет воспроизведён сигнал, записанный в регистрах хранения, начиная с <code>2000</code>. В случае отсутствия маркера конца команды будет возвращена ошибка. Пока идёт воспроизведение сигнала, регистр флага по адресу <code>5002</code> будет установлен в 1, а затем сам установится в 0. Пока идёт воспроизведение сигнала, никакие другие операции с ИК-приёмопередатчиком по Modbus не будут доступны.
<!--T:21-->
Управление ИК-приёмопередатчиком производится через регистры флагов Modbus (полный список можно найти в [[#Карта регистров флагов и входов (Coils и Inputs)|#Карта регистров флагов и входов (Coils и Inputs)]]). Есть 3 типа операций с сигналами:
* запись сигнала в память с пульта ДУ,
* воспроизведение сигнала из памяти,
* редактирование сигнала в памяти.
* в следующих версиях предполагается реализовать непосредственную запись из оперативного буфера в ПЗУ.
<!--T:22-->
Как и в случае работы с регистрами постоянного хранения, в каждый момент времени можно выполнять только одну операцию только над одним сигналом. Так как во время выполнения любой операции в один из регистров флагов ставится 1, а после завершения операции туда же ставится 0, в каждый момент времени среди всех регистров флагов, относящихся к ИК-приёмопередатчику, только один регистр может быть установлен в единицу. Попытка записи 1 в регистры флагов, связанных с ИК, при уже имеющейся единице приведёт к ошибке <code>BUSY</code>.
=== Удаление всех сигналов из постоянной памяти === <!--T:23-->
Чтобы удалить все записанные сигналы, запишите 1 в регистр флагов по адресу <code>5000</code>.
== Чтение/запись банков команд ==
Пользователь [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]]
=== Подготовка ===
Содержимое архива:
* read_roms.pl — скрипт сохранения ИК-команд в файлы
* write_roms.pl — скрипт записи ИК-команд из файлов в регистры датчика
* compare_bufs.pl, getbuffer.pl, putbuffer.pl — вспомогательные скрипты, запускаются автоматически.
Перед тем, как приступить к чтению и записи команд:
# Зайдите в консоль контроллера по [[SSH]].
# Перейдите в папку <code>/home</code>
# Загрузите скрипт на контроллер и распакуйте его:
#:<syntaxhighlight lang="console">
# 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
</syntaxhighlight>
# Перейдите в папку с распакованными файлами:
#: <syntaxhighlight lang="bash">
cd ir_backup
</syntaxhighlight>
Настройки скриптов '''read_roms.pl''' и '''write_roms.pl''':
* Скрипт читает/записывает только первые пять банков памяти: 0 — 4, если вам нужно считать/записать больше банков, то измените в скрипте значения <code>0..4</code>.
* Скорость подключения и serial-порту можно указать в строке <code>modbus_client…</code>.
=== Чтение команд в файлы ===
Для чтения ИК-команд используется скрипт <code>read_roms.pl</code>.
Формат запуска скрипта:
<syntaxhighlight lang="bash">
./read_roms.pl directory modbus-address
</syntaxhighlight>
Пример, в котором ИК-команды из устройства с адресом <code>22</code> сохраняются в папку <code>./roms</code>:
<syntaxhighlight lang="console">
# ./read_roms.pl ./roms 22
Stoping wb-mqtt-serial
->1<-->2<-->3<-->4<-->5<-
Starting wb-mqtt-serial
</syntaxhighlight>
=== Запись команд из файлов ===
Для записи ИК-команд используется скрипт <code>write_roms.pl</code>.
Формат запуска скрипта:
<syntaxhighlight lang="bash">
./write_roms.pl directory modbus-address
</syntaxhighlight>
Пример, в котором ИК-команды из папки <code>./roms</code> записываются в устройство с адресом <code>22</code>:
<syntaxhighlight lang="console">
# ./write_roms.pl ./roms/ 22
Stoping wb-mqtt-serial
->1<-->2<-->3<-->4<-->5<-
Starting wb-mqtt-serial
</syntaxhighlight>
<!-- Временно скрыл, возникли проблемы при проверке. Багрепорт в Битрикс 42664.
== Новый способ сохранения ИК-команд из устройств ==
Также появился новый способ сохранения ИК-команд, написанный нашими инженерами.
Архив с файлами скриптов доступен по ссылке: [[Media:Backup-ir-signal_tool.tgz | Backup-ir-signal_tool.tgz]]
=== Подготовка ===
Поставить
<syntaxhighlight lang="bash">
apt install python-wb-mcu-fw-updater
</syntaxhighlight>
Содержимое архива:
* read_signal.py — скрипт сохранения ИК-команд в файл
* write_signal.py — скрипт записи ИК-команд из файла в регистры датчика
* ir.py — набор инструкций и функций для работы вышеуказанных скриптов, запускается автоматически.
Перед тем, как приступить к чтению и записи команд:
# Зайдите в консоль контроллера по [[SSH]].
# Перейдите в папку <code>/home</code>
# Загрузите скрипт на контроллер и распакуйте его:
#:<syntaxhighlight lang="console">
# wget -qO- https://wirenboard.com/wiki/images/7/7f/Backup-ir-signal_tool.tgz | tar -xvz  -C ./
ir.py
read_signal.py
write_signal.py
</syntaxhighlight>
# Также необходимо остановить сервис [[wb-mqtt-serial]] для получения доступа к устройствам:
#:<syntaxhighlight lang="console">
# systemctl stop wb-mqtt-serial
</syntaxhighlight>
# После окончания работ со скриптами, сервис нужно обратно включить:
#:<syntaxhighlight lang="console">
# systemctl start wb-mqtt-serial
</syntaxhighlight>
=== Немного о механизме работы скрипта ===
* Скрипт чтения автоматически создаст папку <code>/ir_backup</code>, в которую будет сохранять файлы с ИК-командами
* Название файлов с ИК-командами формируется по следующему принципу:
** <code>серийныйНомерУстройства_дата_время.txt</code>, пример - <code>4270625043_11172021_12:01:54.txt</code>
* Во время исполнения скрипта, контроллер издаст звуковой сигнал столько раз, сколько банков устройства было занято ИК-командами. Это касается как скрипта чтения, так и записи.
=== Чтение команд в файл ===
Для чтения ИК-команд используется скрипт <code>read_signal.py</code>.
Формат запуска скрипта:
<syntaxhighlight lang="bash">
python read_signal.py -a [address]
</syntaxhighlight>
Где [address] нужно заменить на желаемый адрес устройства. По умолчанию скрипт использует 2-й порт RS485, при необходимости, это можно изменить добавив к исходной команде ключ:
<syntaxhighlight lang="bash">
--port /dev/ttyRS485-n
</syntaxhighlight>
Где n - номер нужного порта RS485.
Пример команды запуска для устройства с адресом 84, находящемся на 2-м порту RS485:
<syntaxhighlight lang="console">
# python read_signal.py -a 84 --port /dev/ttyRS485-2
</syntaxhighlight>
=== Запись команд из файлов ===
Для записи ИК-команд используется скрипт <code>write_signal.py</code>.
Формат запуска скрипта:
<syntaxhighlight lang="bash">
python write_signal.py -a [address] ir_backup/[filename]
</syntaxhighlight>
Где [address] нужно заменить на желаемый адрес устройства. А [filename] на название файла, полученного при чтении ИК-команд из устройства. По умолчанию скрипт использует 2-й порт RS485, при необходимости, это можно изменить добавив к исходной команде ключ:
<syntaxhighlight lang="bash">
--port /dev/ttyRS485-n
</syntaxhighlight>
Где n - номер нужного порта RS485.
Пример команды запуска для устройства с адресом 84, находящемся на 2-м порту RS485:
<syntaxhighlight lang="console">
# python write_signal.py -a 84 --port /dev/ttyRS485-2 ir_backup/4270625043_11172021_12\:01\:54.txt
</syntaxhighlight>
-->
== Карта регистров == <!--T:24-->
=== Карта регистров флагов и входов (Coils и Inputs) === <!--T:27-->
<!--T:28-->
{|  border="1" class="wikitable" style="text-align:center"
{|  border="1" class="wikitable" style="text-align:center"
!Регистр / адрес
!Начальный адрес || Тип || Количество || Назначение || В модификациях
!тип
!чтение/запись
!значение по умолчанию
!формат
!назначение
!В модификациях
|-
 
| 0 || input || R || 0x7FFF ||°C × 10 (signed)||Температура с встроенного датчика
|T
|-
|1|| input || R || 0xFFFF ||<blockquote>%RH × 10 (signed)</blockquote>||Относительная влажность с встроенного датчика
|H
|-
|2
|input
|R
|<nowiki>-</nowiki>
|lux
|Освещённость с встроенного датчика
|L
|-
|3
|input
|R
|<nowiki>-</nowiki>
|dB
|Уровень шума
|S
|-
|4
|input
|R
|<nowiki>-</nowiki>
|<nowiki>-</nowiki>
|<nowiki>-</nowiki>
|
|-
|-
|5
| 5000 || coil || 1 || style="text-align:left" | Очистка всех банков ИК-команд || I
|input
|R
|<nowiki>-</nowiki>
|<nowiki>-</nowiki>
|<nowiki>-</nowiki>
|
|-
|-
|6
| 5001 || coil || 1 || style="text-align:left" | Запись ИК-команды с ИК-приёмника в Modbus регистры хранения (2000-2509) (RAM), без сохранения в банк команд || I
|input
|R
|0x7FFF
|°C × 16 (signed)
|Температура с внешнего датчика
|D
|-
|-
|7
| 5002 || coil || 1 || style="text-align:left" | Воспроизведение ИК-команды из Modbus регистров хранения (2000-2509) (RAM) || I
|input
|R
|0x7FFF
|°C × 16 (signed)
|Температура с внешнего датчика
|D
|-
|-
|||||||||||
| 5100 (в прошивке 3.1.0 и ранее - 0) || coil || number_of_banks || style="text-align:left" | Воспроизведение ИК-команды из соответствующего банка ROM (Play) || I
|
|-
|-
|||||||||||
| 5200 (в прошивке 3.1.0 и ранее - 1000) || coil || number_of_banks|| style="text-align:left" | Редактирование ИК-команд (ROM) с копированием в RAM (ROM -> RAM) || I
|
|-
|-
|||||||||||
| 5300 (в прошивке 3.1.0 и ранее - 2000)|| coil || number_of_banks || style="text-align:left" | Запись в банк ИК-команд с использованием IR-приёмника  (Learn)|| I
|
|-
|-
|90||holding||RW||20 (200 ms)||× 10 ms||Время усреднения освещённости
| 5400 || input || number_of_banks || style="text-align:left" | Размер данных IR-команды в байтах || I
|<blockquote>L</blockquote>
|-
|-
|91||holding||RW||20 (200 ms)||× 10 ms
| 5500 || holding || 1 || style="text-align:left" | Воспроизведение ИК-команды из соответствующего банка ROM (Play) || FW 4.18.0
||Время усреднения шума
|S
|-
|-
|100
| 5501 || holding || 1 || style="text-align:left" | Редактирование ИК-команд (ROM) с копированием в RAM (ROM -> RAM) || FW 4.18.0
||input
||R||||raw_val * 16||Сырое усреднённое значение с АЦП микрофона
|S
|-
|-
| 120 (0x78) || holding || RW || 0 ||  отличное от 0 || запись в регистр вызывает перезагрузку МК без сохранения состояния
| 5502 || holding || 1 || style="text-align:left" | Запись в банк ИК-команд с использованием IR-приёмника (Learn) || FW 4.18.0
|все
|-
| 121 (0x79) || input || R || - ||  mV || текущее напряжение питания модуля
|все
|-
| 128 (0x80) || holding || RW || 1 || || Modbus-адрес устройства
|все
|-
| 200-206 || input || R || {'W','B','M','S',0,0} ||  || сигнатура
|все
|-
| 220-241 || input || R || ||  __date__ __time__||  дата сборки прошивки
|все
|-
| 250-269 || input || R || ||  строка, null-terminated ||  версия прошивки
|все
|-
| 270-271 || input || R || ||  32-bit unsigned int ||  уникальный идентификатор (S/N)
|все
|-
| 2000-2509 || holding || RW || || || Буфер периодов IR-приемопередатчика
|I
|-
|-
|}
|}


===Карта регистров флагов (Coils)===
<!--T:29-->
 
Значения number_of_banks для различных устройств:
* WB-MSW v.3 - 32
* WB-MIR v.2 - 40


{|  border="1" class="wikitable" style="text-align:center"
Начиная с версии прошивки 4.22.0 number_of_banks = 80
!Начальный адрес || Количество || Назначение
!В модификациях
|-
| 0 || number_of_banks || style="text-align:left" |Воспроизведение ИК-команды из соответствующего банка
|I
|-
| 1000 || number_of_banks|| style="text-align:left" |Чтение и запись в банки команд IR
|I
|-
| 2000 || number_of_banks || style="text-align:left" |Запись в банк команд IR использую IR-приёмник
|I
|-
| 5000 || 1 || style="text-align:left" |Очистка всех банков ИК-команд
|I
|-
| 5001 || 1 || style="text-align:left" |Запись ИК-команды с ИК-приёмника в Modbus регистры хранения (2000-2509), без сохранения в банк команд
|I
|-
| 5002 || 1 || style="text-align:left" |Воспроизведение ИК-команды из Modbus регистров хранения (2000-2509)
|I
|-


|}
</translate>