Building Dashboards
Data Inputs & Connectors
An Input is a single point of live data — a PLC register, an OPC UA node, an MQTT topic, a SQL query result — that you configure once and then bind to as many widgets as you like. Create and edit inputs from the Add Input wizard inside the editor.
Connection
Pick a source type, then fill in the fields it asks for:
| Source | Fields |
|---|---|
| Modbus TCP | Host/IP, Port (default 502), Unit/Slave ID, Register Type (Holding / Input / Coil / Discrete Input), Address |
| Modbus RTU (Serial) | COM Port, Baud Rate, Parity (None/Even/Odd), Stop Bits (1/2), Unit ID, Register Type, Address |
| OPC UA | Endpoint URL (opc.tcp://host:4840), Node ID (ns=2;s=...), optional Username/Password |
| Siemens S7 | Host/IP, Area (Data Block / Marker), Rack, Slot, DB Number (if Area = DB), Byte Offset, Data Type (Bool/Int/Uint/Dint/Real), Bit 0-7 (if Bool) |
| EtherNet/IP | Host/IP (a path suffix is allowed, e.g. 10.0.0.5/1), Tag Name |
| NI-DAQmx | Physical Channel (e.g. Dev1/ai0), Channel Type (Analog Voltage / Digital Line), Min/Max Volts (if analog) |
| MQTT | Broker Host, Port (1883 plain / 8883 TLS), Topic, QoS (0/1/2), TLS on/off, optional Client ID, optional Username/Password, Stale After (seconds) |
| Mitsubishi (MC protocol) / SLMP | Host/IP, Port (5007 Mitsubishi / 45237 SLMP), PLC Series / Compatibility Mode (Q/L/QnA/iQ-L/iQ-R), Frame (3E/4E), Device (e.g. D100), Data Type (Word/Dword/Float/Bit) |
| SQL Database | Database Type (PostgreSQL/MySQL/SQL Server), Host/IP, Port, Database Name, Username, Password, Poll Interval, SELECT query |
| REST API | Method (GET/POST), URL, optional Bearer Token, Poll Interval, optional Headers (JSON), Request Body (POST only) |
| Formula | References another input on the same dashboard and applies a transform on top of it |
MQTT is push-based rather than polled — the input updates whenever a message arrives on the topic. "Stale After" sets how long Studio waits with no new message before marking the input stale.
Conditioning
For Number and Text inputs, an optional conditioning pipeline runs on every value before it reaches your dashboard, in this order:
- JSON Path extraction
REST and MQTT sources only. Pull one field out of a larger JSON payload, e.g.
data.metrics[0].value. - Scaling
Linear transform
y = mx + c— useful for converting a raw analog reading into engineering units. - Min/max trim
Clamp the value to a min/max range.
- Formula
A custom expression on the value so far, using
xas the raw input — e.g.sqrt(x)or(x-32)*5/9. - Decimal precision
Round the final value to a fixed number of decimal places.
All input values travel as strings and are capped at 255 characters. If a value is too long, narrow it down with JSON Path extraction or a substring trim before saving.
Testing before you save
A live Test Poll must succeed before Save is enabled. Once you run it, Studio automatically re-polls the source every couple of seconds so you can see live values while you configure conditioning — except non-idempotent REST POST sources, which only poll once per click, to avoid triggering side effects repeatedly.