-
David Trattnig authoredDavid Trattnig authored
README.md 5.32 KiB
Aura Engine

AURA Engine is a scheduling service to control the playout of Engine Core.
This documentation is primarily meant for developers. For using the AURA Community Radio Suite check out the documentation at docs.aura.radio
To learn more about Automated Radio go to aura.radio.
Overview
The following diagram gives an simplified overview on the architecture.
flowchart LR
api-- GET calendar -->steering[Steering API]
api-- GET playlist -->tank[Tank API]
ea[Engine API]
events-- on_boot\non_sick\non_resurrect -->monitor[Monitor]
events-- on_play\non_fallback_active -->clock[Clock]
clock-- POST clock_data -->ea
monitor-- PING heartbeat -->monserver[Monitoring Server]
monitor-- POST health_data -->ea
mixer-- UNIX SOCKET -->engine_core
subgraph external
ea
monserver
engine_core
steering
tank
db[(PostgreSQL DB)]
end
subgraph engine
engine_instance[Engine]-.-oplayer & events & scheduler
scheduler-- control\ncommand\ntimer -->player[Player]
player-- control action -->mixer
events[Event Dispatcher *]
subgraph scheduling
api[Fetch & Cache API]
timetable<-->api
timetable<-->db
scheduler<-->timetable[Timetable Management ***]
scheduler-- cycle -->scheduler
end
subgraph core[core]
mixer[Mixer]
end
subgraph plugins
clock
monitor
end
end
style external fill:#FFF
style ea fill:#FFF,stroke:#333,stroke-width:1px
style steering fill:#FFF,stroke:#333,stroke-width:1px
style tank fill:#FFF,stroke:#333,stroke-width:1px
style monserver fill:#FFF,stroke:#333,stroke-width:1px
style engine_core fill:#FFF,stroke:#333,stroke-width:1px
- Event Dispatcher: Events are issued and consumed in multiple locations of Engine. The diagram shows only a few ones, in order to support the overview.
- Timetable Management: Currently a database is used for caching and high-availability purposes. This is subject to changes in subsequent releases.
Prerequisites
Before you begin, ensure you have met the following requirements:
- Operating system: Debian 11, Ubuntu 20.04 or newer
-
git
,make
- Docker, optional if you want to run in a container
- Python 3.10+
- Poetry
- PostgreSQL 13+
Ensure that you have also dependencies such as steering
, tank
, dashboard
, engine-core
, and engine-api
up and running.
Preparation
Initialize environment
Install dependencies and prepare config file:
make init.app
This also creates a default configuration file at config/engine.ini
.
For development install with: