Wiren BoardDokumentation
Dokumentation · Deutsch

IR-Befehle aufzeichnen, wiedergeben und sichern

Revision 100027

Verwendungszweck und Funktionsprinzip

Der IR-Sendeempfänger in WB-MSW-I und WB-MIR zeichnet Signale handelsüblicher Fernbedienungen auf und gibt sie zur Steuerung von Klimaanlagen, Fernsehern und ähnlichen Geräten wieder. WB-MIR v.2/v.3 und WB-MSW v.3/v.4 unterstützen je nach Speichernutzung etwa 80 Befehle. Mit Ausnahme von WB-MSW v.3/v.4 sind die Module für kurze Entfernungen unter 1 m vorgesehen. Platzieren Sie den externen WB-MIR-Sender direkt am IR-Empfänger des gesteuerten Geräts.

Ermitteln Sie, ob die Fernbedienung einzelne Tastenbefehle oder einen vollständigen Betriebszustand sendet. TV-Fernbedienungen senden im Allgemeinen einzelne Befehle: Ein/Aus, Lautstärke, Kanalwechsel oder Zifferntasten. Zeichnen Sie die benötigten Tasten auf; auch eine kurze Folge wie die Auswahl von Kanal 13 kann aufgezeichnet werden. Klimaanlagen-Fernbedienungen senden häufig den gesamten ausgewählten Betriebsmodus, wobei der Ein-/Ausschaltzustand gelegentlich separat gesendet wird. Stellen Sie den gewünschten Modus ein, richten Sie die Fernbedienung auf den Empfänger und ändern Sie einen Parameter wie die Temperatur, um den Zustand zu senden. Zeichnen Sie getrennte Zustände auf, beispielsweise Aus, Kühlen auf 22 °C bei maximaler Lüftergeschwindigkeit, Kühlen auf 20 °C bei niedriger Lüftergeschwindigkeit oder Heizen auf 27 °C bei mittlerer Geschwindigkeit.

Aufzeichnungen beanspruchen die Schreibfestigkeit des ROM. Jede Zelle kann höchstens 1000-mal überschrieben werden.

Aufzeichnung und Wiedergabe in der Weboberfläche

  1. Öffnen Sie das Geräte-Widget auf der Registerkarte Devices.
  2. Setzen Sie Learn to ROMx / Command x recording auf ON.
  3. Richten Sie die Fernbedienung aus kurzer Entfernung auf den Empfänger und drücken Sie die gewünschte Taste einmal kurz. Schlägt die Aufzeichnung fehl, beseitigen Sie Störungen durch Leuchtstofflampen, Smartphone-Displays, Monitore oder Fernseher.
  4. Setzen Sie den Aufzeichnungsschalter zum Beenden auf OFF.
  5. Verwenden Sie Play from ROMx / Play command x, um den Befehl wiederzugeben.

Fehlt ein Control, aktivieren Sie es in den Geräteeinstellungen unter IR Commands.

IR-Befehls-Controls des WB-MSW
IR-Befehls-Controls des WB-MSW
IR-Befehls-Controls des WB-MIR
IR-Befehls-Controls des WB-MIR
Beispiel für den RAM-Puffer des WB-MIR
Beispiel für den RAM-Puffer des WB-MIR

Signaldarstellung und Speicherung

Ein Signal ist eine Folge ganzer Zahlen von 0 bis 65535. Jede Zahl gibt die Dauer eines logischen High- oder Low-Pegels in Einheiten von 10 µs an; der erste Wert steht für einen High-Pegel. Die maximale Dauer beträgt 655350 µs, ungefähr 0.655 s. Zwei aufeinanderfolgende Nullwerte beenden die Folge.

Ab Firmware 4.22.0 werden ROM-Befehle komprimiert und zur Wiedergabe dekomprimiert. Die maximale Befehlslänge beträgt 1000 Wörter (2000 Byte). Ähnliche Zeitdauern teilen sich einen Wörterbucheintrag; das Wörterbuch ist auf 64 Wörter begrenzt. Daher lassen sich beliebige Daten nicht immer im ROM speichern. Beim erneuten Auslesen eines bearbeiteten und gespeicherten Befehls können aufgrund der Komprimierung geringfügig abweichende Zeitwerte zurückgegeben werden. RAM bleibt unkomprimiert und unterstützt beliebige Daten.

Modbus-Betrieb

Diese Registeradressen gelten ab Firmware 3.2.0. Ältere Firmware verwendet verschobene Adressen. Die Kommunikation erfolgt über Modbus RTU auf RS-485. Die Werksadresse steht auf dem seitlichen Etikett und ist konfigurierbar; die seriellen Einstellungen sind ab Firmware 3.1.0 konfigurierbar. Siehe Modbus-Kommunikation.

Es kann jeweils nur eine Operation mit einem Signal ausgeführt werden. Die zugehörige Coil ist währenddessen 1 und kehrt nach Abschluss auf 0 zurück. Wird während einer aktiven IR-Operation eine weitere gestartet, wird BUSY zurückgegeben.

ROM-Befehle bleiben bei Unterbrechung der Spannungsversorgung erhalten, mit einem Befehl pro Speicherbank. Firmware bis 3.7.2 hatte sieben Bänke; ab 4.4.0 wurden 32 Bänke unterstützt. Zwischenversionen versuchten bis zu 80 Befehle zu unterstützen, konnten sie jedoch fehlerhaft speichern. Firmware 4.22.0 stellt die Unterstützung für bis zu 80 Befehle wieder her.

Befehl in ROM anlernen

Schreiben Sie für Bank i eine 1 in Coil 5300+i, richten Sie die Fernbedienung auf den Empfänger, drücken Sie die gewünschte Taste einmal kurz und schreiben Sie unmittelbar danach eine 0 in dieselbe Coil, um die Aufzeichnung zu beenden. Beispiel für Bank 1, Adresse 16, 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

