Viene descritto come utilizzare i tasti di un controllo remoto Bluetooth (con un dongle USB) per controllare la funzione di standby, aumentare e diminuire il volume e controllare la videocamera di un dispositivo di sala o della scrivania. Viene creata una macro in ascolto degli eventi rilevanti e viene verificata l'esecuzione delle azioni associate utilizzando l'API del dispositivo di sala o della scrivania.

La funzione dispositivo di input USB di terze parti è descritta in questo articolo .

Nell'esempio seguente, è necessario immettere il testo scritto in carattere normale. Il testo in corsivo è la risposta ricevuta dal dispositivo di sala o della scrivania.

1

Accedere al dispositivo di sala o della scrivania su SSH. È necessario un utente di amministrazione locale.

2

Configurare il dispositivo per consentire l'uso di dispositivi USB di terze controllo remoto.


       xConfiguration Peripherals InputDevice Mode: On 
      ** end OK  
               

 

È possibile controllare se la configurazione è attivata o disattivata utilizzando questo comando:


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

Eseguire l'iscrizione per il feedback, in modo da ricevere una notifica quando i controllo remoto clic vengono pressati e rilasciati.


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

 

È possibile controllare i feedback per i quali è registrato il dispositivo utilizzando questo comando:


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

Premere e rilasciare un pulsante sul controllo remoto per controllare che l'iscrizione del feedback funzioni.

Questa azione genera due eventi: Pressata e rilasciata. Se si preme e si tiene premuto un pulsante, viene visualizzato l'evento Pressato fino a quando non si rilascia il pulsante. Quindi viene generato l'evento Rilasciato.

Questi eventi vengono emessi quando si preme e si rilascia il tasto Invio:

 
                   *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

Scrivere una macro in ascolto degli eventi inputDevice rilevanti e scoprire le azioni associate utilizzando l'API del dispositivo.

  • Attivare i pulsanti standby, volume e volume in basso. Quando la macro visualizza un evento contenente KEY_VOLUMEUP, KEY_VOLUMEDOWN o KEY_SLEEP, esegue i comandi correlati.

  • Creare una funzione di controllo videocamera per i tasti freccia. Si desidera continuare a spostare la videocamera finché il pulsante viene premuto. Quando il pulsante viene rilasciato, il movimento della videocamera si interrompe. Quando la macro visualizza un evento contenente KEY_LEFT, KEY_RIGHT, KEY_UP o KEY_DOWN, esegue i comandi correlati.


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