Grabación, reproducción y copia de seguridad de órdenes IR
Finalidad y principio de funcionamiento
El transceptor IR del WB-MSW-I y del WB-MIR graba señales de mandos a distancia domésticos y las reproduce para controlar aires acondicionados, televisores y equipos similares. WB-MIR v.2/v.3 y WB-MSW v.3/v.4 admiten aproximadamente 80 comandos, según el uso de memoria. A excepción del WB-MSW v.3/v.4, los módulos están destinados al funcionamiento a corta distancia, inferior a 1 m. Coloque el emisor externo del WB-MIR directamente sobre el receptor IR del aparato controlado.
Determine si el mando a distancia envía comandos de teclas individuales o un estado de funcionamiento completo. Los mandos de televisión suelen enviar comandos individuales: encendido, volumen, cambio de canal o teclas numéricas. Grabe los botones que necesite; también puede grabarse una secuencia corta, como seleccionar el canal 13. Los mandos de aire acondicionado suelen enviar el modo seleccionado completo, a veces con el estado de alimentación enviado por separado. Establezca el modo deseado, apunte el mando al receptor y cambie un parámetro, como la temperatura, para transmitirlo. Grabe estados separados, como apagado, refrigeración a 22 °C con el ventilador a velocidad máxima, refrigeración a 20 °C a velocidad baja o calefacción a 27 °C a velocidad media.
La grabación consume la vida útil de la ROM. Cada celda se puede reescribir como máximo 1000 veces.
Grabación y reproducción en la interfaz web
- Abra el widget del dispositivo en la pestaña Devices.
- Establezca Learn to ROMx / Command x recording en ON.
- Apunte el mando a distancia hacia el receptor desde cerca y pulse brevemente una vez el botón deseado. Si falla la grabación, elimine las interferencias de la iluminación fluorescente, las pantallas de teléfonos, los monitores o los televisores.
- Establezca el interruptor de grabación en OFF para finalizar.
- Utilice Play from ROMx / Play command x para reproducir la orden.
Si falta un control, actívelo en los ajustes del dispositivo, en IR Commands.



