Formulatel#
formulatel is a hobby project of mine that collects sim-racing telemetry from multiple different sources (different games) and provides both live and historic dashboards to analyze vehicle telemetry.
---
config:
theme: redux
look: neo
---
flowchart LR
subgraph Sources [Sim Racing Games]
T1[Title A]
T2[Title B]
TN[Title C]
end
X[ingest<br/>Receive, Transform, Publish]
subgraph PubSub [Pub/Sub Topics by Type]
TypeA[Topic: Motion]
TypeB[Topic: Weather]
TypeN[Topic: Tires]
end
G[Grafana<br/>Visualization]
Y[persist<br/>Persistence Layer]
DB[(Datastore)]
T1 --> X
T2 --> X
TN --> X
X --> TypeA
X --> TypeB
X --> TypeN
TypeA --> G
TypeB --> G
TypeN --> G
TypeA --> Y
TypeB --> Y
TypeN --> Y
Y --> DB
DB --> GGoals#
The major goal of the project is to be able to capture telemetry from 2+ racing games and visualize that telemetry using a single dashboard, the idea being that the driver will want to see the same information regardless of the title they’re playing, and that they might like to share those dashboards with other drivers. We capture and transform telemetry per-title, provide interesting dashboards/visualizations of the telemetry, and give the driver the power to create their own dashboards.
With this satisfied, the next goal is to package formulatel for other less tech-savvy drivers to use. Current users have to do a fair amount of setup that we expect most users won’t be comfortable with.
Finally, in an ideal situation with no funding restrictions, running formulatel in the cloud, accepting racing telemetry from any supported title, and scaling the service with active users would be the “endgame”.
Motivation#
This project is one I started for fun and, originally, to learn more about OpenTelemetry. I’m a hands-on learner and am a staunch supporter of system observability, so I thought it would be best to come up with a project idea when I was learning about OpenTelemetry. When I began this project, I had been spending some of my free time playing racing simulation games, many of which have a feature to broadcast telemetry packets over UDP, and I thought that would make a fun project that combines my hobbies/interests and OpenTelemetry.
After some initial development, I eventually decided that OT wasn’t the best choice for this project’s goal of transporting metrics for a live Grafana dashboard and made the switch to MQTT topics and plugged those into Grafana Live where we can see the on-screen display change immediately in response to the driver’s control.
Usage#
See the repository README for information on installing and running formulatel.