Skip to content

Component Model

Every addressable entity in Algol is a Component, identified by a three-part dot-separated reference:

{moduleId}.{componentName}.{componentId}

Examples:

Component ref What it is
gps.channel.position GPS position data channel
adc.channel.ain2 ADC analogue input 2 channel
bc.bcapp.main Board controller application
trigger.trigger.speed A trigger named "speed"
flower.flow.main The main measurement flow

Parts

moduleId - identifies the process / system that owns the component (e.g. gps, adc, bc, trigger).

componentName - the type of component within the module (e.g. channel, trigger, flow, app).

componentId - the specific instance (e.g. main, position, speed). May be * as a wildcard in trigger expressions.

Attributes

Components expose named attributes, identified by appending a field name:

{componentRef}.{attributeName}

Examples: gps.channel.position.lat, adc.channel.ain2.value, bc.bcapp.main.fw_version.

Attribute references are used in:

  • Trigger expressions (status_val('gps.channel.position.lat'))
  • Command routing (cmdRef=relay.switch.main.toggle)
  • Config updates
  • Modbus register mappings in board-controller

ComponentGroup

A partial reference identifying a module + component type without a specific instance:

{moduleId}.{componentName}

Example: gps.channel, adc.channel. Used in wildcard subscriptions and config filters.

Reference parsing follows the pattern moduleId.componentName.componentId.