Registrazione, riproduzione e backup dei comandi IR
Scopo e principio di funzionamento
Il ricetrasmettitore IR di WB-MSW-I e WB-MIR registra i segnali dei telecomandi domestici e li riproduce per comandare climatizzatori, televisori e apparecchi simili. WB-MIR v.2/v.3 e WB-MSW v.3/v.4 supportano circa 80 comandi, a seconda dell’uso della memoria. Ad eccezione di WB-MSW v.3/v.4, i moduli sono destinati al funzionamento a breve distanza, inferiore a 1 m. Posizionare l’emettitore esterno WB-MIR direttamente sul ricevitore IR dell’apparecchio da comandare.
Determinare se il telecomando invia comandi dei singoli tasti o uno stato di funzionamento completo. I telecomandi dei televisori inviano generalmente comandi individuali: accensione, volume, cambio canale o tasti numerici. Registrare i tasti necessari; è possibile registrare anche una breve sequenza, come la selezione del canale 13. I telecomandi dei climatizzatori inviano comunemente l’intera modalità selezionata, a volte con lo stato di accensione inviato separatamente. Impostare la modalità desiderata, puntare il telecomando verso il ricevitore, quindi modificare un parametro, ad esempio la temperatura, per trasmetterla. Registrare stati distinti, ad esempio spento, raffreddamento a 22 °C con ventilatore alla massima velocità, raffreddamento a 20 °C a bassa velocità oppure riscaldamento a 27 °C a velocità media.
La registrazione consuma i cicli di scrittura della ROM. Ogni cella può essere riscritta al massimo 1000 volte.
Registrazione e riproduzione nell’interfaccia web
- Aprire il widget del dispositivo nella scheda Devices.
- Impostare Learn to ROMx / Command x recording su ON.
- Puntare il telecomando verso il ricevitore da breve distanza e premere brevemente una sola volta il tasto desiderato. Se la registrazione non riesce, eliminare i disturbi causati da lampade fluorescenti, schermi di telefoni, monitor o televisori.
- Impostare l’interruttore di registrazione su OFF per terminare.
- Utilizzare Play from ROMx / Play command x per riprodurre il comando.
Se manca un comando nell’interfaccia, abilitarlo nelle impostazioni del dispositivo in IR Commands.



