Vi visar dig hur du använder knapparna på en Bluetooth fjärrkontroll (ansluten via en USB-dongel) för att hantera funktioner som standby, volymjustering och kontroll av en Cisco-kameraenhet. Du kan utveckla ett makro som lyssnar på relevanta händelser och utför motsvarande åtgärder genom Cisco-enhetens API.

Tredje parts USB-ingångsfunktion beskrivs i den här artikeln .

I följande exempel ska du skriva in den text som skrivs i normal stil. Texten i kursiv stil är svaret som mottagits från Cisco-enheten.

1

Logga in på Cisco-enheten på SSH. Du behöver en lokal admin-användare.

2

Konfigurera enheten för att tillåta användning av en USB-fjärrkontroll från tredje part.

 xConfiguration Periferals InputDevice Mode: On ** slut OK  

 

Du kan kontrollera om konfigurationen är aktiv eller inaktiv genom att använda det här kommandot:

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

Registrera dig för feedback, så att du aviseras när knapparna på fjärrkontrollen trycks ned och släpps.

 xFeedback Registrera /event/userinterface/inputdevice  ** slut OK  

 

Du kan kontrollera vilka typer av feedback enheten är registrerad för med det här kommandot:

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

Tryck på och släpp en knapp på fjärrkontrollen för att kontrollera att feedbackregistrering fungerar.

Den här åtgärden genererar två händelser: Nedtryckt och Släppt. Om du trycker på och håller ned en knapp, visas händelsen Nedtryckt tills du släpper knappen. Då genereras händelsen Släppt.

Dessa händelser genereras när du trycker ned och släpper Enter-tangenten:

  *e Användargränssnitt InputDevice Key Action Key: KEY_ENTER *e User Interface InputDevice Key Action Code: 28 *e User Interface InputDevice Key Action Type: Intryckt ** 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: Released ** end  
5

Skriv ett makro som avlyssnar relevanta inmatningsenhet-händelser och utför de tillhörande åtgärderna med hjälp av API för enheten.

  • Ge liv åt knapparna för standby, höj volym och sänk volym. Relaterade kommandon utförs när makrot ser en händelse som innehåller KEY_VOLUMEUP, KEY_VOLUMEDOWN eller KEY_SLEEP.

  • Skapa en kamerakontrollfunktion för piltangenterna. Vi vill att kameran ska fortsätta att röra sig så länge knappen hålls nedtryckt. När knappen släpps ska kamerarörelsen upphöra. Relaterade kommandon utförs när makrot ser en händelse som innehåller KEY_LEFT, KEY_RIGHT, KEY_UP eller KEY_DOWN.

 const xapi = require('xapi'); function com(command, args='') { xapi.command(command, args); log(kommando + ' ' + JSON.stringify(args)); } function log(event) { console.log(event); } function notify(meddelande) { 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', tryck 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 ', 'Ner'); 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 Ökning'); break; case 'KEY_VOLUMEDOWN': com('Ljudvolym minskar'); break; case 'KEY_SLEEP': com(standbyState? 'Standby Deactivate' : 'Standby Activate'); ha sönder; default: break; } } }); } i det();