Ti mostriamo come utilizzare i pulsanti su un telecomando Bluetooth (collegato tramite un dongle USB) per gestire funzioni come standby, regolazione del volume e controllo di un dispositivo con videocamera Cisco. È possibile sviluppare una macro che ascolti gli eventi rilevanti ed esegua le azioni corrispondenti tramite il API del dispositivo Cisco.

La funzionalità del dispositivo di input USB di terze parti è descritta in questo articolo.

Nel seguente esempio, è necessario immettere il testo che viene scritto in caratteri normali. Il testo in corsivo corrisponde alla risposta ricevuta dal dispositivo Cisco.

1

Accedere al dispositivo Cisco su SSH. È necessario un utente ammin locale.

2

Configurare il dispositivo per consentire l'utilizzo di un controllo remoto USB di terze parti.

 Periferiche xConfiguration Modalità dispositivo: On ** end OK  

 

È possibile verificare se la configurazione è stata Attivata o Disattivata utilizzando questo comando:

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

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

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

 

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

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

Premere e rilasciare un pulsante del telecomando per verificare che funzioni la registrazione del feedback.

Questa operazione genera due eventi: Premuto e Rilasciato. Se si tiene premuto un pulsante, viene visualizzato l'evento Premuto fino a quando non lo si rilascia. Quindi viene generato l'evento Rilasciato.

Questi eventi vengono emessi quando si preme e 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 che cerca di ascoltare gli eventi pertinenti al Dispositivo di input ed eseguire le azioni associate utilizzando l'API del dispositivo.

  • Riattivare i pulsanti di standby, di aumento e riduzione del volume. Quando la macro visualizza un evento che contiene KEY_VOLUMEUP, KEY_VOLUMEDOWN o KEY_SLEEP, esegue i comandi correlati.

  • Creare una funzione di controllo videocamera per i tasti di direzione. Desideriamo continuare a spostare la videocamera, fino a quando viene premuto il pulsante. Quando viene rilasciato il pulsante, si interrompe il movimento della videocamera. Quando la macro visualizza un evento che contiene 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. Stato === 'Off' ? falso: vero; }); xapi.status.on('Standby', state => { standbyState = state. Stato === 'Off' ? falso: vero; }); xapi.event.on('UserInterface InputDevice Key Action', premere => { 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 (premere. Type == "Rilasciato") { 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 Reduction'); break; case 'KEY_SLEEP': com(standbyState? «Standby Deactivate» : «Standby Activate»); Pausa; Valore predefinito: interruzione; } } }); } init();