Skip to content

Connecting Input Datasources

An input datasource is one logical source of sensor data — an OPC-UA endpoint, an MQTT topic group, a CSV replay file, and so on. Each source is a typed adapter with its own connection settings and tag list. You map its tags to your model’s input channels, then enable it to start inference.

Data Sources screen listing configured OPC-UA, MQTT, and CSV input adapters with connection status Data Sources screen listing configured OPC-UA, MQTT, and CSV input adapters with connection status
The Data Sources screen — add a source, map its tags, pair a model, enable.
  • OPC-UA — subscribe to tags from any compliant server.
  • MQTT — bring-your-own broker, TLS supported.
  • CSV — replay recorded data from a file (great for testing).

Walkthrough: add a source and start inference

Section titled “Walkthrough: add a source and start inference”
  1. In the dashboard, go to Datasources → Input, then click + Create.

  2. Pick the adapter type and fill the connection

    Section titled “Pick the adapter type and fill the connection”

    Select the source type. The form adapts to the protocol you choose — fill in the endpoint, credentials, and any protocol-specific fields. Secret fields (passwords, tokens) are masked as *** after saving.

    FieldExample
    Endpointopc.tcp://your-opcua-host:4840/factory/line1
    Security policyNone (or a Basic256Sha256 profile with certificates)
    AuthenticationAnonymous (or username/password)

    Tags are referenced by NodeId, e.g. ns=2;i=2 (numeric) or ns=2;s=Temperature (string).

  3. List the tags you want to stream and assign each to a numbered input channel (0, 1, 2, …). Each channel feeds one model input. Set the window size — how many consecutive samples the model consumes per prediction — to match the model you will pair.

  4. Save the datasource. Then pair it with a model you uploaded under Models. The platform runs a compatibility check — window size × feature count must agree on both sides — and rejects the pairing if they differ.

  5. Toggle Enable on the row. This validates the configuration, loads the paired model, and connects the adapter. The connection handshake (OPC-UA / MQTT) happens here, so a network or credential problem surfaces now and rolls the row back to Disabled with an error message.

    Enabling does not auto-start streaming — click Start to begin inference.

The config form only shows fields relevant to what you’ve already chosen. On the MQTT tab, TLS fields (CA certificate, client cert/key, allow-untrusted) appear only once TLS is switched on. On the OPC UA tab, client certificate/key fields appear only under Certificate authentication, and username/password only under Username/Password authentication. Every on/off switch in the form shows its state as a check or cross inside the track, not by colour alone.

Every network protocol can run in three postures. Pick the highest one your endpoint supports — Insecure is for bench and lab work only, never for a plant network.

Certificates referenced below live in the bundle’s certs/ directory, mounted read-only into the backend at /certs (enable with AIBOARD_CERTS_ENABLED=1 in the bundle .env). Config fields accept only paths under /certs — anything outside the jail is rejected. Copy only the CA certificate and the client certificate/key pair to the box; the CA private key and broker/server keys must never leave your PKI host.

FieldValue
Security policyNone
Message security modeNone
AuthenticationAnonymous

No encryption, no identity — anyone on the network can read tag values and impersonate the server. Acceptable only against the local demo lab or an air-gapped bench.

FieldValue
Broker URLmqtt://broker-host:1883
TLSoff
Username / passwordempty (anonymous)

Plaintext and anonymous — readable and spoofable by anyone on the segment. Lab use only.

CSV is file-based — there is no network channel to secure. The protections are filesystem-level and already enforced:

  • File paths are jailed under the CSV root (/data/csv in the container, AIBOARD_CSV_ROOT); path-traversal attempts are rejected.
  • Mount replay datasets read-only, and keep the CSV volume on the box — exporting it off-box is a data-governance decision, not a datasource setting.

Before enabling, use Test Connection on the source. It verifies the live form values reach the endpoint, so you catch a wrong host or credential before wiring tags.

MQTT: staleness window, reconnect, and non-finite rejection

Section titled “MQTT: staleness window, reconnect, and non-finite rejection”

MQTT pushes readings; inference pulls one sample per tick. A cached tag value expires after clamp(50 / SamplingHz, 5s, 60s) — at the default 10 Hz that’s 5 seconds. Past that window a stale tag raises a read failure and halts inference, the same as if the sensor had gone quiet.

On broker loss, the adapter reconnects with exponential backoff and re-subscribes to its mapped topics on every attempt, until the datasource is disabled.

NaN and Infinity payloads (including numeric overflow, e.g. 1e400) are rejected at the parser and never reach the model. A topic that publishes NaN as a no-measurement sentinel will halt inference by design — the same contract as a sensor that goes quiet.

Each datasource has independent rate limits and a bounded buffer. When a source produces faster than the runtime consumes, backpressure is reported to the dashboard so you can spot saturation.

SymptomLikely cause
Enable fails with model_not_pairedPair a model with the datasource first.
Enable rolls back on connectEndpoint unreachable, wrong credentials, or firewall — verify with Test Connection.
Row says Enabled but no predictionsBy design — press Start to begin streaming.
Pairing rejectedwindow size × feature count mismatch between model and datasource.
Tag mapping fails with a tag_outside_subscription_* messageThe tag’s topic falls outside the datasource’s Base Topic — widen Base Topic or fix the tag path. Tag-mapping errors render as a sentence, not a raw code.
Inference halts after running fine for a whileA mapped MQTT topic aged past the stale window (slow publisher) — see staleness above.

See the Troubleshooting runbook for more.