Control Pane

The Control pane is a SCADA-style operator console for issuing commands and monitoring live values. It supports 8 widget types arranged in a grid layout with optional tabbed sections. Every button press is captured by TAI for interaction mining.

Widget Types

WidgetBehavior
ButtonMomentary push — fires a command on click, resets immediately
ToggleLatching on/off switch — maintains state between clicks
SliderLinear range input with configurable min/max and step
Gauge240-degree arc indicator for analog values with threshold zones
DialFull circular input for rotational values
StatusLightColored indicator dot with glow effect — driven by thresholds
ValueDisplayLarge numeric readout for key metrics with unit label
SeparatorVisual section divider for organizing widget groups

WidgetSpec Properties

  • type: WidgetType — One of the 8 widget types above
  • label: String — Display name shown above the widget
  • value_binding: String — Entity field path for live data push
  • column_span: u8 — Grid columns to occupy (auto-wraps)
  • min / max: f64 — Range bounds for Slider, Gauge, and Dial
  • unit: String — Unit suffix (e.g., "rpm", "PSI")
  • thresholds: Vec<Threshold> — Color breakpoints for Gauge and StatusLight
  • color_accent: ColorPreset — One of 7 presets (cyan, green, amber, red, violet, blue, white)

Layout

  • Grid Packing: Widgets fill columns left-to-right; column_span controls width
  • Tabbed Layout: Optional TabSpec groups widgets into named tabs
  • Live Data: Values arrive via push_value; unbound widgets show demo fallback values

Keyboard Shortcuts

Navigation
Tab
Cycle focus between widgets
Shift + Tab
Cycle focus backward
Enter
Activate focused widget
Esc
Release widget focus
Tabs
Ctrl + 1
Switch to tab 1
Ctrl + 2
Switch to tab 2
Ctrl + 3 + + 9
Switch to tabs 3–9

YAML Configuration

yaml ControlConfig auto-generated

Field Type Default Description
title String "Control Panel"
columns usize 4
widgets Vec<WidgetSpec> [] Flat widget list (used when no tabs are defined).
tabs Vec<TabSpec> [] Tab-grouped widgets — when present, the pane renders a tab strip and shows only the active tab's widgets.
data_source String ID of the data source (defined in top-level `data_sources`) that drives this pane's bus and simulation backend.

yaml WidgetSpec auto-generated

Field Type Default Description
id String "new()"
widget_type ControlWidgetType
label String "new()"
value_binding String
column_span usize 1
min f64
max f64
unit String
accent WidgetAccent
thresholds Vec<ThresholdSpec> []
command String Legacy string command (backward compatible).
off_command String Legacy off-command for Toggle widgets.
default_value f64
bus_command BusCommandSpec Structured bus command that routes through the ControlBus for reliability.
bus_off_command BusCommandSpec Separate bus command for when a Toggle turns off.
Example YAML
control:
  title: "HVAC Control Panel"
  columns: 4
  data_source: hvac_sdk
  tabs:
    - label: "Zone A"
      widgets:
        - id: temp_setpoint
          widget_type: slider
          label: "Temp Setpoint"
          min: 16.0
          max: 30.0
          unit: "°C"
          value_binding: zone_a.setpoint
        - id: fan_toggle
          widget_type: toggle
          label: "Fan Override"
          accent: warning
        - id: zone_temp
          widget_type: gauge
          label: "Zone Temp"
          min: 10.0
          max: 40.0
          unit: "°C"
          value_binding: zone_a.temperature
    - label: "Zone B"
      widgets:
        - id: status
          widget_type: status_light
          label: "Compressor"
          value_binding: zone_b.compressor_ok
          accent: success

Questions?

Reach out for help with integration, deployment, or custom domain codecs.