Rappresentazione e memorizzazione del segnale
Un segnale è una sequenza di interi da 0 a 65535. Ciascuno rappresenta la durata di un livello logico alto o basso in unità di 10 µs; il primo valore rappresenta un periodo alto. Il periodo massimo è 655350 µs, circa 0.655 s. Due valori zero consecutivi terminano la sequenza.
Dal firmware 4.22.0, i comandi ROM vengono compressi e decompressi per la riproduzione. La lunghezza massima di un comando è 1000 parole (2000 byte). Durate simili condividono una voce di dizionario; il dizionario è limitato a 64 parole, quindi non sempre è possibile memorizzare dati arbitrari nella ROM. Dopo aver salvato un comando modificato, la sua rilettura può restituire tempi leggermente diversi a causa della compressione. La RAM rimane non compressa e supporta dati arbitrari.
Funzionamento Modbus
Questi indirizzi dei registri si applicano dal firmware 3.2.0. I firmware precedenti utilizzano indirizzi traslati. La comunicazione utilizza Modbus RTU su RS-485. L’indirizzo di fabbrica è stampato sull’etichetta laterale ed è configurabile; le impostazioni seriali sono configurabili dal firmware 3.1.0. Vedere Comunicazione Modbus.
È possibile eseguire una sola operazione su un segnale alla volta. La relativa coil vale 1 durante l’esecuzione e torna a 0 al termine. L’avvio di un’altra operazione IR mentre una è già attiva produce BUSY.
I comandi ROM vengono conservati dopo lo spegnimento e la riaccensione, con un comando per banco di memoria. I firmware fino a 3.7.2 disponevano di sette banchi; dalla versione 4.4.0 erano supportati 32 banchi. Le versioni intermedie tentavano di gestire fino a 80 comandi, ma potevano memorizzarli in modo errato. Il firmware 4.22.0 ripristina il supporto di un massimo di 80 comandi.
Apprendimento di un comando nella ROM
Per il banco i, scrivere 1 nella coil 5300+i, puntare il telecomando, premere brevemente una sola volta il tasto desiderato e scrivere subito 0 nella stessa coil per terminare. Esempio per il banco 1, indirizzo 16, porta /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
Riproduzione di un comando ROM
Scrivere 1 nella coil 5100+i. Rimane a 1 durante la riproduzione e torna automaticamente a 0. Durante la riproduzione non sono disponibili altre operazioni IR.
modbus_client --debug -mrtu -b9600 -s2 -pnone /dev/ttyRS485-1 -a16 -t5 -r5101 1
Modifica di un comando ROM
Scrivere 1 nella coil 5200+i per copiare il comando in registri holding consecutivi a partire da 2000. Due zeri consecutivi ne indicano la fine; un banco vuoto contiene zero in 2000 e 2001. Modificare o caricare i dati usando WRITE_SINGLE_REGISTER o WRITE_MULTI_REGISTERS, mantenendo il terminatore composto da due zeri. Per eliminare il comando, scrivere zero sia in 2000 sia in 2001. Scrivere 0 nella coil 5200+i per terminare e salvare. Nessun’altra operazione IR è disponibile fino al termine della modifica.
Cancellazione di tutti i comandi ROM
Scrivendo 1 nella coil 5000 si eliminano tutti i comandi registrati.
Controllo tramite registri holding
Per master Modbus di terzi, SCADA, server OPC e PLC, preferire i registri holding 5500/5501/5502 agli ampi intervalli di coil. Ogni operazione utilizza un solo indirizzo, evitando l’interrogazione in blocco delle coil che risulta inaffidabile con alcuni master. Questi registri in lettura/scrittura sono disponibili dal firmware 4.18.0 e contengono inizialmente 0, che significa pronto.
- 5500: riproduzione.
- 5501: modifica.
- 5502: apprendimento.
Per operare sul banco i, con numerazione a partire da zero, scrivere i+1. Durante la riproduzione, il registro riporta il numero del comando selezionato, poi torna a 0. Un comando assente restituisce 0xFFFF. Modifica e apprendimento funzionano analogamente: scrivere 0 per terminare oppure il numero del comando successivo per passare a un altro comando.
Registrazione e riproduzione in RAM
Scrivere 1 nella coil 5001 per apprendere un segnale nella RAM; seguire la stessa sequenza di registrazione della ROM e scrivere 0 per arrestarla. Il segnale appare nei registri holding a partire da 2000 e può essere modificato. Scrivere 1 nella coil 5002 per riprodurlo. Questa coil si azzera automaticamente al termine; durante la riproduzione non è disponibile alcun’altra operazione IR. Il contenuto della RAM viene perso quando si rimuove l’alimentazione.
Mappa dei registri IR
| Indirizzo iniziale | Tipo | Numero | Scopo / disponibilità |
|---|---|---|---|
| 5000 | Coil | 1 | Cancellazione di tutti i banchi di comandi IR |
| 5001 | Coil | 1 | Apprendimento nei registri holding della RAM: 2000–2509 prima della versione 4.22.0; 2000–3001 dalle versioni successive |
| 5002 | Coil | 1 | Riproduzione dallo stesso intervallo di registri RAM |
| 5100 | Coil | number_of_banks | Riproduzione dal banco ROM corrispondente |
| 5200 | Coil | number_of_banks | Modifica del comando ROM, copiando dalla ROM alla RAM |
| 5300 | Coil | number_of_banks | Apprendimento nel banco ROM corrispondente |
| 5400 | L'ingresso | number_of_banks | Dimensione del comando IR in byte |
| 5500 | Holding | 1 | Riproduzione dalla ROM; firmware 4.18.0 |
| 5501 | Holding | 1 | Modifica della ROM tramite RAM; firmware 4.18.0 |
| 5502 | Holding | 1 | Apprendimento nella ROM; firmware 4.18.0 |
| 5520 | L'ingresso | 1 | Dimensione del comando RAM in byte; firmware 4.32.0, solo WB-MIR |
La fonte riporta numeri storici di banchi pari a 32 per WB-MSW v.3, 40 per WB-MIR v.2 e 80 per WB-MIR v.3. Dal firmware 4.22.0, number_of_banks è 80. Verificare il firmware installato prima di scegliere un banco.
Backup e ripristino dei banchi di comandi
Gli script della community realizzati da pivcheg, rinominati e impacchettati dal produttore, sono disponibili come ir_backup.tgz. L’archivio contiene read_roms.pl, write_roms.pl, compare_bufs.pl, getbuffer.pl, putbuffer.pl e readme.txt. Trasferirlo al controllore tramite SSH, estrarlo, quindi entrare nella sua directory:
tar -xvzf ir_backup.tgz cd ir_backup
Per impostazione predefinita vengono elaborati solo i banchi 0..4. Per utilizzare dieci banchi, modificare foreach $i (0..4) su foreach $i (0..9) negli script. Adeguare la velocità in baud e la porta seriale nell’invocazione di modbus_client alla propria connessione:
modbus_client --debug -mrtu -b9600 -pnone -o 1200 -s2 /dev/ttyRS485-1 ...
Ad esempio, modificare -b9600 in -b115200 se necessario. Per salvare in ./roms i comandi dell’indirizzo Modbus 22 e poi ripristinarli:
./read_roms.pl ./roms 22 ./write_roms.pl ./roms 22
Gli script arrestano wb-mqtt-serial, elaborano i banchi selezionati e quindi lo riavviano. Lo script di scrittura sostituisce i comandi corrispondenti con quelli dei file.