Interactive (control) widgets
Some widgets write to a device or trigger an action:
- command-button — sends a one-shot Modbus write (a function-code command). Its Device ID is the device's ID from its page in Synacl (24 characters), not the Modbus unit ID.
- toggle-switch — writes on/off values to the tag it's bound to: a coil with FC05, a holding register with FC06. Great for relays. You don't need to fill in the device or address, because they come from the bound tag. Input registers and discrete inputs are read-only, so a toggle bound to one says it can't write. The override device and address are optional. Addresses are 0-based: register 40003 is address 2, and coil 00001 is address 0.
- slider-control — writes a number to a holding register (Modbus FC06). Great for setpoints or PWM duty. A coil holds only 0 or 1, so a slider bound to one says it can't write.
- action-button — fires a saved User Action (webhook or MQTT) via its
actionId.
Realistic control widgets
Skeuomorphic controls with the same write behaviour, for a more tactile HMI:
- rocker-switch — a realistic industrial bat-handle or rocker toggle. Same options as toggle-switch (Modbus FC05/FC06 or a User Action), plus a
styleand on/off colours. - illuminated-button — a lit momentary (on-while-held) or latching push-button, or an emergency-stop style. Writes Modbus or fires an action; the lamp can reflect the live data stream (
feedbackFromData). - rotary-knob — turn (drag or scroll) to set a value; writes the holding register (FC06) when you release. Like the slider, it needs a holding register, not a coil.
- selector-switch — a multi-position rotary selector (e.g. Off / Manual / Auto). Each position writes its own coded value — edit the positions under Configuration → Positions.
- fan-speed-selector — a multi-speed fan control (Off / Low / Med / High) with a live fan; each speed writes its value. Selectors and fan speeds can only use 0/1 positions on a coil; other values need a holding register.
Where a control writes
Every Modbus control writes to the tag it's bound to on the Data tab. The device, address and function code all come from that tag: a coil is written with FC05, a holding register with FC06. You don't have to fill anything else in. Input registers and discrete inputs are read-only, and a control bound to one tells you it can't write instead of doing nothing.
The Override device and Override write address fields are optional. Use them only to write somewhere other than the tag you're displaying. The device is the 24-character ID from the device's page, not the Modbus unit ID. The address is 0-based, not 4xxxx notation: register 40003 is address 2.
A momentary illuminated button always sends its release, even if you let go before the gateway has confirmed the press.
When you operate a control widget you'll see a device/write event, then device/write/ack if the gateway confirms the write. Gateways on firmware 1.5.2 or newer confirm each write, so the control shows whether the device accepted it. With older firmware no confirmation arrives: after 10 seconds the control shows Sent rather than failed, and the tag's next reading shows the value the device actually has. Writes through a gateway are one coil or one register at a time (FC05/FC06); multi-register writes (FC15/FC16) are refused. Controls require a writable device/protocol (e.g. a Modbus coil/register or a gpio-digital-out/gpio-pwm device). Widgets that fire a User Action instead need a saved action and don't require a writable Modbus device.