Vi viser dig, hvordan du bruger knapperne på en Bluetooth fjernbetjening (tilsluttet via en USB-dongle) til at administrere funktioner som standby, lydstyrkejustering og kontrol af en Cisco-kameraenhed. Du kan udvikle en makro, der lytter til relevante hændelser og udfører tilsvarende handlinger gennem Cisco-enhedens API.

Tredjeparts USB-inputenhedsfunktion er beskrevet i denne artikel .

I følgende eksempel skal du angive den tekst, der er skrevet med normal skrifttype. Teksten i kursiv er svaret modtaget fra Cisco-enheden.

1

Log ind på Cisco-enheden på SSH. Du skal bruge en lokal administratorbruger.

2

Konfigurer enheden til at tillade brug af en USB-fjernbetjening fra tredjepart.

 xConfiguration Peripherals InputDevice Mode: On ** end OK  

 

Du kan kontrollere, om konfigurationen er aktiveret eller deaktiveret, ved hjælp af denne kommando:

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

Tilmeld til feedback, så vi får besked, når knapperne på fjernbetjeningen bliver trykket på eller frigivet.

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

 

Du kan kontrollere, hvilken feedback enheden registreres for, ved hjælp af denne kommando:

 xFeedback liste /event/userinterface/inputdevice ** slut OK  
4

Tryk på og slippe en knap på fjernbetjeningen for at kontrollere, at feedbackregistrering fungerer.

Denne handling genererer to hændelser: Nedtrykket og Frigivet. Hvis du trykker på og holder en knap nede, kan du se hændelsen Nedtrykket, indtil du slipper knappen. Så genereres hændelsen Frigivet.

Disse hændelser udstedes ved at trykke og slippe på Enter-tasten:

  *e UserInterface InputDevice Key Action Key: KEY_ENTER *e User Interface InputDevice Key Action Code: 28 *e User Interface InputDevice Key Action Type: Presset ** end *e User Interface InputDevice Key Action Key: KEY_ENTER *e User Interface InputDevice Key Action Code: 28 *e User Interface InputDevice Key Action Type: Frigivet ** end  
5

Skriv en makro, der lytter efter de relevante hændelser for indgangsenhed og udfører de tilknyttede handlinger ved brug af enhedens API.

  • Aktiverer standbytilstanden, lydstyrke op- og ned-knapperne. Når makroen ser en hændelse, der indeholder KEY_VOLUMEUP, KEY_VOLUMEDOWN eller KEY_SLEEP, kører den relaterede kommandoer.

  • Opret en kamerastyringsfunktion til piletasterne. Vi vil gerne blive ved med at flytte kameraet, så længe der trykkes på knappen. Når knappen er frigivet, stopper bevægelsen af kameraet. Når makroen ser en hændelse, der indeholder KEY_LEFT, KEY_RIGHT, KEY_UP eller KEY_DOWN, udfører den de relaterede kommandoer.

 const xapi = require('xapi'); function com(command, args='') { xapi.command(command, args); log(kommando + ' ' + JSON.stringify(args)); } funktion log(hændelse) { console.log(hændelse); } 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 }); } funktion init() { lad standbyState; xapi.status.get('Standby').then((state) => {standbyState = state.State === 'Fra' ? false: true; }); xapi.status.on('Standby', state => { standbyState = state.State === 'Off' ? false: true; }); xapi.event.on('UserInterface InputDevice Key Action', tryk på => { 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 ', 'Ned'); 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 Reduce'); break; case 'KEY_SLEEP': com(standbyState? 'Standby Deactivate' : 'Standby Activate'); pause; default: break; } } }); } i det();