Remote Control: Broadcast Schedulers

Last updated 7 August 2026

How to drive a broadcast scheduler from outside Backstage — arm or disarm the week plan, force a specific entry, and read what is playing now and next.

This page covers controlling a broadcast scheduler. Building the week plan is Use the Broadcast Scheduler.

Before you start

  • A broadcast scheduler exists, with entries in its week plan
  • Its name is settled — every route addresses it by name
  • You know the exact entry names if you intend to force one
  • For the protocol: Settings > Remote Control > Enable Show-Control Protocol is on (off by default)

JSON protocol — domain bcast

Send newline-delimited JSON to TCP 7400 (or UDP 7401 if enabled), with target set to the scheduler's exact name, case-sensitive.

Actions

Action

Args

Effect

list

Every broadcast scheduler in the project, each as a status object

status

The status object for one scheduler

enable

{"enabled": true|false}

Arm or disarm the scheduler. Disarmed, the week plan is still there but nothing fires from it

force

{"entry": "<entry name>"}

Run a specific entry now, regardless of what the plan says should be playing

clear

Drop a forced entry and hand control back to the plan

{"domain":"bcast","action":"list"}
{"domain":"bcast","action":"enable","target":"Foyer Plan","args":{"enabled":true}}
{"domain":"bcast","action":"force","target":"Foyer Plan","args":{"entry":"Closing Notice"}}
{"domain":"bcast","action":"clear","target":"Foyer Plan"}

force and clear are a pair. Forcing an entry overrides the schedule until you clear it — so a forced entry left in place will quietly keep overriding the plan the next day. Clear it as part of whatever ends the override.

Status

Field

Meaning

name

The scheduler's name — the sole identifier

enabled

Whether the scheduler is armed

state

What the scheduler is currently doing

activeEntry

The entry playing now

nextEntry

The entry due next

currentTime

The scheduler's own clock reading, which is what it evaluates the plan against

Live status

{"domain":"sys","action":"subscribe","args":{"domains":["bcast"]}}

Backstage pushes an immediate snapshot, an event on every change, and a heartbeat roughly every 3 seconds. activeEntry and nextEntry together make a "now and next" readout on a control surface with no polling.

Web Console — the Broadcast Scheduler block

Drop a Broadcast Scheduler block onto a Web Console page and an operator gets the week plan with its legend, the current time, and an enable toggle in a browser.

The week plan in this block is read-only — it shows the schedule rather than letting an operator edit it. The enable toggle is the control it offers. Editing the plan stays in the Broadcast Scheduler window.

Broadcast Scheduler (Node) binds by node label instead, so the block follows whichever scheduler that node currently drives.

Node editor

A broadcast scheduler is a show-control entity in the same shape as a stepper: the node in the graph is a thin reference to an entity created and programmed in the Broadcast Scheduler window, not a place to build the plan. Use it to bring the scheduler into show logic, or to let a graph re-point which scheduler a Web Console block follows.

For a command vocabulary of your own, build a patch that drives those inputs — the same approach as the StepperCommander patch, and equally your own convention rather than a standard.

Common Mistakes

  • 404 scheduler not foundtarget must match the name exactly, including case. Run bcast.list to read back the real names.

  • force silently does nothing — the entry name must match an entry in the plan exactly. Read the status, or the plan in the window, to confirm the spelling.

  • The plan stopped following the schedule — an entry is still forced. Send clear to hand control back.

  • Nothing fires even though entries exist — the scheduler is disarmed. Check enabled in the status rather than assuming.

  • Entries fire at the wrong time — compare currentTime in the status against the wall clock you expect. The scheduler evaluates the plan against its own clock reading.

Remote Control — the three routes, and every other controllable element

Use the Broadcast Scheduler — building and programming a broadcast scheduler

Enable and Configure the Show-Control Protocol — the protocol in full: transports, auth, allowlist, the reference client

Remote Control: Sequencers — the sequences a scheduler entry ultimately plays