ROM-Befehl wiedergeben

Schreiben Sie eine 1 in Coil 5100+i. Sie bleibt während der Wiedergabe 1 und kehrt automatisch auf 0 zurück. Während der Wiedergabe sind andere IR-Operationen nicht verfügbar.

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

ROM-Befehl bearbeiten

Schreiben Sie eine 1 in Coil 5200+i, um den Befehl in aufeinanderfolgende Holding-Register ab 2000 zu kopieren. Zwei aufeinanderfolgende Nullen markieren das Ende; bei einer leeren Bank enthalten 2000 und 2001 Nullen. Bearbeiten oder laden Sie Daten mit WRITE_SINGLE_REGISTER oder WRITE_MULTI_REGISTERS und erhalten Sie die beiden abschließenden Nullen. Zum Löschen dieses Befehls schreiben Sie sowohl in 2000 als auch in 2001 eine Null. Schreiben Sie zum Beenden und Speichern eine 0 in Coil 5200+i. Bis zum Ende der Bearbeitung ist keine andere IR-Operation verfügbar.

Alle ROM-Befehle löschen

Das Schreiben einer 1 in Coil 5000 löscht alle aufgezeichneten Befehle.

Steuerung über Holding-Register

Für Modbus-Master von Drittanbietern, SCADA, OPC-Server und SPS sind die Holding-Register 5500/5501/5502 großen Coil-Bereichen vorzuziehen. Jede Operation verwendet eine einzelne Adresse und vermeidet damit die bei manchen Mastern unzuverlässige blockweise Coil-Abfrage. Diese Lese-/Schreibregister sind ab Firmware 4.18.0 verfügbar und enthalten anfangs 0 für Betriebsbereitschaft.

  • 5500: Wiedergabe.
  • 5501: Bearbeitung.
  • 5502: Anlernen.

Schreiben Sie für eine Operation mit der bei null beginnenden Bank i den Wert i+1. Während der Wiedergabe meldet das Register die Nummer des ausgewählten Befehls und kehrt anschließend auf 0 zurück. Ein fehlender Befehl ergibt 0xFFFF. Bearbeiten und Anlernen funktionieren ähnlich: Schreiben Sie zum Beenden 0 oder zum Wechseln zu einem anderen Befehl dessen Nummer.

Aufzeichnung und Wiedergabe im RAM

Schreiben Sie eine 1 in Coil 5001, um ein Signal im RAM anzulernen. Befolgen Sie denselben Aufzeichnungsablauf wie beim ROM und schreiben Sie zum Stoppen 0. Das Signal erscheint in den Holding-Registern ab 2000 und kann bearbeitet werden. Schreiben Sie zur Wiedergabe eine 1 in Coil 5002. Diese Coil wird nach Abschluss automatisch zurückgesetzt; während der Wiedergabe ist keine andere IR-Operation verfügbar. Der RAM-Inhalt geht beim Abschalten der Spannungsversorgung verloren.

IR-Registertabelle

StartadresseTypAnzahlZweck / Verfügbarkeit
5000Coil1Alle IR-Befehlsspeicherbänke löschen
5001Coil1In RAM-Holding-Register anlernen: 2000–2509 vor 4.22.0; danach 2000–3001
5002Coil1Wiedergabe aus demselben RAM-Registerbereich
5100Coilnumber_of_banksWiedergabe aus der zugehörigen ROM-Bank
5200Coilnumber_of_banksROM-Befehl bearbeiten; ROM wird in RAM kopiert
5300Coilnumber_of_banksIn die zugehörige ROM-Bank anlernen
5400Eingangnumber_of_banksGröße des IR-Befehls in Byte
5500Holding1Wiedergabe aus ROM; Firmware 4.18.0
5501Holding1ROM über RAM bearbeiten; Firmware 4.18.0
5502Holding1In ROM anlernen; Firmware 4.18.0
5520Eingang1Größe des RAM-Befehls in Byte; Firmware 4.32.0, nur WB-MIR

Die Quelle nennt historische Bankanzahlen von 32 für WB-MSW v.3, 40 für WB-MIR v.2 und 80 für WB-MIR v.3. Ab Firmware 4.22.0 beträgt number_of_banks 80. Prüfen Sie die installierte Firmware, bevor Sie eine Bank auswählen.

Befehlsspeicherbänke sichern und wiederherstellen

Die Community-Skripte von pivcheg, vom Hersteller umbenannt und als Paket zusammengestellt, sind verfügbar als ir_backup.tgz. Das Archiv enthält read_roms.pl, write_roms.pl, compare_bufs.pl, getbuffer.pl, putbuffer.pl und readme.txt. Übertragen Sie es per SSH auf den Controller, entpacken Sie es und wechseln Sie anschließend in sein Verzeichnis:

tar -xvzf ir_backup.tgz
cd ir_backup

Standardmäßig werden nur die Bänke 0..4 verarbeitet. Um zehn Bänke zu verwenden, ändern Sie foreach $i (0..4) auf foreach $i (0..9) in den Skripten. Passen Sie Baudrate und seriellen Port im Aufruf von modbus_client an Ihre Verbindung an:

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

Ändern Sie beispielsweise bei Bedarf -b9600 in -b115200. So speichern Sie Befehle von Modbus-Adresse 22 in ./roms und stellen sie anschließend wieder her:

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

Die Skripte stoppen wb-mqtt-serial, verarbeiten die ausgewählten Bänke und starten den Dienst anschließend neu. Das Schreibskript ersetzt die entsprechenden Befehle durch die Befehle aus den Dateien.