Ejemplo
list-menu¿Comentarios?

En este ejemplo, queremos mostrarle cómo usar las teclas de un dispositivo de entrada USB de terceros (en este caso un control remoto) para controlar ciertas funciones en un dispositivo Cisco.

Le mostramos cómo usar los botones de un control remoto Bluetooth (conectado a través de un dongle USB) para administrar funciones como el modo de espera, el ajuste de volumen y el control de un dispositivo de cámara Cisco. Puede desarrollar una macro que escuche eventos relevantes y ejecute las acciones correspondientes a través del API del dispositivo Cisco.

En el ejemplo siguiente, debe escribir el texto escrito en fuente normal. El texto en cursiva es la respuesta recibida del dispositivo Cisco.

1

Inicie sesión en el dispositivo Cisco en SSH. Necesita un usuario administrador local .

2

Configure el dispositivo para permitir el uso de un control remoto USB de terceros.

 xConfiguration Peripherals InputDevice Mode: On ** end OK  

 

Puede comprobar si la configuración está activada o desactivada mediante este comando:

 xConfiguration Peripherals InputDevice Mode  *c xConfiguration Peripherals InputDevice Mode: On ** end OK  
3

Regístrese para recibir comentarios, de modo que se nos notifique cuando se presionen y liberen los botones del control remoto.

 xFeedback Registrar /event/userinterface/inputdevice  ** end OK  

 

Puede comprobar para qué comentarios está registrado el dispositivo con este comando:

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

Pulse y suelte un botón del mando a distancia para comprobar que el registro de comentarios funciona.

Esta acción genera dos eventos: Presionado y Liberado . Si mantiene presionado un botón, verá el evento Presionado hasta que suelte el botón. A continuación, se genera el evento Release .

Estos eventos se emiten al presionar y soltar la tecla Intro:

  *e UserInterface InputDevice Key Action Key: KEY_ENTER *e UserInterface InputDevice Key Action Code: 28 *e UserInterface InputDevice Key Action Type: Presionado ** end *e UserInterface InputDevice Key Action Key: KEY_ENTER *e UserInterface InputDevice Key Action Code: 28 *e UserInterface InputDevice Key Action Type: Released ** end  
5

Escriba una macro que escuche los eventos InputDevice relevantes y lleve a cabo las acciones asociadas utilizando el API del dispositivo.

  • Da vida a los botones de modo de espera, subir y bajar volumen. Cuando la macro ve un evento que contiene KEY_VOLUMEUP, KEY_VOLUMEDOWN o KEY_SLEEP, ejecuta los comandos relacionados.

  • Cree una función de control de cámara para las teclas de flecha. Queremos seguir moviendo la cámara mientras se presione el botón. Cuando se suelta el botón, el movimiento de la cámara se detiene. Cuando la macro ve un evento que contiene KEY_LEFT, KEY_RIGHT, KEY_UP o KEY_DOWN, ejecuta los comandos relacionados.

 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: message, duration: 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. ¿Estado === 'Off' ? falso: verdadero; }); xapi.status.on('Standby', state => { standbyState = state. ¿Estado === 'Off' ? falso: verdadero; }); 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 == "Release") { switch (press. Clave) { 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 Volume Increase'); break; case 'KEY_VOLUMEDOWN': com('Audio Volume Decrease'); break; case 'KEY_SLEEP': com(standbyState? 'Desactivación en espera' : 'Activación en espera'); descanso; predeterminado: descanso; } } }); } init(); 
¿Ha encontrado este artículo útil?
¿Ha encontrado este artículo útil?