Pokazujemo kako koristiti tipke Bluetooth daljinskog upravljača (s USB ključem) za upravljanje funkcijom stanja pripravnosti, povećanje i smanjenje glasnoće te upravljanje kamerom sobe ili stolnog uređaja. Stvaramo makronaredbu koja osluškuje relevantne događaje i provodi povezane radnje pomoću API-ja sobe ili stolnog uređaja.

Značajka USB ulaznog uređaja treće strane opisana je u ovom članku .

U sljedećem primjeru morate unijeti tekst napisan normalnim fontom. Tekst kurzivom je odgovor koji se prima iz sobe ili stolnog uređaja.

1

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

2

Konfigurirajte uređaj tako da dopušta korištenje USB daljinskog upravljača drugog proizvođača.


       xConfiguration Peripherals InputDevice Mode: On 
      ** end OK  
               

 

Pomoću ove naredbe možete provjeriti je li konfiguracija uključena ili isključena:


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

Registrirajte se za povratne informacije, tako da ćemo biti obaviješteni kada se tipke za daljinsko upravljanje pritisnu i oslobode.


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

 

Možete provjeriti koje je povratne informacije uređaj registriran za korištenje ove naredbe:


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

Pritisnite i otpustite gumb na daljinskom upravljaču kako biste provjerili radi li registracija povratnih informacija.

Ova akcija generira dva događaja: Pritisnuto i pušteno . Ako pritisnete i držite gumb, vidjet ćete događaj Pritisnuto dok ne otpustite gumb. Tada se generira događaj Objavljeno .

Ti se događaji izdaju pritiskom i otpuštanjem tipke 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 makronaredbu koja osluškuje relevantne događaje InputDevice i provodi povezane radnje pomoću API-ja uređaja.

  • Oživite gumbe za stanje pripravnosti, pojačavanja glasnoće i smanjivanje glasnoće. Kada makronaredba vidi događaj koji sadrži VOLUMEUP TIPKI_, KEY_VOLUMEDOWN ili KEY_SLEEP, izvršava povezane naredbe.

  • Stvorite funkciju kontrole kamere za tipke sa strelicama. Želimo nastaviti pomicati kameru sve dok je tipka pritisnuta. Kada se gumb otpusti, kretanje kamere se zaustavlja. Kada makronaredba vidi događaj koji sadrži TIPKU_LIJEVO, TIPKA_DESNO, TIPKA_GORE ili TIPKA_DOLJE, izvršava povezane naredbe.


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