Skip to main content
Every widget on a dashboard is remotely drivable. When a message arrives at the dashboard containing a widget ID, the dashboard applies it to that widget immediately — no refresh, no polling. This page documents the exact payload keys the dashboard listens for.

Mental model

Think of each widget as having a radio receiver tuned to its widget ID. Any message addressed to the dashboard whose payload names that ID is picked up by that widget — and depending on which keys the payload carries, the widget changes its value, its visibility, or even its position, size, and rotation on the canvas, live. The firmware helpers (updateWidget, updateWidgetPosition, …) are just conveniences that build these payloads for you — a device can also send them raw.

The envelope

A device sends the standard message envelope; the dashboard reads the payload:
Everything below describes what goes inside payload.

Payload reference

Value update — value

Sets the widget’s value: a number for a Gauge/Slider, text for a Label, an array for a Chart/Heatmap, text to speak for Text-to-Speech, a URL for an Image.
No value key? The whole payload becomes the value. If the payload has other keys (besides widgetId and the transform keys), they’re passed to the widget as an object — this is how structured widgets receive rich data:
The Attitude Indicator receives { roll: 12.5, pitch: -3.2 }. The 3D Viewer accepts { roll, pitch, yaw, modelUrl, modelColor, autoRotate, zoom, … } the same way.

Visibility — v

1 shows the widget, 0 hides it — reveal an alert panel or hide controls from the device side.

Position, size, rotation — x y w h r

Any combination works, numbers or numeric strings. The widget moves/resizes/ rotates on the canvas in real time — a device can literally animate the layout.

Countdown control — hr min sec

Starts the Countdown Timer with that duration (5m30s here).

Toast notification — no widget ID

Shows a toast on the dashboard for visibility_time ms (min 2s, default 5s). For richer dialogs, use the firmware dialog helpers.

How the firmware helpers map to these messages

The ESP-IDF hyperwisor_update_widget_* functions produce the same shapes.

Worked examples

Change a label’s text from the device

Move and rotate a widget from the device

Reveal an alert panel when something goes wrong

Test it with no hardware

Open the LiveLink Simulator, connect the Device side, and send any of the JSON payloads above from the Send from Device panel — watch the widget react on the dashboard.

Typed message variants

Devices can also send typed messages ("type" + widget-specific key); the dashboard processes these too: The direct payload format above is the recommended one — it’s what the firmware helpers emit.

Binding data

The widget-ID contract these messages ride on.

LiveLink Simulator

Fire these payloads with no hardware.