Representación y almacenamiento de señales
Una señal es una secuencia de enteros de 0 a 65535. Cada uno es la duración de un nivel lógico alto o bajo en unidades de 10 µs; el primer valor representa un período alto. El período máximo es de 655350 µs, aproximadamente 0.655 s. Dos valores cero consecutivos finalizan la secuencia.
Desde el firmware 4.22.0, los comandos ROM se comprimen y se descomprimen para reproducirlos. La longitud máxima del comando es de 1000 palabras (2000 bytes). Las duraciones similares comparten una entrada de diccionario; el diccionario está limitado a 64 palabras, por lo que no siempre pueden almacenarse datos arbitrarios en ROM. Después de guardar un comando editado, al leerlo pueden obtenerse valores de temporización ligeramente distintos debido a la compresión. La RAM permanece sin comprimir y admite datos arbitrarios.
Funcionamiento Modbus
Estas direcciones de registro se aplican a partir del firmware 3.2.0. El firmware anterior utiliza direcciones desplazadas. La comunicación utiliza Modbus RTU sobre RS-485. La dirección de fábrica está impresa en la etiqueta lateral y es configurable; los ajustes serie son configurables a partir del firmware 3.1.0. Consulte Comunicación Modbus.
Solo puede ejecutarse una operación sobre una señal a la vez. Su bobina vale 1 mientras está activa y vuelve a 0 al completarse. Iniciar otra operación IR mientras hay una activa produce BUSY.
Los comandos ROM se conservan al apagar y encender, con un comando por banco de memoria. El firmware hasta 3.7.2 disponía de siete bancos; a partir de 4.4.0 se admitieron 32 bancos. Las versiones intermedias intentaban admitir hasta 80 comandos, pero podían almacenarlos incorrectamente. El firmware 4.22.0 restablece la compatibilidad con hasta 80 comandos.
Aprender un comando en ROM
Para el banco i, escriba 1 en la bobina 5300+i, apunte el mando, pulse brevemente una vez la tecla deseada y, a continuación, escriba inmediatamente 0 en la misma bobina para finalizar. Ejemplo para el banco 1, dirección 16, puerto /dev/ttyRS485-1:
modbus_client --debug -mrtu -b9600 -s2 -pnone /dev/ttyRS485-1 -a16 -t5 -r5301 1 # Aim the remote and press its button once. modbus_client --debug -mrtu -b9600 -s2 -pnone /dev/ttyRS485-1 -a16 -t5 -r5301 0
Reproducir un comando de ROM
Escriba 1 en la bobina 5100+i. Permanece en 1 durante la reproducción y vuelve automáticamente a 0. No se pueden realizar otras operaciones IR durante la reproducción.
modbus_client --debug -mrtu -b9600 -s2 -pnone /dev/ttyRS485-1 -a16 -t5 -r5101 1
Editar un comando de ROM
Escriba 1 en la bobina 5200+i para copiar el comando en registros de mantenimiento consecutivos a partir de 2000. Dos ceros consecutivos marcan su final; un banco vacío tiene ceros en 2000 y 2001. Edite o cargue datos mediante WRITE_SINGLE_REGISTER o WRITE_MULTI_REGISTERS, conservando el terminador de dos ceros. Para eliminar ese comando, escriba cero tanto en 2000 como en 2001. Escriba 0 en la bobina 5200+i para finalizar y guardar. No hay ninguna otra operación IR disponible hasta que termine la edición.
Borrar todos los comandos ROM
Escribir 1 en la bobina 5000 elimina todas las órdenes grabadas.
Control mediante registros de mantenimiento
Para maestros Modbus de terceros, SCADA, servidores OPC y PLC, dé preferencia a los registros de mantenimiento 5500/5501/5502 frente a grandes rangos de bobinas. Cada operación utiliza una única dirección, lo que evita consultas masivas de bobinas poco fiables en algunos maestros. Estos registros de lectura/escritura están disponibles desde el firmware 4.18.0 e inicialmente contienen 0, que significa listo.
- 5500: reproducción.
- 5501: edición.
- 5502: aprendizaje.
Para operar sobre el banco i, numerado desde cero, escriba i+1. Durante la reproducción, el registro indica el número de comando seleccionado y después vuelve a 0. Un comando inexistente devuelve 0xFFFF. La edición y el aprendizaje funcionan de forma similar: escriba 0 para terminar o escriba el número del siguiente comando para pasar a otro comando.
Grabación y reproducción en RAM
Escriba 1 en la bobina 5001 para aprender una señal en RAM; siga la misma secuencia de grabación que para ROM y escriba 0 para detenerla. La señal aparece en los registros de mantenimiento a partir de 2000 y puede editarse. Escriba 1 en la bobina 5002 para reproducirla. Esta bobina se pone a cero automáticamente al finalizar; no se puede realizar ninguna otra operación IR durante la reproducción. El contenido de la RAM se pierde al retirar la alimentación.
Mapa de registros IR
| Dirección inicial | Tipo | Cantidad | Finalidad / disponibilidad |
|---|---|---|---|
| 5000 | Coil | 1 | Borrar todos los bancos de órdenes IR |
| 5001 | Coil | 1 | Aprendizaje en registros de mantenimiento RAM: 2000–2509 antes de 4.22.0; 2000–3001 a partir de esa versión |
| 5002 | Coil | 1 | Reproducir desde el mismo rango de registros RAM |
| 5100 | Coil | number_of_banks | Reproducir desde el banco ROM correspondiente |
| 5200 | Coil | number_of_banks | Editar un comando ROM, copiando de ROM a RAM |
| 5300 | Coil | number_of_banks | Aprender en el banco ROM correspondiente |
| 5400 | Entrada | number_of_banks | Tamaño del comando IR en bytes |
| 5500 | Holding | 1 | Reproducir desde ROM; firmware 4.18.0 |
| 5501 | Holding | 1 | Editar ROM mediante RAM; firmware 4.18.0 |
| 5502 | Holding | 1 | Aprender en ROM; firmware 4.18.0 |
| 5520 | Entrada | 1 | Tamaño del comando RAM en bytes; firmware 4.32.0, solo WB-MIR |
La fuente indica cantidades históricas de bancos de 32 para WB-MSW v.3, 40 para WB-MIR v.2 y 80 para WB-MIR v.3. Desde el firmware 4.22.0, number_of_banks es 80. Compruebe el firmware instalado antes de elegir un banco.
Copia de seguridad y restauración de bancos de órdenes
Los scripts de la comunidad creados por pivcheg, renombrados y empaquetados por el fabricante, están disponibles como ir_backup.tgz. El archivo contiene read_roms.pl, write_roms.pl, compare_bufs.pl, getbuffer.pl, putbuffer.pl y readme.txt. Transfiéralo al controlador mediante SSH, extráigalo y entre en su directorio:
tar -xvzf ir_backup.tgz cd ir_backup
De forma predeterminada solo se procesan los bancos 0..4. Para utilizar diez bancos, cambie foreach $i (0..4) en foreach $i (0..9) en los scripts. Ajuste la velocidad en baudios y el puerto serie en la llamada a modbus_client para que coincidan con su conexión:
modbus_client --debug -mrtu -b9600 -pnone -o 1200 -s2 /dev/ttyRS485-1 ...
Por ejemplo, cambie -b9600 por -b115200 cuando sea necesario. Para guardar las órdenes de la dirección Modbus 22 en ./roms y restaurarlas después:
./read_roms.pl ./roms 22 ./write_roms.pl ./roms 22
Los scripts detienen wb-mqtt-serial, procesan los bancos seleccionados y después lo reinician. El script de escritura sustituye los comandos correspondientes por los de los archivos.