Vi viser deg hvordan du bruker knappene på en Bluetooth fjernkontroll (koblet til via en USB-dongle) for å administrere funksjoner som ventemodus, volumjustering og kontroll av en Cisco-kameraenhet. Du kan utvikle en makro som lytter til relevante hendelser og utfører tilsvarende handlinger via Cisco-enhetens API.

Funksjonen for tredjeparts USB-inngangsenhet er beskrevet i denne artikkelen.

I eksemplet nedenfor må du skrive inn teksten som er skrevet med vanlig skrift. Teksten i kursiv er svaret du mottar fra Cisco-enheten.

1

Logge på Cisco-enheten på SSH. Du trenger en lokal administratorbruker .

2

Konfigurer enheten til å tillate bruk av en tredjeparts USB-fjernkontroll.

 xConfiguration Peripherals InputDevice Mode: På ** slutt OK  

 

Du kan sjekke om konfigurasjonen er på eller av ved å bruke denne kommandoen:

 xConfiguration Eksterne enheter InputDevice-modus*c xKonfigurasjon Eksterne enheter InputDevice-modus  : På ** slutt OK  
3

Registrer deg for tilbakemelding, slik at vi blir varslet når fjernkontrollknappene trykkes inn og slippes.

 xFeedback Registrer / event / userinterface / inputdevice   ** slutt OK  

 

Du kan sjekke hvilke tilbakemeldinger enheten er registrert for ved hjelp av denne kommandoen:

 xFeedback liste  / hendelse / brukergrensesnitt / inputdevice ** slutt OK  
4

Trykk og slipp en knapp på fjernkontrollen for å kontrollere at tilbakemeldingsregistrering fungerer.

Denne handlingen genererer to hendelser: Trykket og Frigitt. Hvis du trykker og holder inne en knapp, ser du Trykket-hendelsen til du slipper knappen. Deretter genereres hendelsen Frigitt .

Disse hendelsene utstedes når du trykker og slipper Enter-tasten:

  *e UserInterface InputDevice Key Handlingsnøkkel: KEY_ENTER *e UserInterface InputDevice Key Handlingskode: 28 *e UserInterface InputDevice Key Handlingstype: Trykket ** end *e UserInterface InputDevice Key Handlingstast: KEY_ENTER *e UserInterface InputDevice Key handlingskode: 28 *e UserInterface InputDevice Key Handlingstype: Utgitt ** slutt  
5

Skriv en makro som lytter etter de relevante InputDevice-hendelsene , og utfører de tilknyttede handlingene ved hjelp av enhetens API.

  • Gi liv til knappene for ventemodus, volum opp og volum ned. Når makroen ser en hendelse som inneholder KEY_VOLUMEUP, KEY_VOLUMEDOWN eller KEY_SLEEP, utføres de relaterte kommandoene.

  • Opprett en kamerakontrollfunksjon for piltastene. Vi ønsker å fortsette å bevege kameraet så lenge du trykker på knappen. Når knappen slippes, stopper kamerabevegelsen. Når makroen ser en hendelse som inneholder KEY_LEFT, KEY_RIGHT, KEY_UP eller KEY_DOWN, utføres de relaterte kommandoene.

 const xapi = require('xapi'); funksjon com (kommando, args = '') { xapi.command (kommando, args); log (kommando + ' ' + JSON.stringify (args)); } funksjonslogg (hendelse) { console.log (hendelse); } funksjon notify (melding) { xapi.command ('UserInterface Message TextLine Display', { Tekst: melding, varighet: 3 }); } funksjon cameraControl (motor, retning, cameraId = '1') { com ('Camera Ramp', { 'CameraId': cameraId, [motor]: retning }); } funksjon init() { let standbyState; xapi.status.get('Standby').then((state) => {standbyState = state. Stat === 'Av'? Usant: sant; }); xapi.status.on('Ventemodus', tilstand => { standbyState = tilstand. Stat === 'Av'? Usant: sant; }); xapi.event.on('UserInterface InputDevice Key Action', trykk => { if (trykk. Skriv == "Trykket") { bryter (trykk. Nøkkel) { tilfelle "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 (trykk. Type == "Utgitt") { bryter (trykk. Nøkkel) {tilfelle "KEY_LEFT": cameraControl('Pan', 'Stop'); break; tilfelle "KEY_RIGHT": cameraControl('Pan', 'Stop'); break; tilfelle "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 Deaktiver': 'Standby Activate'); Bryte; standard: pause; } } }); } init();