Funkcja ta ma na celu uzupełnienie funkcjonalności kontrolera dotykowego lub dotykowego interfejsu użytkownika. Nie ma na celu ich zastąpienia .

Przykłady zastosowań:

  • W salach lekcyjnych i podczas wykładów można użyć małego pilota do wybudzenia urządzenia z trybu gotowości. Wygodne może być również użycie pilota zdalnego sterowania, aby wybrać źródło wejściowe do prezentacji.

  • Sterowanie widokiem kamery (obrót, pochylenie i powiększenie) w sytuacjach, w których nie można używać kontrolera dotykowego. Na przykład w salach operacyjnych w szpitalu.

Przegląd funkcjonalności

Naciśnięcie przycisku na urządzeniu wejściowym USB wyzwala akcję w API urządzenia Cisco. Makra lub zewnętrzne urządzenia sterujące innych firm mogą być skonfigurowane tak, aby wykrywały te działania i odpowiednio reagowały. Ta funkcjonalność jest podobna do tego, jak zachowują się przyciski sterowania pokojowego. Ponadto możliwe jest monitorowanie tych działań za pomocą webhooków lub bezpośrednio w sesji SSH.

Istniejąca wcześniej biblioteka działań do wyboru nie jest dostępna. Należy zdefiniować i ustalić konkretne działania, które powinny wystąpić w odpowiedzi na zdarzenia. Na przykład:

  • Zwiększ głośność urządzenia Cisco po naciśnięciu zwiększania głośności.

  • Po naciśnięciu przycisku uśpienia przełącz urządzenie Cisco w tryb gotowości.

Konfiguracje, zdarzenia i stan

Konfiguracje i stany, o których mowa w tym artykule, są dostępne zarówno w lokalnym interfejsie internetowym urządzenia, jak i w interfejsach API. Przeczytaj artykuł Konfiguracje urządzeń, aby uzyskać informacje na temat uzyskiwania dostępu do interfejsu internetowego i korzystania z API.

Po otwarciu interfejsu internetowego urządzenia kliknij Ustawienia . W obszarze Configurations (Konfiguracje ) zmień ustawienie Peripherals> InputDevice Mode (Tryb urządzeń peryferyjnychInputDevice na Włączone). Obsługa urządzeń wejściowych USB innych firm jest domyślnie wyłączona.

Naciśnięcie i zwolnienie przycisku powoduje wygenerowanie zdarzenia Naciśnięty i Zwolniony:

 *e UserInterface InputDevice Key Action Key: <nazwa klucza> *e Kod akcji klucza InputDevice interfejsu użytkownika: <id klucza> *e UserInterface InputDevice Key Typ akcji: Pressed ** end *e UserInterface InputDevice Key Action Key: <nazwa klucza> *e UserInterface InputDevice Key Action Code: <id klucza> *e UserInterface InputDevice Key Action Type: Zwolniony ** koniec 

Aby nasłuchiwać zdarzeń, musisz zarejestrować sprzężenie zwrotne od zdarzeń InputDevice:

 xFeedback Register /event/UserInterface/InputDevice ** end 

Gdy urządzenie Cisco wykryje urządzenie peryferyjne innej firmy, zostanie wyświetlone na liście w obszarze Status (Stan ) i Peripherals > ConnectedDevice . Urządzenie innej firmy może być zgłaszane jako wiele urządzeń.

Dalsze informacje

Więcej informacji na temat korzystania z urządzenia wejściowego innej firmy można znaleźć w podręczniku Dostosowywanie. Wybierz najnowszą wersję.

Pomoc techniczna firmy Cisco (TAC) nie obsługuje debugowania kodu innej firmy, w tym makr. Sprawdź system Cisco RoomOS dla urządzeń do współpracy, jeśli potrzebujesz pomocy dotyczącej makr i kodu innych firm. Na tej stronie znajdziesz więcej przykładów makr i rozszerzeń.

Przykład

W tym przykładzie chcemy pokazać, jak używać wejściowego urządzenia USB innej firmy (w tym przypadku pilota zdalnego sterowania) do sterowania niektórymi funkcjami na urządzeniu Cisco.

Pokażemy, jak używać przycisków na pilocie zdalnego sterowania Bluetooth (podłączonym za pomocą klucza sprzętowego USB) do zarządzania funkcjami, takimi jak tryb gotowości, regulacja głośności i sterowanie aparatem Cisco. Można opracować makro, które nasłuchuje istotnych zdarzeń i wykonuje odpowiednie działania za pośrednictwem API urządzenia Cisco.

W poniższym przykładzie należy wprowadzić tekst napisany normalną czcionką. Tekst pisany kursywą jest odpowiedzią otrzymaną z urządzenia Cisco.

1

Zaloguj się do urządzenia Cisco na SSH. Potrzebujesz lokalnego użytkownika admin.

2

Skonfiguruj urządzenie, aby umożliwić korzystanie z pilota zdalnego sterowania USB innej firmy.

 xConfiguration Peripherals InputDevice Mode: On ** end OK  

 

Za pomocą tego polecenia można sprawdzić, czy konfiguracja jest włączona, czy wyłączona:

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

Zarejestruj się w celu otrzymywania informacji zwrotnych, abyśmy byli powiadamiani o naciśnięciu i zwolnieniu przycisków pilota.

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

 

Za pomocą tego polecenia można sprawdzić, dla jakich informacji zwrotnych urządzenie jest zarejestrowane:

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

Naciśnij i zwolnij przycisk na pilocie, aby sprawdzić, czy działa rejestracja sprzężenia zwrotnego.

Ta akcja generuje dwa zdarzenia: Wciśnięty i Zwolniony. Jeśli naciśniesz i przytrzymasz przycisk, zobaczysz zdarzenie Wciśnięty do momentu zwolnienia przycisku. Następnie generowane jest zdarzenie Zwolniony.

Zdarzenia te są wywoływane podczas naciskania i zwalniania klawisza 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

Tworzymy makro, które nasłuchuje odpowiednich zdarzeń InputDevice i wykonuje związane z nimi akcje, korzystając z API urządzenia pokojowego lub biurkowego.

  • Ożywiaj przyciski trybu gotowości, zwiększania i zmniejszania głośności. Kiedy makro widzi zdarzenie zawierające KEY_VOLUMEUP, KEY_VOLUMEDOWN, lub KEY_SLEEP, to wykonuje odpowiednie komendy.

  • Utwórz funkcję sterowania kamerą dla klawiszy strzałek. Chcemy, aby kamera poruszała się tak długo, jak długo przycisk jest wciśnięty. Po zwolnieniu przycisku ruch kamery zostaje zatrzymany. Kiedy makro widzi zdarzenie zawierające KEY_LEFT, KEY_RIGHT, KEY_UP, lub KEY_DOWN, to wykonuje odpowiednie komendy.

 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. Stan === 'wyłączony' ? fałsz: prawda; }); xapi.status.on('Standby', state => { standbyState = state. Stan === 'wyłączony' ? fałsz: prawda; }); xapi.event.on('UserInterface InputDevice Key Action', press => { if (press. Type == "Pressed") { switch (naciśnij. 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 (naciśnij. Type == "Released") { switch (naciśnij. 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 Decline'); break; case 'KEY_SLEEP': com(standbyState? "Dezaktywacja w trybie czuwania": "Aktywacja w trybie czuwania"); przerwa; Wartość domyślna: przerwa; } } }); } init();