# Collector (Node) States Example

A Collector (Node) can have one of several different states. The system declare these states on a Device level. States are used to indicate the status of the Collector and are most often automatically managed by a Program. Still, some state transitions may require manual intervention.

%%{
init: {
'theme': 'base',
'themeVariables': {
'fontFamily': 'Atkinson Hyperlegible',
'primaryColor': '#d53169',
'primaryTextColor': '#fff',
'primaryBorderColor': '#763454',
'lineColor': '#111',
'secondaryColor': '#fca034',
'tertiaryColor': '#4582ec'
}
}
}%%

stateDiagram-v2
[*] --> PreInstallation
PreInstallation --> Deployed
Deployed --> InUse
InUse --> Inactive
InUse --> Faulty
InUse --> Decommissioned
Inactive --> InUse
Inactive --> Faulty
Inactive --> Maintenance
Faulty --> Maintenance
Faulty --> Decommissioned
Maintenance --> InUse
Decommissioned --> [*]


Table description of the states:

StateDescription
PreInstallationThe Collector has been created but has yet to be deployed.
DeployedThe Collector has been configured and deployed but is not yet used. Data flows in both directions.
InUseThe Collector is in use. Any service bound to the Collector is running.
InactiveThe Collector is in use but cannot perform its task (service).
FaultyThe Collector is in use but has encountered a fault. Transition to Maintenance is required by manual intervention.
MaintenanceThe Collector is in use but is in maintenance mode.
DecommissionedThe Collector is no longer in use.

## State Flow

The above is an example of a typical state flow for a deployed Collector (Node). These states are just an example of a typical deployment, as the conditions are not fixed and can be modified per Device for each Domain.

A purpose-built Program declared in the Program Manager manages the different state transitions. It is thus easy to add new states and transition between states based on the requirements.

If a Collector (Node) is in a Faulty state, additional inquires can be made to determine the cause of the fault. The error timeseries on a Collector (Node) can be used to determine the cause of the fault. The value maps into the Errors table.