Skip to main content
Include the umbrella header to access the full API:
All functions take a target_id (where a message is routed — your dashboard/user) and, for widgets, a widget_id. Read target_id from an incoming command’s from, or from your stored configuration.

Lifecycle

Credentials

Persisted in NVS — set only on first boot or to override.

Connection state

Receiving commands

Register a handler for a named command. The handler receives the sender ID and the payload as cJSON.

Responding & emitting

send_response replies to a command’s sender; emit sends a command/action/params message to any target.

Updating widgets

Push a value to a dashboard widget by its widget ID (enable HYPERWISOR_ENABLE_WIDGET).
Where do I get the widgetId? Select the widget in the Dashboard Designer and open General → Basic. The Widget ID field holds the value — use the copy button and paste it into your updateWidget / widget.* call. See Binding Data for the full model.
Widget ID in the General tab

Copy a widget's ID from General → Basic — this is the value your update calls reference.

Dialogs

Show a dialog on the user’s dashboard.

Board port (optional)

Provide a hyperwisor_port_t of function pointers for a specific board’s GPIO whitelist, display backlight, or sensors, and register it before init:

Feature modules

The umbrella header pulls in feature headers — their signatures are the source of truth:

Examples

A real project walkthrough.

OTA updates

Enable over-the-air firmware.