Skip to main content

ODBC

Connect to ODBC data sources either locally or through a remote OIBus Agent. Particularly useful for systems like Aspen InfoPlus.21® (IP21) and other ODBC-compatible applications.

Compatibility Notes
  • Works with any ODBC-compatible data source
  • Recommended for Aspen IP21 connections
  • Supports both local and remote driver configurations

Specific Settings

SettingDescriptionExample Value
Use remote agentEnable to route queries through an OIBus Agent on a remote machine.Enabled/Disabled
Remote agent URLAgent endpoint URL. Required when using remote agent.http://host:2224
Connection timeoutMaximum time in milliseconds to establish connection. Default: 15000.15000
Retry intervalTime in milliseconds to wait before retrying the connection. Default: 10000.10000
Request timeoutMaximum execution time in milliseconds for individual queries. Leave empty to use the driver default.30000
Connection stringODBC connection string in driver-specific format.Driver={AspenTech SQLplus};HOST=ip21;PORT=10014
PasswordAuthentication password (stored securely). Added as PWD=<password> if not in connection string.••••••••

Connection String Examples

Windows: Driver={driver name};SERVER=host;PORT=10014;Database=db;UID=user

Example: Driver={AspenTech SQLplus};HOST=ip21-server;PORT=10014;MAXROWS=12000000

UNIX-like systems: Driver=/path/to/driver.so;SERVER=host;PORT=10014;Database=db;UID=user

Example: Driver=/opt/lib/libmsodbcsql.18.dylib;SERVER=localhost;Database=test

macOS Setup
  1. Install unixodbc: brew install unixodbc
  2. Verify installation: odbcinst -j
  3. List drivers: cat /opt/homebrew/etc/odbcinst.ini

Driver Installation

PlatformInstallation Method
WindowsUse ODBC Data Source Administrator to configure drivers
UNIX/LinuxInstall driver then specify full path in connection string
macOSbrew install unixodbc + driver installation

Aspen IP21 Configuration

For optimal IP21 performance:

  1. Install OIBus Agent on IP21 machine
  2. Use connection string: Driver={AspenTech SQLplus};HOST=<host>;PORT=10014;MAXROWS=12000000
  3. Ensure AspenTech SQLplus driver is installed on agent machine
  4. Configure agent service with appropriate permissions
Authentication
  • Passwords in connection strings are stored in plain text. Use Password field instead.
  • For local authentication, ensure OIBus Agent runs with proper permissions

Group Settings

Items can be organised into groups. Each group defines a shared collection schedule and default throttling settings. Items in the same group are still fetched one at a time in sequence — the group simply provides common defaults that individual items can override.

SettingDescriptionExample Value
NameUnique label for the group within this connector.Group A
Scan modeSchedule used to collect all items in the group.Every 1 min
ThrottlingDefault throttling values (Max read interval, Read delay, Overlap) inherited by items in the group.3600, 200, 0

Item Settings

Each item can be individually configured with its own query parameters and datetime handling. Items inherit their scan mode and throttling defaults from their group, but each setting can be overridden per item by disabling Sync with group.

Throttling Settings

Throttling controls how OIBus paces historical data requests. These settings appear on each group (for connectors that support groups) or on each item (for single-item connectors). Items in a group can override the group defaults by disabling the Sync with group toggle.

SettingDescriptionExample Value
Max read intervalMaximum duration of each sub-query in seconds. Larger time ranges are automatically split into chunks not exceeding this value.3600
Read delayPause in milliseconds between consecutive sub-queries. Helps prevent server overload and manages rate limits.1000
OverlapTime in milliseconds subtracted from @StartTime of each query to capture late-arriving data from the previous interval.60000

How Throttling Works

  1. Interval splitting — A 24-hour range with Max read interval = 3600 (1 hour) is split into 24 separate 1-hour sub-queries.
  2. Read delay — A pause is inserted between sub-queries to manage server load.
  3. Overlap — With Overlap = 60000 (1 minute), a query for [10:00–11:00] actually requests [9:59–11:00], ensuring no late-arriving data is missed.
Overlap applies to the full query range

The overlap value is subtracted from the start of the overall query, not from the start of each individual sub-interval when a large range is split into chunks.

