The core loop
A dashboard widget has an ID. Your firmware pushes a value to that ID, and the widget updates. The widget sends a command, and your firmware receives it. That’s the whole loop.Pushing a value up
In firmware you callupdateWidget with a target, the widget’s ID, and a value:
tempGauge now reads 27.4. No
polling — the value arrives over the realtime channel and the widget re-renders.
Sending a command down
When a user flips a Switch or presses a Button, the dashboard sends a command. Your firmware receives it through the command handler you registered:What the SDK handles for you
You never deal with the transport yourself. The firmware libraries wrap all of it behind simple calls:Connection
Wi-Fi provisioning, the realtime connection, and reconnection are managed by
the library. You call
begin() / loop() and it stays connected.Identity
The device’s ID and the user it belongs to are stored on the device and used
to route messages — set once during provisioning.
Widgets
updateWidget() and its typed overloads push values; specialized
helpers exist for charts, 3D models, heatmaps, and more.Commands
Incoming commands are parsed and delivered to your handler as structured
JSON; helper functions find commands, actions, and params for you.
The data is yours to shape
The platform makes no assumptions about what your device measures or controls. You decide the widget IDs, the values, and the command vocabulary. A thermostat, a soil sensor, and a drone all run on the same loop — only the IDs and payloads differ.Next: Core concepts
Product, device, user, and dashboard — and how they relate.

