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 espera, ajuste de volumen y control de un dispositivo de cámara Cisco. Puede desarrollar una macro que escuche eventos relevantes y ejecute las acciones correspondientes a través de la API del dispositivo Cisco.

En el siguiente ejemplo, debe introducir 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 suelten los botones del control remoto.


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

 

Puede verificar para qué comentarios está registrado el dispositivo usando este comando:


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

Presione y suelte un botón en el control remoto para verificar que el registro de comentarios funcione.

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. Luego se genera el evento Liberado.

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: Pressed ** 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 la API del dispositivo.

  • Dé vida a los botones de espera, subir volumen 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.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 Volume Increase'); break; case 'KEY_VOLUMEDOWN': com('Audio Volume Decrease'); break; case 'KEY_SLEEP': com(standbyState ? 'Standby Deactivate' : 'Standby Activate'); break; default: break; } } }); } init(); 
     
¿Ha encontrado este artículo útil?
¿Ha encontrado este artículo útil?