Wiren BoardDocumentation
Documentation · Français

Enregistrement, lecture et sauvegarde des commandes IR

révision 100027

Présentation et principe de fonctionnement

L’émetteur-récepteur IR des WB-MSW-I et WB-MIR enregistre les signaux des télécommandes domestiques et les reproduit pour commander des climatiseurs, téléviseurs et équipements similaires. Les WB-MIR v.2/v.3 et WB-MSW v.3/v.4 prennent en charge environ 80 commandes, selon l’utilisation de la mémoire. À l’exception des WB-MSW v.3/v.4, les modules sont destinés à une utilisation à courte portée, inférieure à 1 m. Placez l’émetteur externe du WB-MIR directement sur le récepteur IR de l’appareil commandé.

Déterminez si la télécommande envoie des commandes de touches individuelles ou un état de fonctionnement complet. Les télécommandes de téléviseur envoient généralement des commandes individuelles : alimentation, volume, changement de chaîne ou touches numériques. Enregistrez les touches nécessaires ; une courte séquence comme la sélection de la chaîne 13 peut également être enregistrée. Les télécommandes de climatiseur envoient généralement le mode complet sélectionné, avec parfois un état d’alimentation envoyé séparément. Réglez le mode souhaité, dirigez la télécommande vers le récepteur, puis modifiez un paramètre comme la température pour le transmettre. Enregistrez des états distincts, par exemple arrêt, refroidissement à 22 °C à vitesse maximale du ventilateur, refroidissement à 20 °C à faible vitesse ou chauffage à 27 °C à vitesse moyenne.

L’enregistrement consomme l’endurance de la ROM. Chaque cellule peut être réécrite au maximum 1000 fois.

Enregistrement et lecture dans l’interface web

  1. Ouvrez le widget de l’appareil dans l’onglet Devices.
  2. Réglez Learn to ROMx / Command x recording sur ON.
  3. Dirigez la télécommande vers le récepteur à courte distance et appuyez brièvement une fois sur la touche souhaitée. Si l’enregistrement échoue, éliminez les interférences dues aux éclairages fluorescents, écrans de téléphone, moniteurs ou téléviseurs.
  4. Réglez le commutateur d’enregistrement sur OFF pour terminer.
  5. Utilisez Play from ROMx / Play command x pour reproduire la commande.

Si une commande est absente, activez-la dans les paramètres de l’appareil sous IR Commands.

Commandes IR du WB-MSW
Commandes IR du WB-MSW
Commandes IR du WB-MIR
Commandes IR du WB-MIR
Exemple de tampon RAM du WB-MIR
Exemple de tampon RAM du WB-MIR

Représentation et stockage du signal

Un signal est une suite d’entiers de 0 à 65535. Chacun représente la durée d’un niveau logique haut ou bas en unités de 10 µs ; la première valeur représente une période à l’état haut. La période maximale est de 655350 µs, soit environ 0.655 s. Deux valeurs nulles consécutives terminent la séquence.

À partir du micrologiciel 4.22.0, les commandes en ROM sont compressées puis décompressées pour la lecture. La longueur maximale d’une commande est de 1000 mots (2000 octets). Les durées similaires partagent une entrée de dictionnaire ; ce dictionnaire est limité à 64 mots, si bien que des données arbitraires ne peuvent pas toujours être stockées en ROM. Après l’enregistrement d’une commande modifiée, sa relecture peut renvoyer des durées légèrement différentes à cause de la compression. La RAM reste non compressée et accepte des données arbitraires.

Fonctionnement Modbus

Ces adresses de registres s’appliquent à partir du micrologiciel 3.2.0. Les versions antérieures utilisent des adresses décalées. La communication utilise Modbus RTU sur RS-485. L’adresse d’usine est imprimée sur l’étiquette latérale et peut être configurée ; les paramètres série sont configurables à partir du micrologiciel 3.1.0. Voir communication Modbus.

Une seule opération sur un seul signal peut s’exécuter à la fois. Sa bobine vaut 1 pendant l’opération puis revient à 0 à la fin. Le lancement d’une autre opération IR pendant qu’une opération est active produit BUSY.

Les commandes en ROM sont conservées après une coupure d’alimentation, avec une commande par banque mémoire. Les micrologiciels jusqu’à 3.7.2 avaient sept banques ; à partir de 4.4.0, 32 banques étaient prises en charge. Les versions intermédiaires tentaient de gérer jusqu’à 80 commandes, mais pouvaient les stocker incorrectement. Le micrologiciel 4.22.0 rétablit la prise en charge de 80 commandes au maximum.

Apprentissage d’une commande en ROM

Pour la banque i, écrivez 1 dans la bobine 5300+i, dirigez la télécommande, appuyez brièvement une fois sur la touche souhaitée, puis écrivez immédiatement 0 dans la même bobine pour terminer. Exemple pour la banque 1, l’adresse 16 et le port /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

Lecture d’une commande en ROM

Écrivez 1 dans la bobine 5100+i. Elle reste à 1 pendant la lecture puis revient automatiquement à 0. Les autres opérations IR ne sont pas disponibles pendant la lecture.

