ルーム コントロール機能を使用すると、サードパーティ製 IP 対応機器を制御することができ、ユーザーがZoom ルーム コントローラで機器を制御できるようになります。 管理者は、構成プロファイルを作成して、Zoom Room からの発信 IP 制御メッセージを追加できます。
この記事の内容:
JSON 構成プロファイルをアップロードする前に、設定を Zoom Rooms で有効にする必要があります。これは、Zoom Rooms 階層の任意のレベルで構成できます。
ルーム コントロール プロファイルを作成する前に、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": "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 コマンドはシンプルです。
注: 作業時間は、Zoom Rooms 設定ページで設定します。
また、応答フィルター用に独自のユーザーを追加することも簡単です。ルール セクション内では、以下で説明するトリガーイベントを使用して、外部入力で独自のオートメーションを実行することもできます。
"rules":{
"operation_time_started":[
"light.power.on"
],
"user_customized_event1":[
"light.power.off"
]
}
この例では、"user_customized_event1" で、制御対象の照明をオフにします。これは、ボタンからのインプットや、モーション センサーが非アクティブになったり、予約システムのようなサードパーティ製のシステムがミーティングのためにチェックインしているユーザーがいないという最新情報をルームに送信したりすることで、作動します。この機能の使用方法は、想像力許す限り考えられます。
応答フィルターにより、Zoom Rooms ネイティブ ルーム コントロール機能は強力に進歩しました。応答フィルターは、定義されたデバイスから返ってくるメッセージを読み取り、一致するフレーズを瞬時にスキャンします。この句(または式)がその接続で識別されると、ルール トリガー イベント(上記)が発生します。
各応答フィルターは、次の 3 つの要素で構成されます。
ルーム コントローラ デバイスで、ルーム コントロール アイコンをタップするだけで、これらの追加機能にアクセスできます。
ミーティングに参加していない場合は、メイン メニューにルーム コントロール アイコンが表示されます。
ミーティング中は、コントローラの右上にあるアイコンをタップすると、同じルーム コントロールが表示されます。
トラブルシューティングは、カスタム構成の重要な部分です。ルーム コントロールはシンプルですが、柔軟性があり、必要に応じて複雑にもなります。以下のセクションは、起こりうる障害を解決するのに役立つはずです。
エラーコード | 説明 |
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 | 不明なエラーが発生しました |
これらのファイルはさまざまなソースから集められており、開始点としてのみ使用してください。アプリケーションに合わせて何らかの変更が必要になる可能性があります。