Пример
list-menuОтправить обратную связь?

В этом примере мы хотим показать вам, как использовать клавиши стороннего USB-устройства ввода (в данном случае пульта дистанционного управления) для управления определенными функциями на устройстве Cisco.

Мы покажем вам, как использовать кнопки пульта дистанционного управления Bluetooth (подключенного через USB-адаптер) для управления такими функциями, как режим ожидания, регулировка громкости и управление камерой Cisco. Можно разработать макрос, который прослушивает соответствующие события и выполняет соответствующие действия с помощью API устройства Cisco.

В следующем примере необходимо ввести текст, написанный обычным шрифтом. Текст, выделенный курсивом, представляет собой ответ, полученный от устройства Cisco.

1

Войдите на устройство Cisco по протоколу SSH. Вам нужен локальный администратор.

2

Настройте устройство таким образом, чтобы разрешить использование стороннего USB-пульта дистанционного управления.


       xConfiguration Peripherals InputDevice Mode: On 
      ** end OK  
               

 

Вы можете проверить, включена ли конфигурация или выключена, используя следующую команду:


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

Зарегистрируйтесь для получения отзывов, чтобы получать уведомления о нажатии и отпускании кнопок пульта дистанционного управления.


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

 

Вы можете проверить, на какие отзывы зарегистрировано устройство, с помощью следующей команды:


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

Нажмите и отпустите кнопку на пульте дистанционного управления, чтобы убедиться, что регистрация отзывов работает.

Это действие вызывает два события: нажато и выпущено. Если вы нажмете и удерживаете кнопку, событие «Нажато» отображается до тех пор, пока вы не отпустите кнопку. Затем генерируется событие «Выпущено».

Эти события возникают при нажатии и отпускании клавиши Enter:

 
                   *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

Напишите макрос, который отслеживает соответствующие события InputDevice и выполняет соответствующие действия с помощью API устройства.

  • Оживите кнопки ожидания, увеличения и уменьшения громкости. Когда макрос видит событие, содержащее KEY_VOLUMEUP, KEY_VOLUMEDOWN или KEY_SLEEP, он выполняет соответствующие команды.

  • Создайте функцию управления камерой для клавиш со стрелками. Мы хотим продолжать перемещать камеру до тех пор, пока кнопка нажата. Когда кнопка отпускается, движение камеры прекращается. Когда макрос видит событие, содержащее KEY_LEFT, KEY_RIGHT, KEY_UP или KEY_DOWN, он выполняет соответствующие команды.


       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(); 
     
Была ли статья полезной?
Была ли статья полезной?