Skip to content
Innomesh Docs
Room Manager Since v2.24.0

Visibility Condition

❗ Important
This feature is available to specific clients only. A user interface update may be required to enable it in your tenancy. Contact your Account Manager for details regarding feature compatibility and potential costs.

A Visibility Condition is an optional boolean expression on a UI-facing object in the room configuration. Space CE evaluates it against live room, manager and device state: while the expression is false the object is hidden on the touch panel, and when a state the expression references changes, the panel updates immediately. Leave the field empty for always visible. That is the default, so existing rooms behave exactly as before.

FieldTypeRequiredDescription
Visibility ConditionstringNoBoolean expression over live state. The object is hidden while it evaluates to false. Empty means always visible.

Where it applies

The field is accepted on objects in these configuration sections:

  • AV Sources
  • AV Destinations: Displays, Preview, Auxiliary, Destination Groups
  • Audio Sources: Program Audio, Microphones, Auxiliary Audio, Advanced Audio
  • Camera Sources
  • Document Camera Sources
  • Media Player Controls: Media Players
  • IPTV Controls: IPTVs
  • Timer Controls: Timers
  • Lighting: Presets, Channel Presets, Faders, Toggles
  • Blinds
  • HVAC: Zones
  • Bluetooth Controls: Sinks
  • Microphone Stations: Receivers
  • Room Link: Secondary Rooms

Writing conditions

A condition reads state through paths of the form binding.Property. The binding names the publisher, the property names the state. Deeper paths are not allowed.

The property names, their types, and the keys for keyed states are the states listed on Available States. Each binding reads the states published under one of the guids on that page:

BindingReads states published under
roomroom
audioaudio.manager
videovideo.manager
cameracamera.manager
documentcameradocument.camera.manager
mediaplayermedia.player.manager
roomlinkroom.link.manager
sensorsensor.manager
podspod.manager
hvachvac.manager
recordrecord.manager
conferencingconferencing.manager
timertimer.manager

To read a specific device instead of a manager, use devices["<device id>"].Property, where the ID is the device’s ID from the Devices section of the room configuration, for example devices["dev.display.1"].PowerIsOn. A device binding reads the states the Available States page lists for that device type.

Operators

OperatorDescription
&& || !Logical AND, OR and NOT over booleans.
( )Parentheses group expressions and control evaluation order.
== !=Equality and inequality on strings, booleans and integers, such as devices["dev.timer.1"].CurrentStatus == "Running".
["key"]Reads one entry of a keyed (dictionary) state by its quoted key, such as room.SourceIsSelected["source.pc"].

Literals

TypeExamples
booleantrue, false (lowercase)
string"Presentation" (double quotes)
integer50 (no negatives)

Behaviour

  • Live re-evaluation. Each condition tracks exactly the states it references. When one of them updates, Space CE re-evaluates the condition, and if the result changed it pushes the updated list to the panel so the object appears or disappears immediately.
  • Fail visible. A malformed, ill-typed or unresolvable condition is rejected when the configuration loads, with an error in the CE logs, and the object stays visible. A condition that errors at runtime, for example one referencing a manager the room does not have, is logged once and reads as visible. A misconfigured condition can never hide controls, only leave them shown.
  • Only published states re-evaluate. A condition can only track states that Space CE publishes. A property that never publishes never triggers re-evaluation, which is why paths are restricted to binding.Property.
  • Grouped destinations. Where the panel shows one entry per destination type, that entry stays visible while any destination of that type is visible.

Examples

Show a source only while the room is on and in Presentation mode. On an AV Source:

{
  "ID": "source.pc",
  "Disable": false,
  "Label": "Resident PC",
  "Type": "Computer",
  "Has Audio": true,
  "Visibility Condition": "room.PowerIsOn && room.RoomMode == \"Presentation\"",
  "Input Switch": [
    {
      "ID": "input.switch.1",
      "Switcher ID": "dev.switcher.1",
      "Input": "Hdmi1",
      "Type": "AudioVideo"
    }
  ]
}

Tie a destination to another display’s power state. On a Display, using the device binding:

{
  "ID": "dest.secondary",
  "Disable": false,
  "Label": "Secondary Display",
  "Type": "Main Display",
  "Device ID": "dev.display.2",
  "Default Input": "Hdmi1",
  "Visibility Condition": "devices[\"dev.display.1\"].PowerIsOn",
  "Output Switch": [
    {
      "ID": "switch.1",
      "Switcher ID": "dev.switcher.1",
      "Output": "Hdmi1",
      "Type": "AudioVideo"
    }
  ]
}

Hide a timer outside Presentation mode. On a Timer:

{
  "ID": "timer.lecture",
  "Disable": false,
  "Device ID": "dev.timer.1",
  "Visibility Condition": "room.RoomMode == \"Presentation\""
}

Show an audio channel only while the PC source is selected. On an Auxiliary Audio channel, using dictionary access on a keyed state:

{
  "ID": "audio.pc",
  "Disable": false,
  "Name": "PC Audio",
  "Visible": true,
  "Visibility Condition": "room.SourceIsSelected[\"source.pc\"]",
  "Level": {
    "Device ID": "dev.dsp.1",
    "Block ID": "block:level:pc",
    "Channel ID": "1",
    "Minimum": -40,
    "Maximum": 0,
    "Default": 80
  },
  "Mute": {
    "Device ID": "dev.dsp.1",
    "Block ID": "block:mute:pc",
    "Channel ID": "1"
  }
}
📝 Note
Space CE has three unrelated condition features with different grammars. A macro trigger Condition combines the macro’s own trigger IDs, see Conditional Macro. A routing Condition on AV Sources and Input Switches compares routing context strings, see Conditional Routing.