Skip to content
Innomesh Docs
Room Manager Since v2.18.0

Conditional Routing

Conditional routing lets you attach an expression to a source or to an individual input switch that decides whether a route runs. Every time Space CE executes a route for that source, it evaluates the expression against where the source is being sent. If the expression is true (or empty), the route proceeds; if it is false, the source is not routed there.

There is no separate configuration section: Condition is a string field on an AV Source object and on each Input Switch object.

  • On an AV Source, the condition affects every route for that source.
  • On an Input Switch, the condition applies only to that switch, and both the source’s condition and the switch’s own must pass.

Condition identifiers

An expression can reference the identifiers below. All values are strings and comparisons are case-sensitive.

IdentifierMeaning
DestinationTypeThe Type of the destination being routed to (e.g. Main Display, Preview).
DestinationIdThe ID of the specific AV Destination being routed to.
OutputSwitchIdThe ID of the destination’s output switch during matrix routing.
DestinationGroupIdThe ID of the destination group that initiated the route.

Operators

The expression language supports only the following: string equality, boolean logic, and parentheses.

OperatorDescription
== !=Equality and inequality between two strings.
&& || !Logical AND, OR and NOT over comparisons.
()Parentheses group expressions and control evaluation order.

Each side of a comparison is either an identifier (such as DestinationId) or a double-quoted string (such as "destination.capture").

Behaviour

  • Conditions run when a route runs. They are not re-evaluated when room state later changes; for behaviour that reacts to state changes, use Macros.
  • All the normal routing paths are gated identically: panel selection, destination group shares, macro routing actions, Default Routes and Hot Plug Routes.
  • Deselecting a source is never gated: routing Off / None always succeeds.
  • Room link shares are not currently gated. A source shared from a linked room routes unconditionally in the receiving room.
  • A condition on DestinationType or DestinationGroupId blocks the whole selection. A condition on DestinationId or OutputSwitchId skips just that destination or output.
  • Conditions fail open. A malformed expression is logged and ignored, and routing proceeds as if no condition were set.

Worked condition expressions

Block a source from two named destinations. Prevent a PC source from routing to the lecture-capture and breakaway-audio destinations:

{
  "ID": "source.pc.left",
  "Label": "Left PC",
  "Type": "Computer",
  "Condition": "(DestinationId != \"destination.capture\") && (DestinationId != \"destination.aux.audio\")"
}

Recall a DSP preset only for non-preview destinations. Put this on the input switch that performs the preset recall, so it fires everywhere except preview monitors:

{
  "ID": "input.switch.dsp",
  "Switcher ID": "dev.dsp.1",
  "Type": "Preset Recall",
  "Value": "preset.presentation",
  "Condition": "DestinationType != \"Preview\""
}

Restrict a switch to a single destination type. Fire a camera preset recall only when routing to a Main display:

{
  "ID": "input.switch.ptz.main",
  "Switcher ID": "dev.camera.1",
  "Type": "Preset Recall",
  "Value": "preset.presenter",
  "Condition": "DestinationType == \"Main Display\""
}

Exclude one member from a group share. During an “All Displays” group share, route to every member except the second projector; direct routes to that projector are unaffected because DestinationGroupId is "none" for them:

{
  "ID": "source.pc.1",
  "Label": "PC",
  "Type": "Computer",
  "Condition": "(DestinationGroupId != \"dest.group.all.displays\") || (DestinationId != \"destination.projector.2\")"
}
📝 Note
Space CE has three unrelated condition features with different grammars. This page covers routing conditions. A macro trigger Condition combines the macro’s own trigger IDs, see Conditional Macro. A Visibility Condition hides and shows UI objects from live room state, see Visibility Condition.