How controls send commands — the outbound half of the standardized connection
block. The payload vocabulary ({{value}} and friends) is identical across
transports; method picks the wire.
Definition
"action": {
"method": "meshsocket",
"mode": "request",
"event": "set_power",
"payload": { "state": "{{value}}" }
}
The same command over other transports (see Data Sources):
{ "method": "mqtt", "topic": "power/set", "payload": "{{value}}" }
{ "method": "http", "path": "/api/power", "httpMethod": "POST",
"payload": { "state": "{{value}}" } }
Modes (meshsocket)
| Mode | Behavior |
|---|---|
request |
Send + await response |
broadcast |
Fire and forget |
MQTT publishes and HTTP requests are fire-and-forget; failures surface in the
connection console. Ack'd commands (layout state.acks) are a MeshSocket
contract and don't apply to mqtt/http actions.
Substitution
{{value}} in any string becomes the current control value:
- Toggle: true / false
- Slider: 75.0
- Picker: "Ocean"
A string that is exactly "{{value}}" keeps the value's native type (numbers
stay numbers, bools stay bools). Over MQTT, a string payload publishes as raw
bytes (ON, not "ON"); objects publish as JSON.
Related
- Control Definition — every control can have an action
- Data Sources — MQTT/HTTP source declaration
- Long Press — alternate action on long press