Esempio
list-menuFeedback?

In questo esempio, vogliamo mostrarle come utilizzare i tasti di un dispositivo di input USB di terze parti (in questo caso un telecomando) per controllare determinate funzioni su un dispositivo Cisco.

Le mostriamo come utilizzare i pulsanti di un telecomando Bluetooth (collegato tramite un dongle USB) per gestire funzioni come lo standby, la regolazione del volume e il controllo di una fotocamera Cisco. Può sviluppare una macro che ascolti gli eventi rilevanti ed esegua le azioni corrispondenti tramite l'API del dispositivo Cisco.

Nell'esempio seguente, deve inserire il testo scritto con caratteri normali. Il testo in corsivo è la risposta ricevuta dal dispositivo Cisco.

1

Accedere al dispositivo Cisco su SSH. Le serve un utente amministratore locale.

2

Configura il dispositivo per consentire l'uso di un telecomando USB di terze parti.


       xConfiguration Peripherals InputDevice Mode: On 
      ** end OK  
               

 

Può verificare se la configurazione è attiva o disattivata utilizzando questo comando:


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

Si registri per ricevere un feedback, in modo da ricevere una notifica quando i pulsanti del telecomando vengono premuti e rilasciati.


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

 

Può controllare per quali feedback è registrato il dispositivo utilizzando questo comando:


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

Premi e rilascia un pulsante sul telecomando per verificare che la registrazione del feedback funzioni.

Questa azione genera due eventi: Pressed e Released. Se tiene premuto un pulsante, vede l'evento Pressed finché non rilascia il pulsante. Quindi viene generato l'evento Released.

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

Scriva una macro che ascolti gli eventi InputDevice pertinenti ed esegua le azioni associate utilizzando l'API del dispositivo.

  • Attiva i pulsanti di standby, aumento del volume e riduzione del volume. Quando la macro vede un evento contenente KEY_VOLUMEUP, KEY_VOLUMEDOWN o KEY_SLEEP, esegue i comandi correlati.

  • Crei una funzione di controllo della fotocamera per i tasti freccia. Vogliamo continuare a muovere la fotocamera finché si preme il pulsante. Quando si rilascia il pulsante, il movimento della fotocamera si interrompe. Quando la macro rileva 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(); 
     
Questo articolo è stato utile?
Questo articolo è stato utile?