Показваме как да използваме клавишите на Bluetooth дистанционно управление (с USB донгъл), за да управляваме функцията за готовност, да увеличаваме и намаляваме силата на звука и да управляваме камерата на стая или бюро устройство. Ние създаваме макрос, който слуша за съответните събития, и извършва свързаните действия с помощта на API на помещението или бюрото устройство.

Функцията USB входно устройство на трети страни е описана в тази статия .

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

1

Влезте в стаята или бюрото устройство на 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, той изпълнява свързаните команди.

  • Създайте функция за управление на камерата за клавишите със стрелки. Искаме да продължим да движим камерата, стига бутонът да е натиснат. Когато бутонът бъде освободен, движението на камерата спира. Когато макросът види събитие, съдържащо КЛАВИШ_НАЛЯВО, КЛЮЧ_НАДЯСНО, КЛЮЧ_НАГОРЕ или КЛЮЧ_НАДОЛУ, той изпълнява свързаните команди.


       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();