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:

SourceFields
Modbus TCPHost/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 UAEndpoint URL (opc.tcp://host:4840), Node ID (ns=2;s=...), optional Username/Password
Siemens S7Host/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/IPHost/IP (a path suffix is allowed, e.g. 10.0.0.5/1), Tag Name
NI-DAQmxPhysical Channel (e.g. Dev1/ai0), Channel Type (Analog Voltage / Digital Line), Min/Max Volts (if analog)
MQTTBroker 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) / SLMPHost/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 DatabaseDatabase Type (PostgreSQL/MySQL/SQL Server), Host/IP, Port, Database Name, Username, Password, Poll Interval, SELECT query
REST APIMethod (GET/POST), URL, optional Bearer Token, Poll Interval, optional Headers (JSON), Request Body (POST only)
FormulaReferences another input on the same dashboard and applies a transform on top of it
Note

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:

  1. JSON Path extraction

    REST and MQTT sources only. Pull one field out of a larger JSON payload, e.g. data.metrics[0].value.

  2. Scaling

    Linear transform y = mx + c — useful for converting a raw analog reading into engineering units.

  3. Min/max trim

    Clamp the value to a min/max range.

  4. Formula

    A custom expression on the value so far, using x as the raw input — e.g. sqrt(x) or (x-32)*5/9.

  5. Decimal precision

    Round the final value to a fixed number of decimal places.

255-character limit

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.