Variable Concepts
Understand variable properties, kinds, and the definition-instance pattern.
Variables are central to data acquisition in Fleetera. They represent measurable quantities on your assets — anything from power output and temperature to status flags and counters.
Variable kinds
Fleetera supports three kinds of variables:
Raw variables
Raw variables represent data that comes directly from physical equipment via a connector. The value is read from an external data source such as an OPC UA server or Modbus device.
Examples: temperature, pressure, flow_rate, vibration, voltage
Raw variables need a binding to specify which data point in the connector they read from.
Derived variables
Derived variables hold a value that is computed rather than read from equipment. They do not read data from connectors, so they never carry a binding.
The kind is retained for variables that already exist on your assets and for variables imported from a template file. Fleetera does not provide an in-product editor for authoring the calculation behind a derived variable — to compute a new value from your telemetry, define a KPI instead. A KPI definition covers the same ground with more: it applies to every asset in a population at once, runs on a schedule, records input completeness, and versions every change.
KPI variables
KPI variables hold the output of a KPI definition. They are created automatically on every matched asset when a KPI definition is enabled — you never create them by hand — and their values are computed on schedule by the Fleetera engine.
Examples: bess_rte_daily (daily round-trip efficiency), avg_active_power
Key differences between kinds
| Raw | Derived | KPI | |
|---|---|---|---|
| Value source | External data source via a binding | Computed — no connector, no binding | Tenant-level KPI definition computed by the engine |
| Created | Manually or from a template | From a template | Automatically, when a KPI definition is enabled |
Variable properties
| Property | Description |
|---|---|
| Key | Machine-readable identifier in snake_case format (e.g., active_power). Auto-normalized from the name. Unique within the asset or template version. |
| Name | Human-readable label (e.g., "Active Power"). |
| Kind | raw, derived, or kpi. |
| Data Type | The value type — Float, Double, Int32, UInt32, Boolean, String, or DateTime. See variable types. |
| Unit Code | Optional unit of measurement (e.g., kW, °C, rpm, %). |
| Enabled | Whether the variable is actively collecting data. Can be toggled without deleting the variable. |
Definitions vs. instances
Fleetera uses a template-instance pattern for variables:
Variable definitions (template-level)
Variable definitions live on asset templates. They act as blueprints that specify what variables an asset of that template type should have. Definitions include additional properties:
- Sampling hint (ms) — a suggested collection interval (minimum 100ms)
- Is index — marks the variable as an index or primary key column
- Description — explanatory text about the variable
Variable instances (asset-level)
Variable instances live on individual assets. They are the concrete variables that hold actual data. Instances are created in one of two ways:
- From a template — when you instantiate an asset from a template, all variable definitions are automatically cloned as instances. The instance retains a link (
varDefId) back to its source definition. - Manually — you can add variables directly to any asset without a template.
Key differences
| Definition (template) | Instance (asset) | |
|---|---|---|
| Location | Template version | Individual asset |
| Purpose | Blueprint | Active data point |
| Sampling hint | Yes | No (controlled at binding level) |
| Is index | Yes | No |
| Enabled toggle | No | Yes |
| Binding support | No | Yes |
Key normalization
Variable keys are automatically normalized to snake_case:
- "Active Power" becomes
active_power - "Flow Rate (m³/h)" becomes
flow_rate_m_h - Spaces become underscores, special characters are removed, everything is lowercased
Keys must match the pattern ^[a-z0-9]+(_[a-z0-9]+)*$ and be unique within their scope (template version or asset).