Exemple
list-menuUn commentaire ?

Dans cet exemple, nous voulons vous montrer comment utiliser les touches d'un périphérique d'entrée USB tiers (dans ce cas une télécommande) pour contrôler certaines fonctions sur un périphérique Cisco.

Nous vous montrons comment utiliser les boutons d'une télécommande Bluetooth (connectée via un dongle USB) pour gérer des fonctions telles que la veille, le réglage du volume et le contrôle d'un appareil photo Cisco. Vous pouvez développer une macro qui écoute les événements pertinents et exécute les actions correspondantes via le API de l'appareil Cisco.

Dans l'exemple suivant, vous devez entrer le texte écrit en police normale. Le texte en italique est la réponse reçue du périphérique Cisco.

1

connectez-vous au périphérique Cisco sur SSH. Vous avez besoin d'un utilisateur administrateur local .

2

Configurez l'appareil pour permettre l'utilisation d'une télécommande tierce USB.

 xConfiguration Périphériques EntréeMode périphérique : On ** end OK  

 

Vous pouvez vérifier si la configuration est activée ou désactivée à l'aide de cette commande :

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

Inscrivez-vous pour recevoir des commentaires afin que nous soyons avertis lorsque les boutons de la télécommande sont enfoncés et relâchés.

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

 

Vous pouvez vérifier pour quels retours l'appareil est enregistré à l'aide de cette commande :

 Liste xFeedback /événement/interface utilisateur/périphérique d'entrée ** fin OK  
4

Appuyez et relâchez un bouton de la télécommande pour vérifier que l'enregistrement des commentaires fonctionne.

Cette action génère deux événements : Pressé et Libéré. Si vous maintenez enfoncé un bouton, l'événement Pressé s'affiche jusqu'à ce que vous relâchiez le bouton. Ensuite, l'événement Released est généré.

Ces événements sont déclenchés lorsque vous appuyez sur Entrée et la relâchez :

  *e UserInterface InputDevice Key Action Key : KEY_ENTER *e UserInterface InputDevice Key Code d'action de clé : 28 * e UserInterface InputDevice Key Type d'action : Appuyé ** end *e UserInterface InputDevice Key Action Key : KEY_ENTER *e UserInterface InputDevice Key Action Code : 28 * e UserInterface InputDevice Key Action Type : Libéré ** end  
5

Écrivez une macro qui écoute les événements InputDevice pertinents et effectue les actions associées à l'aide du API du périphérique.

  • Donnez vie aux boutons de veille, d'augmentation et de réduction du volume. Lorsque la macro voit un événement contenant KEY_VOLUMEUP, KEY_VOLUMEDOWN ou KEY_SLEEP, elle exécute les commandes associées.

  • Créez une fonction de contrôle de caméra pour les touches fléchées. Nous voulons continuer à déplacer la caméra tant que le bouton est enfoncé. Lorsque le bouton est relâché, le mouvement de la caméra s'arrête. Lorsque la macro voit un événement contenant KEY_LEFT, KEY_RIGHT, KEY_UP ou KEY_DOWN, elle exécute les commandes associées.

 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. Etat === 'Off' ? false : vrai ; }) ; xapi.status.on('Standby', state => { standbyState = state. Etat === 'Off' ? false : vrai ; }) ; xapi.event.on('UserInterface InputDevice Key Action', press => { if (Press. Type == "Pressé") { 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 (Appuyez sur. 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('Diminution du volume audio') ; pause ; case 'KEY_SLEEP' : com(standbyState ? 'désactive en veille' : 'activation en veille') ; Pause ; valeur par défaut : pause ; } } }) ; } init() ; 
Cet article était-il utile ?
Cet article était-il utile ?