Skip to content

General considerations and maintenance

This page describes VEE maintenance considerations, including supported channel types, the channel.allowVEE flag, and how interval and register data are handled.

Master data considerations

Most VEE rules support interval data channel types only; rules that consider both interval and cumulative register channel types are the Gap, High-Low and Sum Validation checks as well as the Scaling routines. All other channel types like Demand and Snapshot are ignored by VEE.

VEE will check whether channels are subjected to VEE rules by means of the channel.allowVEE (boolean) flag. If set as false, these channels would be published with the reading state ACC (0x10 - Accepted).

Where required VEE will associate each interval ID with its corresponding register ID. It does so by matching the incoming sensorID, uom and dir and returning the channel of the appropriate type using the ChannelMap table.

Register to interval relationships can be one-to-many; i.e., you could have multiple interval channels for the same uom and dir. However, the converse is not true; intervals can only be associated with one register ID at any given point in time.

If the readTS values of your interval readings are not aligned with the readTS value of your register reading, VEE will attempt to make the necessary adjustments to the register channel so that the two channels are correctly aligned.

Default VEE configurations for interval and register channel types

If you are running VEE for both interval and register channel types, you must set up at least two VEE configurations that define the validation and estimation sequences for each register type.

Channel type Description
interval type If there are no specific interval type overrides required, the VEE configuration parameter dictionary for this channel type can be an empty dictionary ()!(), as the VEE_DEFS parameter will be initialized with veeDefaults.yaml.
register type The only validation method supported for registers is the Gap Check; currently there are no estimation methods supported. VEE configuration for the register type should contain two overrides: `.val.p.seq`.est.p.seq!(enl`gap;()).

You can make these changes either during initial loading of the database or in a live system.

Reading data considerations

When VEE receives data, it will run VEE rules on new data and allow updates to old data to pass through. If all data being considered by VEE is new, then VEE will run on the new message; old data arriving to VEE will trigger a previous readings fetch for historical versioning of readings after VEE is complete.

If VEE is receiving a constant stream of new data in batches, then performance will improve as it will not require the previous readings fetch. The Gap Check is skipped for old data and placebo readings are filled in the following cases:

  • there are missing readings between the last received timestamp (VEEChannelStatus.lastTS) and the first timestamp
  • there are missing readings within the current message

Within the Gap Check if both interval and registers from the same sensor are received, then missing readings are generated up until the latest timestamp of either channel; the optimal case being if both lastTSs are aligned.

Note

The Gap Check will generate missing readings from the lastTS to the minimum timestamp by chanID. Therefore, if you are simulating data for random chanIDs, make sure that each timeseries is "current" with regard to the current VEEChannelStatus table. You set the maximum gap size (in number of days) for which missing readings will be filled in the .val.p.gap.maxGap parameter.

Next steps