Inputs
Inputs, also known as input arguments, are the parameters that a function uses to execute its action. By default, inputs are configured using YAML, a straightforward and human-readable format, though this can be switched to HTML if needed.

Data Formats & Types
An input can accept any data type supported by the JSON format: Null
, Boolean
, Number
, String
, Array
, and Object
. This allows for any complex or nested data structure your application might require.
YAML, a data-serialization language designed to be human-readable and straightforward, is the default format for providing static or structured data to function inputs. The following cheat sheet provides a quick overview of the most common YAML syntax you'll need.
Sources of Input Data
A function's input can receive data from three primary sources:
Static Data: You can type a fixed value directly into the input box. This value is set at build-time and does not change.
Dynamic Data from Logic: An input can be dynamically populated by linking it to the output of another function.
Data Binding from the UI: An input can be linked to an input widget property via data binding. This allows the function to receive live data entered by the user in the user interface.
Configuring Inputs
You can interact with an input box in several ways:
Right-click on an input box to open a context menu where you can:
Switch between YAML and HTML input formats.
Set the input as a Secret, which hides the value (useful for passwords).
Clear the content or Delete the input box.
Add another argument to functions that support it by clicking the
+
icon next to an existing input.View documentation for an input by hovering over the arrow icon on the right side of the box.
Special Input Types: Callbacks
Certain functions, often named with an "on" prefix (e.g., onMessage
), use a special Callback input. In traditional programming, a callback is a function passed as an argument to another, to be "called back" when an event occurs.
In Heisenware, this is represented by a special dashed input box that contains its own output. This allows a function to listen for external events (like an incoming MQTT message) and provide the data from that event through the callback's output, ready to be used in the rest of your flow.

Last updated