はじめに
Touch 10 - CE8.2 および DX70/DX80-CE8.3 では In Room Control機能 (室内制御機能)が追加されました。 これにより、会議室の照明・空調・ブラインド・各種ディスプレイの入力ソースなどを Touch 10 や DX からコントロールすることができます。連携のためには、
- ビデオ会議システム: DX/MX/SX/Room Kit
- 会議室制御システム: Crestron社製 AMX社製など
この2点が必要となります。ただ、会議室制御システムについてはラズペリーパイやPCを使って自作をしたりすでにあるものを利用してインテグレーションすることもできます。
今回このポストでは In Room ControlのAPI の理解と、シスコ製品で完結できるデモを目的に DX70 と Catalyst 3560CX のEEM 機能を使った POE コントロール デモを作成します。
デモビデオ
https://supportforums.cisco.com/ja/video/13276686
利用したもの
- DX70 - CE9.0.1 を利用 (CE8.3以降必要)
- Catalyst 3560CX (多少古めのCatalystでもOK)
- IP Phone (PoE 動作確認用)
DX70 In Room Control エディタ
TelePresence 端末の Web 管理画面から In Room Control エディタを起動します。
Integration > In-Room Control
Launch Editor をクリックします。なお、Launch Simulator (CE9, CE8.3の場合Editor から呼び出し)を利用するとより実践的な「会議室」をシミュレーションすることができます。Chromeブラウザが必須です、。
Panels 横の + をクリックします。
会議室制御画面の呼び出し方を選びます。通話中、アイドルにかかわらず、いつでも呼び出せる「Globally」、アイドル時に呼び出せる「Home Screen」、通話中に呼び出せる「In Call」の3つが選べますが今回は Home Screenを利用します。
編集画面となります。
Pane Name を "IP Phone" にします。ホームスクリーンのアイコン下に表示されます。アイコンはそのまま照明にします。
Page と Row のそれぞれ Name をIP Phone / Gi0/1 (スイッチのポート番号) と編集します。ここはラベルとしての役割だけですので、自由な名前が使えます。次に WidgetsからToggle On/Off を Gi0/1 列に配置します。
Toggle On/Off のWidget ID を ipphone にします。この ID は、利用者がオン・オフを設定した際のイベント検知で利用します。
Export Configuration アイコンで、DX にエディタで編集した内容を読み込ませます。
作成したアイコンが表示され、タップするとトグルが出てきます。
TelePresence 動作確認
TelePresence 側の動作を確認します。SSH/Telnet またはmicro USBポートを使ったシリアル接続でログインします。
コマンド
xfeedback register event/UserInterface/Extensions/Event
を入力します。
次に、先ほど作成したトグルをオンオフし、下記のような出力が出ることを確認します。
*e UserInterface Extensions Event Changed Signal: "ipphone:off"
** end
*e UserInterface Extensions Event Changed Signal: "ipphone:on"
** end
In Room Control の API ではこの xfeedback コマンドによって得られるテキストのイベント出力をモニタし、その文字列に合わせて会議室制御装置が動作をします。
SSH/Telnet/シリアルによるテキストの他に XML/JSON を利用した HTTP Post も利用可能です。
EEM 設定
Catalyst 側の設定を実施します。TelePresence 端末への IP 疎通が必要です。
interface Vlan1
ip address 192.168.1.254 255.255.255.0
また、逆引きによる時間ロスを防ぐために DNS 引きをしないようにします。
no ip domain-lookup
EEM のコマンドを入力します。大まかな処理は下記の通りです。
- Cron で毎分0秒に呼び出し
- SSH でDX にログイン
- xfeedback コマンドでイベントをモニタ
- widget id "ipphone" を検知し、 "ipphone:on" なのか "ipphone:off" なのかを変数 $result に入れる。
- 出力に合わせ、POE On/Off の処理を実施(別アプレット呼び出し)
メインアプレット
event manager applet room_control
event timer cron name EVERY_MINUTE cron-entry "0-59/1 * * * *" maxrun 60
action 010 cli command "enable"
action 020 cli command "ssh -l admin 192.168.1.2 " pattern "assword:"
action 030 cli command "cisco" pattern "OK"
action 035 set result "none"
action 040 cli command "xfeedback register event/UserInterface/Extensions/Event" pattern "ipphone"
action 050 regexp "ipphone:on" "$_cli_result" result
action 060 regexp "ipphone:off" "$_cli_result" result
action 070 syslog msg "$result"
action 071 cli command "bye" pattern "#"
action 080 if $result eq "ipphone:on"
action 081 cli command "event manager run poe_noshut"
action 082 else
action 083 cli command "event manager run poe_shut"
action 084 end
action 100 if $result ne "none" goto 010
action 101 if $result eq "none" goto 010
POE On のアプレット
event manager applet poe_shut
event none default 0
action 005 syslog msg "### PoE off###"
action 010 cli command "enable"
action 020 cli command "cisco"
action 030 cli command "conf t"
action 040 cli command "int gi0/1"
action 050 cli command "shutdown"
POE Off のアプレット
event manager applet poe_noshut
event none default 0
action 005 syslog msg "### PoE On###"
action 010 cli command "enable"
action 020 cli command "cisco"
action 030 cli command "conf t"
action 040 cli command "int gi0/1"
action 050 cli command "no shutdown"
いかがでしょうか。手動でのコマンド入力をEEMでは自動化することができます。また、コマンドそのものですので、特別な知識は必要ありません。
なお、デバッグ目的で Syslog 出力をわざと出しています。