ScenarioMax read intervalRead delayOverlap
Stable network, small datasets3600 (1 hour)5000 (no overlap)
Unstable network1800 (30 min)20000 (no overlap)
Large historical retrievals7200 (2 hours)10000 (no overlap)
Real-time with occasional gaps900 (15 min)20015000 (15 sec)

Query Configuration

The query field accepts standard SQL syntax with support for internal variables that enhance data retrieval resilience and performance optimization.

Query Variables

SettingDescriptionExample Value
@StartTimeInitialized to first execution time, then updated to the most recent timestamp from reference field2024-01-15T10:00:00.000Z
@EndTimeSet to current time (now()) or sub-interval end when queries are split2024-01-15T11:00:00.000Z

Example Query:

SELECT device_id, value, reading_time
FROM sensor_data
WHERE reading_time > @StartTime
AND reading_time < @EndTime
ORDER BY reading_time
Query Splitting

For handling large datasets, queries can be automatically divided into smaller time-based chunks based on the Max read interval throttling setting.

Datetime Field Configuration

SettingDescriptionExample Value
Field nameName of the datetime field in your SELECT statementtimestamp, reading_time
Reference fieldDesignates which field determines the @StartTime for subsequent queriesreading_time
TypeData type of the datetime field. Available values differ by connector — see the connector-specific note below.iso-string, unix-epoch
TimezoneTimezone of the stored datetime (for string/date types)UTC, Europe/Paris
FormatFormat pattern for string-based datetimesyyyy-MM-dd HH:mm:ss
LocaleLocale for format elements (e.g., month names)en_US, fr_FR
Type Consistency Requirement

When using datetime conversions in queries, keep the type consistent in both the SELECT list and the WHERE clause:

Problematic approach (may cause unexpected behavior):

SELECT value, CONVERT(datetime, string_field) AS timestamp
FROM table
WHERE string_field > @StartTime

Recommended approach:

SELECT value, CONVERT(datetime, string_field) AS timestamp
FROM table
WHERE CONVERT(datetime, string_field) > @StartTime

Data Flow Process

  1. OIBus executes each configured query sequentially.
  2. Results are consolidated into structured output.
  3. The max instant is extracted from the reference datetime field, converted to UTC, and stored as the next @StartTime.
  4. Final output is formatted according to serialization settings.
  5. Processed data is sent to configured North connectors.
Best Practices
  1. Choose reference fields with consistent, increasing values.
  2. For string datetimes, ensure the format matches between database storage and query variables.
  3. Add indexes on datetime fields for better query performance.
  4. Use the Max read interval to split large time ranges into manageable chunks.

CSV Serialization

OIBus provides flexible options for serializing retrieved data into CSV format with customizable output settings.

File Configuration

SettingDescriptionExample Value
FilenameName pattern for output files.data_@ConnectorName_@CurrentDate.csv
DelimiterCharacter used to separate values in the CSV fileCOMMA (,), SEMI_COLON (;), DOT (.), COLON (:), PIPE (|), SLASH (/), TAB (\t), NON_BREAKING_SPACE
CompressionEnable gzip compression for output filesEnabled/Disabled
Filename Variables

The following variables can be used in filename patterns:

  • @ConnectorName: Automatically replaced with the connector's name
  • @CurrentDate: Inserts current timestamp in fixed yyyy_MM_dd_HH_mm_ss_SSS format

Temporal Data Handling

SettingDescriptionExample Value
Output datetime formatFormat pattern for datetime fields in the CSV (does not affect @CurrentDate in filenames)yyyy-MM-dd HH:mm:ss
Output timezoneTimezone used for datetime values in the CSVUTC or Europe/Paris
Important Notes
  1. The @CurrentDate variable in filenames uses a fixed format (yyyy_MM_dd_HH_mm_ss_SSS) regardless of the datetime format setting
  2. Only datetime fields specified in your configuration will be formatted according to these settings
  3. Timezone conversion only applies to datetime values in the CSV content, not to the filename timestamp
ODBC datetime field types

The following Type values are available for datetime field configuration:

TypeDescription
StringString representation parsed with a custom format
ISO StringISO 8601 string (e.g. 2024-01-15T10:30:00.000Z)
UNIX epoch (s)Unix timestamp in seconds
UNIX epoch (ms)Unix timestamp in milliseconds