Příklad
list-menuZpětná vazba?

V tomto příkladu vám chceme ukázat, jak používat klávesy vstupního zařízení USB jiného výrobce (v tomto případě dálkového ovladače) k ovládání určitých funkcí na zařízení Cisco.

Ukážeme vám, jak používat tlačítka na dálkovém ovladači Bluetooth (připojené přes USB dongle) ke správě funkcí, jako je pohotovostní režim, nastavení hlasitosti a ovládání kamerového zařízení Cisco. Můžete vytvořit makro, které naslouchá relevantním událostem a provádí odpovídající akce prostřednictvím rozhraní API zařízení Cisco.

V následujícím příkladu musíte zadat text, který je napsán normálním písmem. Text kurzívou je odpověď přijatá ze zařízení Cisco.

1

Přihlaste se k zařízení Cisco na SSH. Potřebujete místního administrá tora.

2

Nakonfigurujte zařízení tak, aby umožňovalo použití dálkového ovladače USB jiného výrobce.


       xConfiguration Peripherals InputDevice Mode: On 
      ** end OK  
               

 

Pomocí tohoto příkazu můžete zkontrolovat, zda je konfigurace Zapnuto nebo Vypnuto:


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

Zaregistrujte se pro zpětnou vazbu, abychom byli upozorněni na stisknutí a uvolnění tlačítek dálkového ovládání.


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

 

Pomocí tohoto příkazu můžete zkontrolovat, pro které zpětné vazby je zařízení zaregistrováno:


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

Stisknutím a uvolněním tlačítka na dálkovém ovladači zkontrolujte, zda registrace zpětné vazby funguje.

Tato akce generuje dvě události: Stisk nuto a U volněno. Pokud stisk nete a podržíte tlačítko, zobrazí se událost Stisknuto, dokud tlačítko neuvolníte. Poté se vy gener uje událost Release.

Tyto události jsou vydány při stisknutí a uvolnění klávesy Enter:

 
                   *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

Napište makro, které naslouchá příslušným událostem InputDevice a provádí související akce pomocí rozhraní API zařízení.

  • Oživte tlačítka pohotovostního režimu, zvýšení hlasitosti a snížení hlasitosti. Když makro uvidí událost obsahující KEY_VOLUMEUP, KEY_VOLUMEDOWN nebo KEY_SLEEP, provede související příkazy.

  • Vytvořte funkci ovládání kamery pro klávesy se šipkami. Chceme pokračovat v pohybu fotoaparátu, dokud je stisknuto tlačítko. Po uvolnění tlačítka se pohyb kamery zastaví. Když makro uvidí událost obsahující KEY_LEFT, KEY_RIGHT, KEY_UP nebo KEY_DOWN, provede související příkazy.


       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(); 
     
Byl tento článek užitečný?
Byl tento článek užitečný?