Component Model¶
Every addressable entity in Algol is a Component, identified by a three-part dot-separated reference:
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:
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:
Example: gps.channel, adc.channel. Used in wildcard subscriptions and config filters.
Reference parsing follows the pattern moduleId.componentName.componentId.