Wir zeigen Ihnen, wie Sie die Tasten einer Bluetooth-Fernbedienung (angeschlossen über einen USB-Dongle) verwenden, um Funktionen wie Standby, Lautstärkeregelung und Steuerung eines Cisco-Kamerageräts zu verwalten. Sie können ein Makro entwickeln, das relevante Ereignisse abhört und entsprechende Aktionen über API des Cisco-Geräts ausführt.

Die USB-Eingabegerätefunktion von Drittanbietern wird in diesem Artikel beschrieben .

Im folgenden Beispiel müssen Sie den Text eingeben, der in normaler Schrift geschrieben ist. Der kursiv gedruckte Text ist die vom Cisco-Gerät empfangene Antwort.

1

Melden Sie sich über SSH beim Cisco-Gerät an. Sie benötigen einen lokalen Administrator-Benutzer.

2

Konfigurieren Sie das Gerät so, dass die Verwendung einer USB-Fernbedienung eines Drittanbieters ermöglicht wird.

 xConfiguration Peripherals InputDevice Mode: On ** Ende OK  

 

Sie können überprüfen, ob die Konfiguration Ein oder Aus ist, indem Sie den folgenden Befehl verwenden:

 xConfiguration Peripherals InputDevice Mode  *c xConfiguration Peripherals InputDevice Mode: Ein ** Ende OK  
3

Registrieren Sie Ihr Feedback, damit wir benachrichtigt werden, wenn die Tasten der Fernbedienung gedrückt und losgelassen werden.

 xFeedback Register /event/userinterface/inputdevice  ** Ende OK  

 

Sie können überprüfen, für welche Feedbacks das Gerät zur Verwendung dieses Befehls registriert ist:

 xFeedback list /event/userinterface/inputdevice ** Ende OK  
4

Drücken Sie eine Taste auf der Fernbedienung und lassen Sie sie los, um zu überprüfen, welche Feedback-Registrierung funktioniert.

Diese Aktion generiert zwei Ereignisse: Gedrückt und Freigegeben. Wenn Sie eine Taste drücken und halten, wird Ihnen das Ereignis Gedrückt angezeigt, bis Sie die Taste loslassen. Das Ereignis Freigegeben wird generiert.

Diese Ereignisse werden ausgegeben, wenn die Eingabetaste gedrückt und losgelassen wird:

  *e UserInterface InputDevice-Tastenaktionstaste: KEY_ENTER *e UserInterface InputDevice-Tastenaktionscode: 28 *e UserInterface InputDevice-Tastenaktionstyp: Gedrückt ** Ende *e UserInterface InputDevice-Tastenaktionstaste: KEY_ENTER *e UserInterface InputDevice-Tastenaktionscode: 28 *e UserInterface InputDevice Schlüsselaktionstyp: Freigegeben ** Ende  
5

Schreiben Sie ein Makro, das relevante InputDevice-Ereignisse überwacht und die zugeordneten Aktionen mit der API des Geräts ausführt.

  • Aktivieren Sie die Standby- und Lautstärketasten. Wenn das Makro ein Ereignis mit KEY_VOLUMEUP, KEY_VOLUMEDOWN oder KEY_SLEEP erkennt, führt es die zugehörigen Befehle aus.

  • Erstellen Sie die Funktion zur Kamerasteuerung für die Pfeiltasten. Wir möchten, dass sich die Kamera bewegt, solange die Taste gedrückt wird. Wenn die Taste losgelassen wird, bewegt sich die Kamera nicht mehr. Wenn das Makro ein Ereignis mit KEY_LEFT, KEY_RIGHT, KEY_UP oder KEY_DOWN erkennt, führt es die zugehörigen Befehle aus.

 const xapi = require('xapi'); function com(command, args='') { xapi.command(command, args); log(command + ' ' + JSON.stringify(args)); } function log(event) { console.log(event); } function notify(message) { xapi.command('UserInterface Message TextLine Display', { Text: Nachricht, Dauer: 3 }); } function cameraControl(Motor, Direction, cameraId='1') { com('Camera Ramp', { 'CameraId': cameraId, [Motor]: Direction }); } function init() { let StandbyState; xapi.status.get('Standby').then((state) => {StandbyState = state.State === 'Off' ? false: true; }); xapi.status.on('Standby', state => { StandbyState = state.State === 'Off' ? false: true; }); xapi.event.on('UserInterface InputDevice Key Action', press => { if (press.Type == "Pressed") { Switch (press.Key) { case "KEY_LEFT": cameraControl('Pan', 'Left '); break; case "KEY_RIGHT": cameraControl('Pan', 'Right'); break; case "KEY_UP": cameraControl('Tilt', 'Up'); break; case "KEY_DOWN": cameraControl('Tilt ', 'Down'); break; default: break; } } else if (press.Type == "Released") { Switch (press.Key) { case "KEY_LEFT": cameraControl('Pan', 'Stop') ; break; case "KEY_RIGHT": cameraControl('Pan', 'Stop'); break; case "KEY_UP": cameraControl('Tilt', 'Stop'); break; case "KEY_DOWN": cameraControl('Tilt', 'Stop'); break; case 'KEY_VOLUMEUP': com('Audio-Lautstärke erhöhen'); break; case 'KEY_VOLUMEDOWN': com('Audio-Lautstärke verringern'); break; case 'KEY_SLEEP': com(StandbyState? 'Standby Deaktivieren': 'Standby Aktivieren'); brechen; Standard: Pause; } } }); } drin();