Zoom Roomsのルームコントロール

ルームコントロール機能を使用すると、サードパーティのIP対応機器を制御でき、ユーザーはZoom Roomsコントローラを通じてその機器を操作できるようになります。管理者は、構成プロファイルを作成して、Zoom Roomから発信IP制御メッセージを追加できます。

ルームコントロールを使用するための要件

: オーディオ / ビデオ(A/V)用にルームコントロールを使用している場合、複数のNICを持つZoom Roomのコンピュータに個別のネットワークインテ―フェースカード(NIC)を割り当てることができます。NICは、Zoom Room対応のコンピュータに接続されている代替ネットワークに接続されたルームコントロールデバイスから個別に選択できます。この構成により、オーディオ / ビデオのトラフィックをプライマリネットワークから遠ざけることができます。

LANまたはWLANで制御可能なサードパーティデバイス

USBシリアルアダプター

目次

ルームコントロールを有効にする方法

JSON構成プロファイルをアップロードする前に、Zoom Roomの設定を有効にする必要があります。

  1. Zoomウェブポータルにサインインします。
  2. [ルーム管理] をクリックし、[Zoom Rooms] を選択します。
  3. Zoom Room名の右側にある [編集] をクリックします。
  4. [デバイス] で、[ルームコントロールを有効にする] のトグルをオン(青)にします。
  5. (オプション)[「ルームコントロール」をZoom Roomsコントローラのホーム画面として設定] の横にあるボックスにチェック を入れます。: これには、Zoom RoomsおよびZoom Roomsコントローラアプリのバージョン6.3.0以降が必要です。
  6. [プロファイルを作成] をクリックします。
  7. このルームのJSON構成を入力します。

ルームコントロールプロファイルの書き方

はじめに

ルームコントロールプロファイルを書くには、JSONに関する実用的な知識が必要です。注意すべき点は、JSONがキー:値ペアベースのシステムであり、ファイルを正確にレイアウトするためには構文が重要だということです。JSONの基礎に関する詳細は、オンライン入門コースを参照してください。

どのコーディング言語でも、ファイルを次に処理する人にある程度の配慮を示す必要があります。ルームコントロールに対する特定の要件はありませんが、推奨されています。作成者、バージョン、その他の履歴の記録を残すために、'about'オブジェクトを使用して'adapters'の上に配置することができます。ルームコントロールはこれを解析しませんが、ポータルには残ります。以下はこれを活用するための例です。

