> For the complete documentation index, see [llms.txt](https://docs.tricloudnexus.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.tricloudnexus.io/management-portal/designer/assets/data-connectors/custom-data-connectors.md).

# Custom Data Connectors

Tricloud Nexus ships with a set of pre-built Data Connectors (MQTT, OPC-UA, Modbus, FTP/FileShare, Emulator, etc.). These connectors run at the Edge where they are close to equipment, work offline, and normalize incoming signals into a unified Nexus format.

In the case you need to connect to a source not yet supported, you can build your own connector with the **Nexus SDK** (C#). A complete, working walkthrough is available here:

\
**Custom data connector sample:** [TextFile Data Connector (step-by-step + source)](https://dev.azure.com/triclouddk/IoT%20Platform/_git/IoTPlatform.Samples?path=%2Fcustom-modules%2Fdata-collectors%2FTextFileDataCollector%2FREADME.md&_a=preview)

***

### When to build a custom connector

* You have a proprietary protocol, file drop, web service, or device API not covered by the built-in types.
* You need special processing or parsing logic at the Edge.
* You want to standardize a non-standard data source, so downstream processing “just works.”

All custom connectors run on the Edge, inherit the same offline resilience, and become available to all child Assets/Tags under the Area in the Asset Hierarchy where they’re configured.

***

### Build guide

1. **Start from the sample**\
   Clone the TextFile Data Connector sample and use it as a template. It shows the full structure: configuration, run loop, error handling, and packaging.
2. **Define configuration**\
   Add a strongly-typed settings class for your source (e.g., server URL, auth, path/node/topic, poll interval). Validate on startup; fail fast with clear messages.
3. **Implement connect/read**
   * Connect to the source (client/session/login).
   * Read or subscribe to values.
   * Normalize to Nexus measurements and publish for Tags to consume.
4. **Package for the Edge**\
   Build your connector as a containerized module (as in the sample). Version it and publish to your module registry so it can be deployed alongside other Edge components.
5. **Import Custom Data Connector Module**\
   Import the new module into the Module Store, specifying that the module is a Custom Data Collector. Define Parameters to match the expected configuration and environment variables.
6. **Add to your hierarchy**\
   In the Designer: select the **Area → Data Connectors → Add**, choose your custom type, provide settings, and **Deploy** the hierarchy. The connector will run on the Edge and be usable by all child Assets/Tags.
7. **Bind Tags**\
   On the relevant Asset(s), create Tags that reference your connector and specify the datapoint address (topic/nodeId/register/path, etc.). Choose the right measurement type (Analog/Digital/String) and optional aggregation.

***

### Versioning & compatibility

* Use semantic versioning for your connector image.
* Keep configuration keys backward-compatible where possible; provide migration notes when you must change them.
* Document limits (max throughput, message size), recommended scan rates, and failure modes.

***
