Pokazujemo kako da koristite tastere Bluetooth daljinskog upravljača (pomoću USB donglea) da biste kontrolisali funkciju pripravnosti, povećali i smanjili jačinu zvuka i kontrolisali kameru sobe ili desk uređaja. Kreiramo makro koji osluškuje relevantne događaje i izvršava povezane radnje pomoću API-ja sobe ili desk uređaja.

Funkcija USB ulaznog uređaja nezavisnog proizvođača opisana je u ovom članku .

U sledećem primeru morate uneti tekst koji je napisan normalnim fontom. Tekst u kurzivu je odgovor koji se dobija iz sobe ili desk uređaja.

1

Prijavite se u sobu ili desk uređaj na SSH. Potreban vam je lokalni administratorski korisnik.

2

Konfigurišite uređaj tako da dozvoli korišćenje USB daljinskog upravljača nezavisnog proizvođača.


       xConfiguration Peripherals InputDevice Mode: On 
      ** end OK  
               

 

Pomoću ove komande možete da proverite da li je konfiguracija isključena ili isključena:


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

Registrujte se za povratne informacije, tako da budemo obavešteni kada se dugmad daljinskog upravljača pritisnu i oslane.


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

 

Možete proveriti koje povratne informacije je uređaj registrovan za korišćenje ove komande:


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

Pritisnite i otpustite dugme na daljinskom upravljaču da biste proverili da li registracija povratnih informacija funkcioniše.

Ova radnja generiše dva događaja: Pritisnuto i oslobođeno . Ako pritisnete i držite dugme, videćete pritisnuti događaj dok ne otpustite dugme. Onda se generiše objavljeni događaj.

Ovi događaji se izdaju prilikom pritiskanja i otpuštanja tastera 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

Napišite makro koji osluškuje relevantne InputDevice događaje i izvršava povezane radnje pomoću API uređaja.

  • Osvestite dugmad za stanje pripravnosti, jačinu zvuka i spustite jačinu zvuka. Kada makro vidi događaj koji sadrži KEY_VOLUMEUP, KEY_VOLUMEDOWN ili KEY_SLEEP, on izvršava povezane komande.

  • Kreirajte funkciju kontrole fotoaparata za tastere sa strelicama. Želimo da nastavimo da pomeramo kameru sve dok je dugme pritisnuto. Kada se dugme oslobodi, pokret kamere se zaustavlja. Kada makro vidi događaj koji sadrži tastere KEY_LEFT, KEY_RIGHT, KEY_UP ili KEY_DOWN, on izvršava povezane komande.


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