{
"about": {
"type": "Medium Conference A",
"version": "v1.2.4",
"design_ref": "\\files\MediumConfA",
"created": "Mon, 21 Oct 2020 16:35:52 GMT"
},

アダプター

アダプターを設定すると、ルームコントロールがデバイスに接続されます。このセクションは、構成の主要なセクションです。入れ子になったJSON形式内の個々のデバイスは、同様の形式に従う必要があります(この例は、以下のコード例と並行して入れ子になっています)。

{
"adapters": [
{
"model": "iTachIP2SL",
"ip": "[IP_ADDRESS]",
"uuid": "GlobalCache_[UNIT_MAC_ADDRESS]",
"ports": [
{
"id": "sl_sharp_tv",
"name": "Sharp Display",
"settings": {
"baud_rate": "38400",
"flow_control": "FLOW_NONE",
"parity": "PARITY_NO"
},
"methods": [
{
"id": "power",
"name": "Power",
"command": "POWR000%\\x0D",
"params": [
{
"id": "displayOn",
"name": "On",
"value": "0001"
},
{
"id": "displayOff",
"name": "Off",
"value": "0000"
}
],
"type": "actions"
},
...

'methods'の下に、追加のセクション'response_filter'を追加できます。応答フィルタは、以下に定義された応答フィルタがリッスンする接続を理解するのを可能にするビーコンです。この領域には、定義されている関数はありません。応答フィルタが他のセクションでどのように適合するかは、それらのセクションで説明します。

スタイル

スタイルは、インターフェース要素の視覚的なスタイルを制御します。それほど広範に調整する必要がなく、比較的簡単に学ぶことができます。

インターフェースには多くのアイコンがあります。エアコンからスピーカーフォンまで、さまざまな製品に対応しています。以下のアイコンは現在のリストのものですが、リストは定期的に拡大しています。

                         

デバイス名前画像
エアコンicon_air_conditioner
ケーブルテレビicon_cable_tv 
シーリングマイクicon_ceiling_mic
カーテンicon_curtain 
DVDプレーヤーicon_dvd_player 
Xbox / PS4システムicon_game_console 
HDMIicon_hdmi 
ノートパソコンicon_laptop 
照明icon_light 
プロジェクターicon_projector
ラック機器icon_rack_equipment 
衛星放送受信用アンテナicon_satellite_dish 
スピーカーicon_speaker 
スピーカーフォンicon_speakerphone
テレビicon_tv
電源icon_power
icon_up
icon_down 
icon_cold
icon_hot
乾燥icon_dry 
icon_wind 

スタイル内にはアイコン(上記参照)、メインメソッド、可視性という3つの主要な修飾子があります。

アイコンは、システムを視覚化したものです。デバイスをマークしたり、ボタンに関連付けられたテキストを置き換えたりするために使用できます。以下の例では、'example'というデバイスを定義しています。

{
"adapters": [
{
"model": "ExternalControlSystem",
"ip": "tcp://[USER_IP_ADDRESS]:[USER_PORT]",
"ports": [
{
"id": "example",
"name": "Example Device",
"methods": [
...

'example'をデバイスとして定義すると、このIDをスタイル内で使用できます。たとえば、このexampleデバイスのメインアイコンを簡単に照明に設定することができます。

"styles": [
"example.icon=icon_light",
"example.main_method=power"
]

Zoomは、Googleの公式MDIサイトにあるマテリアルデザインアイコン(MDI)もサポートしています。

これらのアイコンのいずれかを指定するには、以下の形式の従います。

"example.icon=mdi:local_airport:two_tone"

これはすべて小文字である必要があります。アイコン名にはスペースの代わりにアンダースコア (_) を使用します。アイコンをダウンロードできない場合は、デフォルトのアイコンが表示されます。

また、お気づきかもしれませんが、1行内にデバイスのメインメソッドも定義しています。メインメソッドは、定義した参照コマンドをデバイスのタイトルバーに表示し、次のように目立たせます。

main-method-prominent.png

電源コマンドをメインメソッドとして定義したので、他のコマンドとは別に上部のバーに表示されています。

3つ目のスタイルタイプは「可視性」です。可視性は、プログラマーが関数を定義した後、その関数をユーザーのインターフェースから完全に非表示するのを可能にします。これは簡単に定義できます。

"example.power.invisible=true"

"device.command.invisible=true"の形式に従うと、このコマンドがRoomsユーザーから完全に非表示になります。

ルール

ルールはルームコントロールの自動化エンジンです。ここで自動的に実行される内容を定義します。たとえば、ミーティングがアクティブなときにのみディスプレイをアクティブにする場合は、「meeting_started」と「meeting_ended」(ストックZoomイベント)を使用して有効にします。

"rules": {
"meeting_started": [
"display.power.on",
"camera.power.wake"
]
),
"meeting_ended": [
"display.power.off"
]
}

この例は、システムの電源消費を削減するために使用できます。

1つのルールにつき1つのコマンドでは十分でない場合は、これらのコマンドを簡単にスタックすることもできます。各コマンドは技術的には順番に実行されますが、イベントが同時に実行されていると見なせるほど十分な速度で処理されます。上記の例では、ディスプレイが起動したときにカメラをアクティブにするために「display.power.on」の下に「camera.power.wake」を追加しました。

:

                                               

タイプイベント文字列Notes
ミーティング
ミーティングミーティングが開始しましたzr_meeting_started 
ミーティングミーティングが終了しましたzr_meeting_ended 
ミーティングミーティングが開始しましたzr_zoom_meeting_startedこのコマンドは、通常のミーティングと相互運用ミーティングを区別するために追加されましたが、meeting_startedとmeeting_endedのコマンドは引き続きサポートされています。
ミーティングミーティングが終了しましたzr_zoom_meeting_endedこのコマンドは、通常のミーティングと相互運用ミーティングを区別するために追加されましたが、meeting_startedとmeeting_endedのコマンドは引き続きサポートされています。
ミーティングミーティングが開始しましたzr_interop_meeting_started 
ミーティングミーティングが終了しましたzr_interop_meeting_ended 
ミーティング着信ミーティング招待が開始しましたzr_meeting_ring_started 
ミーティング着信ミーティング招待が終了しましたzr_meeting_ring_ended 
 次のミーティングアラートがトリガーされましたzr_meeting_item_about_to_start 
 ミーティングリスト項目を開始zr_meeting_item_start 
 ミーティングリスト項目を終了zr_meeting_item_stop 
通話
通話着信通話を開始zr_phone_ring_started

あらゆるタイプの電話の操作(Zoom Phone、オーディオプラン、サードパーティPBX)がこのコマンドをトリガーします

 
通話着信通話を終了zr_phone_ring_ended

このイベントをトリガーするには、すべての電話の呼び出しタイプが非アクティブである必要があります。

 
通話通話が開始しましたzr_phone_call_started

アクティブなミーティング内のPSTN招待はこのイベントをトリガーしません

 
通話通話が終了しましたzr_phone_call_ended

 

 
ミーティング内
ミーティング内 - ビデオビデオオン(カメラのミュートオフ)zr_video_started 
ミーティング内 - ビデオビデオオフ(カメラのミュートオン)zr_video_stopped 
ミーティング内 - ビデオ選択したビデオデバイスが変更されましたzr_video_device_changedビデオデバイスの変更イベントは、メインで選択したデバイスが変更された場合にのみトリガーされます。マルチカメラの変更はこのイベントをトリガーしません。
ミーティング内 - オーディオマイクオン
(マイクミュート解除)
zr_microphone_unmuted 
ミーティング内 - オーディオマイクオフ
(マイクミュート)
zr_microphone_muted 
ミーティング内 - オーディオ選択したオーディオデバイスが変更されましたzr_audio_device_changedオーディオデバイスの変更イベントは、メインで選択したデバイスが変更された場合にのみトリガーされます。Danteマイクチャネルの変更は、このイベントをトリガーしません。
ミーティング内 - コンテンツワイヤレス共有が開始しましたzr_share_startedダイレクト共有、ホワイトボードカメラ共有、カメラ共有、Zoomアプリ共有、Apple Airplay(複数の同時共有の場合、最初のコマンドのみが送信されます)。Digital Signageはこれらのイベントをトリガーしません。
ミーティング内 - コンテンツワイヤレス共有が終了しましたzr_share_endedこのコマンドは、複数共有の最後が終了したときに送信されます。Digital Signageはこれらのイベントをトリガーしません。
ミーティング内 - コンテンツHDMI共有が開始しましたzr_hdmi_share_startedDigital Signageはこれらのイベントをトリガーしません。
ミーティング内 - コンテンツHDMI共有が停止しましたzr_hdmi_share_endedDigital Signageはこれらのイベントをトリガーしません。
ミーティング内 - レコーディングレコーディングが開始しましたzr_recording_started 
ミーティング内 - レコーディングレコーディングが停止しましたzr_recording_ended 
昇格ミーティングの昇格zr_elevate_to_meetingこのイベントは、Zoom Roomでテレフォニーまたは画面共有セッションが行われているときに、セッションをビデオミーティングに昇格するさせる場合にトリガーされます。
ペアリング
ペアリングユーザーがZRとペアリングされましたzr_user_paired各ユーザーは一般的なペアリングイベントをトリガーします。
ペアリングユーザーがZRとのペアリングを解除しましたzr_user_unpaired

すべてのユーザーのペアリング解除は、一般的なペアリング解除イベントをトリガーします。

Digital Signage
Digital SignageDigital Signageが開始しますzr_digital_signage_started 
Digital SignageDigital Signageが却下されましたzr_digital_signage_ended 
Whiteboard
WhiteboardWhiteboardが開きましたzr_whiteboard_startedクラシックWhiteboard、新しいWhiteboard、ミーティング内Whiteboardに適用されます
WhiteboardWhiteboardが終了しましたzr_whiteboard_endedクラシックWhiteboard、新しいWhiteboard、ミーティング内Whiteboardに適用されます
WhiteboardコンパニオンホワイトボードがZoom Roomに追加されましたzr_companion_whiteboard_connected 
WhiteboardコンパニオンホワイトボードがZoom Roomから削除されましたzr_companion_whiteboard_disconnected 
管理者
稼働時間稼働時間が開始しますzr_operation_time_started 
稼働時間稼働時間が終了しますzr_operation_time_ended 
ユーザー検出ユーザーが検出されましたzr_people_detectedハードウェアレイヤーユーザー検出のみに適用されます
ユーザー検出ユーザーが検出されませんでしたzr_people_not_detectedハードウェアレイヤーユーザー検出のみに適用されます
音声コマンド音声コマンドが有効になりましたzr_voice_command_on 
音声コマンド音声コマンドが無効になりましたzr_voice_command_off 
Zoom AppsZoomアプリが開きましたzr_zoom_app_opened任意のアプリを開くと、アプリがすでにミーティングで開いている場合でもこのイベントをトリガーします。
Zoom AppsZoomアプリが終了しましたzr_zoom_app_closed任意のアプリを閉じると、別のアプリがミーティングで動作中であっても、このイベントをトリガーします。
管理者ルームコントロールが開きましたzr_room_controls_opened 
管理者ルームコントロールが終了しましたzr_room_controls_closed 
管理者Zoom Roomsの起動が完了しましたzr_room_startup_completedZoom Roomの起動、ログイン、ルームコントロールの読み込みが完了しました

: 稼働時間イベントの稼働時間はZoom Rooms設定ページで設定します。

また、応答フィルタ用に独自のものを簡単に追加できます。ルールセクション内で、以下で説明するトリガーイベントを使用して、外部からの入力で独自の自動化を稼働させることもできます。

"rules":{
"operation_time_started":[
"light.power.on"
],
"user_customized_event1":[
"light.power.off"
]
}

この例では、「user_customized_event1」で、制御対象の照明をオフにします。これは、ボタンからの入力や、モーションセンサーが非アクティブになった場合や、予約システムのようなサードパーティシステムがミーティングにチェックインしたユーザーがいないことをルームに伝えることで作動するようにできます。この機能は、ユーザーの想像力次第でさまざまな用途に使用できます。

シーン

「シーン」はZoom Rooms 5.13.0の新機能です。これにより、ルームコントロール機能の愛用者は自身のユーザー体験にマクロ機能(単一ボタンにスタックされた複数のコマンド)を追加できるようになりました。これは、シーンリコールや、プロジェクター画面を下げる場合やプロジェクターの電源を入れるなど、依存デバイスに役立ちます。

ルールやアダプターと同様に、シーンはJSONファイルの最上位レベルのセクションです。現在、最大20のシーンを設定できます。これらのシーンでは、最大50の独立したコマンドがサポートされます。

一度設定すると、これらの新しいシーンボタンはルームコントロールウィンドウの上部に表示されます。

シーンを設定するには、下記のコードサンプルを参照してください。

このコンテンツをコピーする前に、'//text'セクションは参照用のメモであり、最終的なJSONファイルに含めることはできないことにご留意ください。

"scenes":[
{
"id":"scene_1", //required
"name":"Turn on all lights", //optional, shown if name and icon are empty
"icon":"icon_light", //optional, see icon list
"commands": [ //required
"light1.power.on",
"light2.power.on"
]
},
{
"id":"scene 2",
"name":"Turn off all lights"
"icon":"icon_light"
"commands": [
"light1.power.off",
"light2.power.off"
]
}
]

応答フィルタ

応答フィルタは、ルームコントロール機能における強力な進歩です。これらのフィルタは、定義されたデバイスから戻ってくるメッセージを読み取り、一致するフレーズを瞬時にスキャンします。このフレーズ(または式)がその接続で識別されると、(上記で説明されているように)ルールトリガーイベントの処理が開始します。

各応答フィルタは、以下の3つの要素で構成されます。

ルームコントロールの使用方法

Zoom Roomsコントローラで、[ルームコントロール] アイコンをタップすると、これらの追加機能にアクセスできます。

ミーティングに参加していない場合は、メインメニューにルームコントロールアイコンがあります。

ミーティング中、コントローラウィンドウの右上にあるアイコンをタップすると、同じルームコントロールが表示されます。

トラブルシューティング

トラブルシューティングは、カスタム設定において重要な部分です。ルームコントロールはシンプルですが、必要に応じて複雑にすることもできます。以下のセクションでは、潜在的な障壁を解決するのに役立ちます。

ルームコントロールのエラー

              

エラーコード説明
No_Config_ErrorJSONプロファイルがウェブポータルに読み込まれていません
Json_Syntax_ErrorJSONプロファイルに構文エラーが含まれています
Json_Config_ErrorJSONプロファイルに構成エラーが含まれています
IP_Error指定したIPへの接続で問題が発生しました
IP_Is_Public現在公開IPは許可されていません
DeviceID_Error1つ以上のデバイスIDが正しく設定されていません
MethodID_Error1つ以上のメソッドが正しく定義されていません
ParamID_Error1つ以上のパラメータが正しく定義されていません
IP2SL_Settings_ErrorGC IP2SLでシリアルポートが正しく設定されていません
Empty_Device_Error1つ以上のJSONプロファイルで定義されていないデバイスが呼び出されました
不明不明なエラーが発生しました

サンプルファイル

これらのファイルはさまざまなソースから集められており、開始点としてのみ使用してください。アプリケーションに適合させるために一部の修正が必要になる可能性があります。