modbus_client --debug -mrtu -b9600 -s2 -pnone /dev/ttyRS485-1 -a16 -t5 -r5101 1

Modification d’une commande en ROM

Écrivez 1 dans la bobine 5200+i pour copier la commande dans les registres de maintien consécutifs à partir de 2000. Deux zéros consécutifs marquent sa fin ; une banque vide contient des zéros dans 2000 et 2001. Modifiez ou chargez les données avec WRITE_SINGLE_REGISTER ou WRITE_MULTI_REGISTERS, en conservant les deux zéros de fin. Pour supprimer cette commande, écrivez zéro dans 2000 et 2001. Écrivez 0 dans la bobine 5200+i pour terminer et enregistrer. Aucune autre opération IR n’est disponible avant la fin de la modification.

Effacement de toutes les commandes en ROM

Écrire 1 dans la bobine 5000 supprime toutes les commandes enregistrées.

Commande par registres de maintien

Pour les maîtres Modbus tiers, SCADA, serveurs OPC et automates, préférez les registres de maintien 5500/5501/5502 aux grandes plages de bobines. Chaque opération utilise une seule adresse, évitant l’interrogation groupée peu fiable des bobines dans certains maîtres. Ces registres en lecture/écriture sont disponibles à partir du micrologiciel 4.18.0 et contiennent initialement 0, ce qui signifie prêt.

  • 5500 : lecture.
  • 5501 : modification.
  • 5502 : apprentissage.

Pour agir sur la banque i indexée à partir de zéro, écrivez i+1. Pendant la lecture, le registre indique le numéro de la commande sélectionnée, puis revient à 0. Une commande absente renvoie 0xFFFF. La modification et l’apprentissage fonctionnent de la même manière : écrivez 0 pour terminer, ou le numéro de la commande suivante pour passer à une autre commande.

Enregistrement et lecture en RAM

Écrivez 1 dans la bobine 5001 pour apprendre un signal en RAM ; suivez la même séquence d’enregistrement que pour la ROM et écrivez 0 pour arrêter. Le signal apparaît dans les registres de maintien à partir de 2000 et peut être modifié. Écrivez 1 dans la bobine 5002 pour le lire. Cette bobine revient automatiquement à zéro à la fin ; aucune autre opération IR n’est disponible pendant la lecture. Le contenu de la RAM est perdu à la coupure d’alimentation.

Table des registres IR

Adresse de débutTypeNombreFonction / disponibilité
5000Coil1Effacer toutes les banques de commandes IR
5001Coil1Apprentissage dans les registres de maintien en RAM : 2000–2509 avant 4.22.0 ; 2000–3001 ensuite
5002Coil1Lecture depuis la même plage de registres RAM
5100Coilnumber_of_banksLecture depuis la banque ROM correspondante
5200Coilnumber_of_banksModification d’une commande ROM en copiant la ROM vers la RAM
5300Coilnumber_of_banksApprentissage dans la banque ROM correspondante
5400L’entréenumber_of_banksTaille de la commande IR en octets
5500Holding1Lecture depuis la ROM ; micrologiciel 4.18.0
5501Holding1Modification de la ROM via la RAM ; micrologiciel 4.18.0
5502Holding1Apprentissage dans la ROM ; micrologiciel 4.18.0
5520L’entrée1Taille de la commande RAM en octets ; micrologiciel 4.32.0, WB-MIR uniquement

La source indique les nombres historiques de banques suivants : 32 pour WB-MSW v.3, 40 pour WB-MIR v.2 et 80 pour WB-MIR v.3. À partir du micrologiciel 4.22.0, number_of_banks vaut 80. Vérifiez le micrologiciel installé avant de choisir une banque.

Sauvegarde et restauration des banques de commandes

Les scripts communautaires de pivcheg, renommés et regroupés par le fabricant, sont disponibles dans ir_backup.tgz. L’archive contient read_roms.pl, write_roms.pl, compare_bufs.pl, getbuffer.pl, putbuffer.pl et readme.txt. Transférez-la sur le contrôleur par SSH, extrayez-la, puis ouvrez son répertoire :

tar -xvzf ir_backup.tgz
cd ir_backup

Par défaut, seules les banques 0..4 sont traitées. Pour utiliser dix banques, modifiez foreach $i (0..4) sur foreach $i (0..9) dans les scripts. Adaptez le débit en bauds et le port série de l’appel à modbus_client à votre connexion :

modbus_client --debug -mrtu -b9600 -pnone -o 1200 -s2 /dev/ttyRS485-1 ...

Par exemple, remplacez -b9600 par -b115200 si nécessaire. Pour enregistrer les commandes de l’adresse Modbus 22 dans ./roms, puis les restaurer :

./read_roms.pl ./roms 22
./write_roms.pl ./roms 22

Les scripts arrêtent wb-mqtt-serial, traitent les banques sélectionnées, puis le redémarrent. Le script d’écriture remplace les commandes correspondantes par celles des fichiers.