Zoom Rooms · AV / Room Systemsintermediate

Zoom Rooms Controls profile for Q-SYS

A Zoom Rooms Controls JSON profile that drives a Q-SYS Core over the External Control Protocol (TCP 1702) — room mute, volume and scene presets on the Zoom Rooms controller, plus rules that fire on meeting start/end and microphone mute.

zoom-roomsq-sysroom-controlavecp

Preview

{
  "adapters": [
    {
      "model": "GenericNetworkAdapter",
      "ip": "tcp://192.168.1.50:1702",
      "ports": [
        {
          "id": "qsys_core",
          "name": "Room Audio",
          "methods": [
            {
              "id": "mute",
              "name": "Room Mute",
              "command": "csv RoomMute %\n",
              "params": [
                {
                  "id": "mute",
                  "name": "Mute",
                  "value": "1"
                },
                {
                  "id": "unmute",
                  "name": "Unmute",
                  "value": "0"
                }
              ],
              "type": "actions"
            },
            {
              "id": "volume",
              "name": "Volume",
              "command": "ct %\n",
              "params": [
                {
                  "id": "up",
                  "name": "Up",
                  "value": "RoomVolumeUp"
                },
                {
                  "id": "down",
                  "name": "Down",
                  "value": "RoomVolumeDown"
                }
              ],
              "type": "actions"
            },
            {
              "id": "scene",
              "name": "Scene",
              "command": "ct %\n",
              "params": [
                {
                  "id": "meeting",
                  "name": "Meeting",
                  "value": "SceneMeeting"
                },
                {
                  "id": "off",
                  "name": "Room Off",
                  "value": "SceneOff"
                }
              ],
              "type": "actions"
            }
          ]
        }
      ]
    }
  ],
  "styles": [
    "qsys_core.main_method=mute",
    "qsys_core.volume.up.icon=icon_up",
    "qsys_core.volume.down.icon=icon_down"
  ],
  "rules": {
    "meeting_started": [
      "qsys_core.scene.meeting"
    ],
    "meeting_ended": [
      "qsys_core.scene.off"
    ],
    "microphone_muted": [
      "qsys_core.mute.mute"
    ],
    "microphone_unmuted": [
      "qsys_core.mute.unmute"
    ]
  }
}

AI actions

Documentation

Purpose

Give the Zoom Rooms controller native buttons for your Q-SYS room — mute, volume, scene presets — and automate them on Zoom events, without a separate control processor.

When to use

A Zoom Room whose audio/video is handled by a Q-SYS Core. The Core runs a design with the controls you want exported as Named Controls; this profile is pasted into the Zoom web portal under Room Management → Zoom Rooms → Edit → Devices → Enable Room Controls → Create Profile.

Required fields

  • adapters — one entry per control endpoint; for Q-SYS use model "GenericNetworkAdapter"
  • adapters[].ip — "tcp://<core-ip>:1702" (the Q-SYS ECP port; private IPs only)
  • adapters[].ports[] — the device: unique id, name and its methods
  • ports[].methods[] — id, name, command, type ("action" or "actions" with params)

Optional fields

  • methods[].params — choices substituted for % in command (e.g. 1/0 for mute)
  • styles — main button, names and icons, e.g. "qsys_core.main_method=mute"
  • rules — Zoom events → device commands: meeting_started, meeting_ended, microphone_muted, microphone_unmuted, video_started, video_stopped, operation_time_started, operation_time_ended

Best practices

  • Export every control the profile uses as a Named Control in Q-SYS Designer — ECP addresses controls by that exact, case-sensitive name.
  • End each ECP command with \n (LF). A \r before it is ignored, so \r\n also works.
  • Use % in command plus params for on/off or up/down variants instead of duplicating methods.
  • Keep model exactly "GenericNetworkAdapter" — Zoom only accepts iTachIP2SL, iTachIP2CC and GenericNetworkAdapter.
  • Test commands with a telnet session to the Core on port 1702 before pasting the profile into Zoom.

Security considerations

  • Zoom rejects public IP addresses in a profile — keep the Core on the room network.
  • Anything that can reach TCP 1702 on the Core can send control commands unless Core access control requires an ECP login — keep the Core on a restricted room network/VLAN.
  • Control is one-way: Zoom sends commands but does not read Q-SYS state back, so buttons do not show live status.