房间控制功能可让您控制具有 IP 功能的第三方设备,这样用户就可以通过 Zoom Room 控制器控制这些设备。管理员可以创建配置文件,添加来自 Zoom Room 的外发 IP 控制信息。
注意: 如果您将房间控制用于音频/视频 (A/V),则可以为 Zoom Rooms 中带有多个 NIC 的计算机分配单独的网络接口卡 (NIC)。可以从连接到备用网络的房间控制设备中独立选择网卡,这些设备连接到启用了 Zoom Rooms 的计算机上。这种配置可以使音频/视频流量远离主网络。
在上传 JSON 配置文件之前,需要为 Zoom Room 启用该设置。
在编写房间控制配置文件之前,需要对 JSON 有一定的了解。需要注意的要点是,JSON 是一个基于键:值对的系统,语法对于正确布局文件非常重要。有关 JSON 基础知识的其他信息,请参考在线入门课程。
在任何编码语言中,都应该对处理您文件的下一个人给予一些礼遇。虽然对房间控制没有具体要求,但建议这样做。要留下作者、版本或其他历史记录,可以使用 "关于 "对象,并将其置于 "适配器 "之上。房间控制软件不会对其进行解析,但会保留在门户网站中。 下面举例说明如何加以利用。
{
"关于" :{
"类型" :"中型会议 A" 、
"版本":"v1.2.4" 、
"design_ref":"\files\MediumConfA" 、
"created" :"Mon, 21 Oct 2020 16:35:52 GMT"
},
设置适配器可将房间控制器连接到设备。本部分是配置的主要部分。嵌套 JSON 格式内的各个设备应遵循类似的格式(本示例的嵌套与下面的代码示例类似):
{
"适配器" :[
{
"型号":"iTachIP2SL" 、
"IP":"[IP_ADDRESS]" 、
"uuid" :"GlobalCache_[UNIT_MAC_ADDRESS]" 、
"ports" :[
{
"id":"sl_sharp_tv" 、
"name":"Sharp Display" 、
"settings" :{
"波特率" :"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"
}
],
"类型":"操作"
},
...
在 "方法 "下面,可以使用一个附加部分:"response_filter".响应过滤器是一种信标,可让下面定义的响应过滤器了解要监听的连接。该区域未定义任何功能。响应式筛选器如何与其他部分配合,将在这些部分中介绍。
样式控制界面元素的视觉样式。调整的范围不是很大,所以学习起来并不难。
界面上有许多图标。从空调到免提电话,应有尽有。以下图标为当前列表,但该列表会定期扩充。
设备 | 名称 | 图片 |
空调 | 图标_空调 | ![]() |
有线电视 | 图标_有线电视 | ![]() |
天花板麦克风 | 天花板麦克风图标 | ![]() |
帷幕 | 图标窗帘 | ![]() |
DVD 播放器 | 图标 DVD 播放器 | ![]() |
Xbox/PS4 系统 | 游戏控制台图标 | ![]() |
HDMI | 图标_hdmi | ![]() |
笔记本电脑 | 图标_笔记本电脑 | ![]() |
轻 | 图标 | ![]() |
投影仪 | 图标投影仪 | ![]() |
机架设备 | 设备图标 | ![]() |
卫星天线 | 卫星菜图标 | ![]() |
扬声器 | 图标 | ![]() |
免提电话 | 图标_扬声器电话 | ![]() |
电视 | 图标_电视 | ![]() |
权力 | 图标 | ![]() |
向上 | 图标向上 | ![]() |
下来 | 图标向下 | ![]() |
冷 | 图标_冷 | ![]() |
热的 | 热图标 | ![]() |
干式 | 图标_干燥 | ![]() |
风电 | 图标_风 | ![]() |
样式中有三个主要修改器:图标(如上文所述)、主要方法和可见性。
图标是系统的可视化。您可以用它们来标记设备或替换按钮上的文本。在下面的示例中,我们定义了一个名为 "example "的设备。
{
"适配器" :[
{
"模型" :"ExternalControlSystem" 、
"IP":"tcp://[USER_IP_ADDRESS]:[USER_PORT]" 、
"端口" :[
{
"id":"示例" 、
"name":"Example Device" 、
"方法": [
...
将 "example "定义为设备后,我们就可以在样式中使用该 ID。 例如,我们可以轻松地将示例设备的主图标设置为一盏灯。
"样式": [
"example.icon=icon_light" 、
"example.main_method=power"
]
Zoom 还支持 Material Design Icons (MDI),可在Google 的 MDI 官方网站上找到。
要指定其中一个图标,请遵循以下格式:
"example.icon=mdi:local_airport:two_tone"
请注意,应全部使用小写字母。在图标名称中使用下划线 (_) 代替空格。如果无法下载图标,将显示默认图标。
您可能还会注意到,在这一行中,我们还定义了设备的主方法(Main Method)。 主方法会将您定义的引用命令拉到设备的标题栏中,并将其放在显眼的位置,就像这样:
我们将电源命令定义为主方法,因此它显示在上栏,与其他命令分开。
第三种样式是可见性。可见性允许程序员定义一个函数,但在用户界面上完全隐藏该函数。 它的定义也同样简单:
"example.power.invisible=true"
遵循"device.command.invisible=true 的格式"允许对房间用户完全隐藏该命令。
规则是室内控制的自动化引擎。在这一领域,自行发生的事情会被定义。例如,如果我想让我的显示屏只在会议激活时才激活,我可以利用"meeting_started" 和"meeting_ended" (Zoom 库存事件)来实现这一点。
"规则" :{
"meeting_started" :[
"display.power.on" 、
"唤醒摄像机"
]
),
"meeting_ended" :[
"display.power.off"
]
}
此示例可用于降低系统功耗。
如果每条规则只有一条命令还不够,这些命令可以很容易地叠加在一起。虽然从技术上讲,它们是按顺序触发的,但它们的处理速度很快,因此我们认为这些事件是同时发生的。在上述示例中,"camera.power.wake" 添加到"display.power.on" 下方,以便在显示器唤醒时激活摄像头。
注意:
类型 | 活动 | 字符串 | 说明 |
会议 | |||
会议 | 会议开始 | 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 | 适用于直接共享、白板摄像头共享、摄像头共享、缩放应用程序共享和 Apple Airplay(对于多路同时共享,只发送第一条命令)。数字标牌不会触发这些事件。 |
内部会议 - 内容 | 无线共享 | zr_share_ended | 当多个共享中的最后一个共享结束时,将发送该命令。 数字标牌不会触发这些事件。 |
内部会议 - 内容 | 开始 HDMI 共享 | zr_hdmi_share_started | 数字标牌不会触发这些事件。 |
内部会议 - 内容 | HDMI 共享已停止 | zr_hdmi_share_ended | 数字标牌不会触发这些事件。 |
会中会议 - 录音 | 开始录制 | zr_recording_started | |
会中会议 - 录音 | 录音停止 | zr_recording_ended | |
海拔 | 会议标高 | zr_elevate_too_meeting | 当参与电话或屏幕共享会话的 Zoom Room 将会话提升为视频会议时,就会触发该事件。 |
配对 | |||
配对 | 与 ZR 配对的用户 | zr_user_paired | 每个用户都会触发一个通用配对事件。 |
配对 | 从 ZR 取消配对的用户 | zr_user_unpaired |
所有未配对的用户都将触发一个通用的未配对事件。 |
数字标牌 | |||
数字标牌 | 数字标识开始 | zr_digital_signage_started | |
数字标牌 | 数字标牌被驳回 | zr_digital_signage_ended | |
Zoom Whiteboard | |||
Zoom Whiteboard | 电子白板启用 | zr_whiteboard_started | 适用于经典白板、新白板和会内白板 |
Zoom Whiteboard | 封闭式电子白板 | zr_whiteboard_ended | 适用于经典白板、新白板和会内白板 |
Zoom Whiteboard | 在 Zoom 房间中添加同伴白板 | zr_companion_whiteboard_connected | |
Zoom Whiteboard | 从 Zoom 房间移除同伴白板 | 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 Apps | 打开 Zoom 应用程序 | zr_zoom_app_opened | 打开任何应用程序都会触发该事件,即使会议中已经打开了一个应用程序。 |
Zoom Apps | Zoom 应用程序已关闭 | zr_zoom_app_closed | 关闭任何应用程序都会触发此事件,即使会议中仍有其他应用程序处于活动状态。 |
管理员 | 房间控制器已打开 | zr_room_controls_opened | |
管理员 | 房间控制关闭 | zr_room_controls_closed | |
管理员 | Zoom Rooms 启动完成 | zr_room_startup_completed | Zoom 房间启动、登录和房间控制加载完成 |
注意:操作时间事件的操作时间在 Zoom Rooms 设置页面中设置。
也可以简单地添加自己的响应过滤器。在规则部分,您还可以使用下面讨论的触发事件,通过外部输入驱动自己的自动化。
"规则":{
"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 文件中。
"场景":[
{
"id":"scene_1", //required
"name":"Turn on all lights", //optional, shown if name and icon are empty
"图标":"icon_light", //可选,参见图标列表
"命令" :[ //必须
"light1.power.on" 、
"light2.power.on"
]
},
{
"id":"scene 2" 、
"名称":"关闭所有灯光"
"图标":"icon_light"
"命令" :[
"light1.power.off" 、
"light2.power.off"
]
}
]
响应滤波器是室内控制功能的一大进步。这些过滤器会读取从指定设备返回的信息,并即时扫描匹配的短语。当在该连接上识别到该短语(或表达式)时,就会触发规则触发事件(如上所述)。
每个响应过滤器都由三个要素组成:
在 Zoom Rooms 控制器上,只需轻点房间控制 图标,即可访问这些新增功能。
不开会时,可在主菜单中找到会议室控制图标。
会议期间,点击控制器窗口右上方的图标将显示相同的会议室控制。
故障排除是任何自定义配置的重要组成部分。虽然室内控制可以很简单,但在需要时也可以很灵活地变得复杂。以下部分应有助于解决可能出现的障碍。
错误代码 | 说明 |
无配置错误 | 门户网站未加载 JSON 配置文件 |
Json_Syntax_Error | JSON 配置文件包含语法错误 |
Json_Config_Error | JSON 配置文件包含配置错误 |
IP_Error | 连接指定 IP 存在问题 |
IP_Is_Public | 目前不允许使用公共 IP |
设备 ID_Error | 一个或多个设备 ID 设置错误 |
方法 ID_Error | 一个或多个方法的定义不正确 |
参数 ID_Error | 一个或多个参数定义不正确 |
IP2SL_Settings_Error | GC IP2SL 上的串行端口配置不正确 |
空设备错误 | 在 JSON 配置文件中未定义的情况下调用了一个或多个设备 |
未知 | 出现未知错误 |
这些文件是从各种来源汇编而来的,仅供参考。可能需要进行一些改动才能适合您的应用。