ルーム コントロール
最終更新日:
概要
ルーム コントロール機能を使用すると、サードパーティ製 IP 対応機器を制御することができ、ユーザーがZoom ルーム コントローラで機器を制御できるようになります。 管理者は、構成プロファイルを作成して、Zoom Room からの発信 IP 制御メッセージを追加できます。
この記事の内容:
前提条件
- macOS または Windows 用 Zoom Rooms、またはZoom Rooms 専用ハードウェア(バージョン 5.1 以降)
- LAN または WLANによって制御可能なサードパーティ製デバイス
- デバイスにネイティブ LAN または WLAN アクセスがない場合は、iTach ネットワーク アダプタ(IP2SL/IP2CC または WiFi に相当するもの)
構成
ルーム コントロールを有効化する
JSON 構成プロファイルをアップロードする前に、設定を Zoom Rooms で有効にする必要があります。これは、Zoom Rooms 階層の任意のレベルで構成できます。
- Zoom ウェブポータルにサインインします。
- [ルーム管理] をクリックし、[Zoom Rooms] を選択します。
- Zoom Room 名の右側にある [編集] をクリックします。
- [デバイス] で、[ルーム コントロールを有効にする] をオン(青)に切り替えます。
- [プロファイルの作成] をクリックします。
- このルームの JSON 構成を入力します。
ルーム コントロール プロファイルを作成する
はじめに
ルーム コントロール プロファイルを作成する前に、JSON に関する一部の実用知識が必要です。注意すべき重要な項目は、JSON はキー/値ペアベースのシステムであり、ファイルを正しくレイアウトするためには構文が重要だということです。JSON の基礎についての詳細は、 オンライン イントロコースを参照してください。
どんなコーディング言語でも、ファイルを処理する次の人に失礼のないようにする必要があります。Zoom Rooms ネイティブ ルーム コントロールにおいて具体的な要件はありませんが、そうすることが推奨されます。作成者、バージョン、その他の履歴の記録を残すために、'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: "GenericNetworkAdapter"、"IP2CC"、"IP2SL" にすることができます。詳細は以下を参照してください。
- IP: ネットワーク デバイスの IP アドレス + ポートです
- UUID: Global Caché デバイスでのみ必要で、"GlobalCache_[MAC]" に従います。
- Ports: ポートは接続に取り付けられたデバイスを定義します。
- ID: コード内のデバイスの名前です。JSON 変数のフォーマットに従う必要があります。
- Name: インターフェースでユーザーに表示されるフレンドリ名です。
- Methods: 個々の UI セクションを定義します。
- ID: コードで呼び出されるコントロール タイプ ID です(コントロールタイプに固有)。
- Name: Zoom Rooms インタフェースに表示されるユーザーがアクセス可能な名前です。
- Command: アクション タイプに応じて、コマンド文字列の完全なコマンドまたは共有部分のいずれかです。
- 注: アクション タイプが 'actions' の場合、コマンド文字列に % を 'params' 内に挿入された要素のプレースホルダーとして配置する必要があります。
- Params: このセクションは 'actions' タイプでのみ使用され、親コマンドにロールアップできる要素が含まれています。
- ID: コードで呼び出されるプログラミング ID です。
- Name: ルーム コントロール ボタンでユーザーがアクセスできるテキストです。
- Value: 親コマンドに挿入されるコマンド セクションです。たとえば、親コマンドとして 'POWR000%\\x0D' を使用し、一部のシャープ ディスプレイに [オフ] に '0' または [オン] に '1' を挿入する場合があります。
{
"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 | ![]() |
HDMI | icon_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 | ![]() |
スタイルには、アイコン(上記参照)、main メソッド、可視性という 3 つの主要な修飾子があります。
アイコンは、システムを視覚化したものです。デバイスをマークしたり、ボタンに関連付けられたテキストを置き換えたりするために使用できます。 以下の例は、'example' というデバイスを定義しています。
{
"adapters": [
{
"model": "ExternalControlSystem",
"ip": "tcp://[USER_IP_ADDRESS]:[USER_PORT]",
"ports": [
{
"id": "example",
"name": "Example Device",
"methods": [
...
'example' がデバイスとして定義されると、この ID をスタイル内で使用できます。例えば、例にしたデバイスの メインアイコンを照明に設定するのは簡単です。
"styles": [
"example.icon=icon_light",
"example.main_method=power"
]
また、お気づきかもしれませんが、1 行以内にデバイスの main メソッドも定義されています。main メソッドは、デバイスのタイトルバーに定義した参照先のコマンドをプルして、次のような請求を行います。
電源コマンドを main メソッドとして定義したので、他のコマンドとは別の上のバーに表示されます。
3 番目のスタイルタイプは可視性です。 可視性により、プログラマーは関数を定義できますが、その関数をユーザー インタフェースから完全に隠すことができます。以下のように、簡単に定義できます。
"example.power.invisible=true"
"example.power.invisible=true" の形式に従うと、このコマンドをRooms ユーザーから完全に非表示にできます。
ルール
ルールはルーム コントロールのオートメーション エンジンです。これは、自然に起こることが定義されている領域です。たとえば、ミーティングがアクティブなときにのみディスプレイをアクティブにしたい場合は、"meeting_started" と "meeting_ended"(ストック Zoom イベント)を利用して、実現できます。
"styles": {
"meeting_started": [
"display.power.on",
"camera.power.wake"
]
),
"meeting_ended": [
"display.power.off"
]
}
この例を使用すると、システムの電力消費を削減できます。
ルールごとに 1 つのコマンドでは足りない場合、コマンドを簡単にスタックできます。各コマンドは技術的には順番に発生しますが、各イベントが同時に発生しているとみなせるほど迅速に処理します。上記の例では、ディスプレイが起動するときにカメラをアクティブにするために、"display.power.on" の下に "camera.power.wake" を追加しています。
現在、ルール内で利用可能なストック Zoom コマンドはシンプルです。
- ミーティング イベント
- "meeting_started"
- "meeting_stopped"
- オーディオ イベント
- "microphone_muted"
- "microphone_unmuted"
- ビデオイベント
- "video_started" (camera unmuted)
- "video_stopped" (camera muted)
- 管理イベント
- "operation_time_started"
- "operation_time_ended"
注: 作業時間は、Zoom Rooms 設定ページで設定します。
また、応答フィルター用に独自のユーザーを追加することも簡単です。ルール セクション内では、以下で説明するトリガーイベントを使用して、外部入力で独自のオートメーションを実行することもできます。
"rules":{
"operation_time_started":[
"light.power.on"
],
"user_customized_event1":[
"light.power.off"
]
}
この例では、"user_customized_event1" で、制御対象の照明をオフにします。これは、ボタンからのインプットや、モーション センサーが非アクティブになったり、予約システムのようなサードパーティ製のシステムがミーティングのためにチェックインしているユーザーがいないという最新情報をルームに送信したりすることで、作動します。この機能の使用方法は、想像力許す限り考えられます。
応答フィルター
応答フィルターにより、Zoom Rooms ネイティブ ルーム コントロール機能は強力に進歩しました。応答フィルターは、定義されたデバイスから返ってくるメッセージを読み取り、一致するフレーズを瞬時にスキャンします。この句(または式)がその接続で識別されると、ルール トリガー イベント(上記)が発生します。
各応答フィルターは、次の 3 つの要素で構成されます。
- "name": 名前は "methods" の "ports" セクションで使用されます。応答フィルターが "ports" 領域のこの名前と一致すると、定義された接続にまたがって処理が開始されます。
- "filter_regex": regax(正規表現)は、応答フィルターが一致させようとしている文字のセットです。一致が発生すると、"trigger_event" がアクティブになります。
- "trigger_event": トリガー イベントはルール セクション内で使用されます。"filter_regex" がアクティブになると、ルール内のこのトリガー イベント内で定義されたオートメーションが発生します
ルーム コントロールを使用する
ルーム コントローラ デバイスで、ルーム コントロール アイコンをタップするだけで、これらの追加機能にアクセスできます。
ミーティングに参加していない場合は、メイン メニューにルーム コントロール アイコンが表示されます。
ミーティング中は、コントローラの右上にあるアイコンをタップすると、同じルーム コントロールが表示されます。
トラブル シューティング
トラブルシューティングは、カスタム構成の重要な部分です。ルーム コントロールはシンプルですが、柔軟性があり、必要に応じて複雑にもなります。以下のセクションは、起こりうる障害を解決するのに役立つはずです。
ルーム コントロールにおけるエラー
エラーコード | 説明 |
No_Config_Error | JSON プロファイルが ウェブポータルに読み込まれていません |
Json_Syntax_Error | JSON プロファイルに構文エラーが含まれています |
Json_Config_Error | JSON プロファイルに構成エラーが含まれています |
IP_Error | 指定された IP への接続中に問題が発生しました |
IP_Is_Public | 現時点ではパブリック IP は許可されていません |
DeviceID_Error | 1 つ以上のデバイス ID が正しく設定されていません |
MethodID_Error | 1 つ以上のメソッドが正しく定義されていません |
ParamID_Error | 1 つ以上のパラメータが正しく定義されていません |
IP2SL_Settings_Error | GC IP2SL でシリアルポートが正しく設定されていません |
Empty_Device_Error | JSON プロファイルで定義されていない 1 つ以上のデバイスが呼び出されています |
Unknown | 不明なエラーが発生しました |
サンプル ファイル
これらのファイルはさまざまなソースから集められており、開始点としてのみ使用してください。アプリケーションに合わせて何らかの変更が必要になる可能性があります。
- 汎用ファイル
- Avocor
- Middle Atlantic
- Shure
Zoom コミュニティ
Zoom コミュニティの 100,000 人のメンバーの一員になってください! Zoom アカウントの認証情報でログインして、コラボレーションを始めましょう。