Skip to main content

Track Limits

Track limits violations per driver (deletions, warnings, penalties). Use sensor.f1_track_limits in dashboards, templates, and automations.

See live data availability for session and data-source requirements. The details below describe any additional conditions for this entity.

Find your entity

These are standard entity IDs. If Home Assistant assigned a different ID, or you renamed an entity, use your existing ID in the examples.

State and attributes

sensor.f1_track_limits - Aggregated track limits violations per driver, including deleted lap times, black and white flag warnings, and penalties.

State

  • Integer: total number of track limit violations (deletions + warnings) in this session.

Example

12

Attributes

AttributeTypeDescription
by_driverobjectMap of driver TLAs to their violation data
total_deletionsnumberTotal count of deleted times/laps across all drivers
total_warningsnumberCount of BLACK AND WHITE flags issued for track limits
total_penaltiesnumberCount of track limits penalties issued
last_updatestringISO-8601 timestamp of last update

Each entry in by_driver (keyed by driver TLA) contains:

FieldTypeDescription
racing_numberstringCar number
deletionsnumberNumber of times/laps deleted for this driver
warningbooleanWhether a BLACK AND WHITE flag has been shown
penaltystringPenalty text if issued (e.g., "5 SECOND TIME PENALTY"), or null
violationslistDetailed list of all violations

Each entry in violations contains:

FieldTypeDescription
utcstringISO-8601 timestamp of the violation
lapnumberLap number when violation occurred
turnnumberTurn number where violation occurred (for deletions)
typestringViolation type: time_deleted, warning, or penalty
penaltystringPenalty text (only present when type is penalty)
JSON Structure Example
{
"by_driver": {
"HAM": {
"racing_number": "44",
"deletions": 3,
"warning": true,
"penalty": null,
"violations": [
{ "utc": "2025-12-07T13:09:47Z", "lap": 5, "turn": 1, "type": "time_deleted" },
{ "utc": "2025-12-07T13:40:05Z", "lap": 25, "turn": 1, "type": "time_deleted" },
{ "utc": "2025-12-07T13:43:05Z", "lap": 27, "turn": 1, "type": "time_deleted" },
{ "utc": "2025-12-07T13:48:58Z", "lap": 31, "turn": null, "type": "warning" }
]
},
"GAS": {
"racing_number": "10",
"deletions": 4,
"warning": true,
"penalty": "5 SECOND TIME PENALTY",
"violations": [
{ "utc": "2025-12-07T13:11:44Z", "lap": 6, "turn": 6, "type": "time_deleted" },
{ "utc": "2025-12-07T13:38:57Z", "lap": 24, "turn": 4, "type": "time_deleted" },
{ "utc": "2025-12-07T13:49:07Z", "lap": 31, "turn": null, "type": "warning" },
{ "utc": "2025-12-07T14:09:18Z", "lap": 44, "turn": 4, "type": "time_deleted" },
{ "utc": "2025-12-07T14:11:25Z", "lap": 46, "turn": null, "type": "penalty", "penalty": "5 SECOND TIME PENALTY" }
]
},
"LAW": {
"racing_number": "30",
"deletions": 4,
"warning": true,
"penalty": null,
"violations": [
{ "utc": "2025-12-07T13:10:33Z", "lap": 5, "turn": 1, "type": "time_deleted" },
{ "utc": "2025-12-07T13:14:11Z", "lap": 8, "turn": 1, "type": "time_deleted" },
{ "utc": "2025-12-07T13:34:40Z", "lap": 21, "turn": 7, "type": "time_deleted" },
{ "utc": "2025-12-07T13:37:38Z", "lap": 23, "turn": null, "type": "warning" }
]
}
},
"total_deletions": 11,
"total_warnings": 3,
"total_penalties": 1,
"last_update": "2025-12-07T14:11:25Z"
}
Jinja2 Template Examples

Get a driver's track limits count:

{% set by_driver = state_attr('sensor.f1_track_limits', 'by_driver') %}
{% set ham = by_driver.get('HAM') %}
{% if ham %}
HAM: {{ ham.deletions }} deletions{% if ham.warning %}, WARNING{% endif %}
{% endif %}

List drivers with warnings:

{% set by_driver = state_attr('sensor.f1_track_limits', 'by_driver') %}
{% for tla, data in by_driver.items() if data.warning %}
{{ tla }} (#{{ data.racing_number }}) - {{ data.deletions }} deletions
{% endfor %}

Find drivers at risk (3+ deletions, no warning yet):

{% set by_driver = state_attr('sensor.f1_track_limits', 'by_driver') %}
{% for tla, data in by_driver.items() if data.deletions >= 3 and not data.warning %}
{{ tla }}: {{ data.deletions }} deletions - at risk!
{% endfor %}

Get total session track limits:

{% set deletions = state_attr('sensor.f1_track_limits', 'total_deletions') %}
{% set warnings = state_attr('sensor.f1_track_limits', 'total_warnings') %}
{% set penalties = state_attr('sensor.f1_track_limits', 'total_penalties') %}
Deletions: {{ deletions }}, Warnings: {{ warnings }}, Penalties: {{ penalties }}

List drivers with penalties:

{% set by_driver = state_attr('sensor.f1_track_limits', 'by_driver') %}
{% for tla, data in by_driver.items() if data.penalty %}
{{ tla }}: {{ data.penalty }}
{% endfor %}
Track Limits Progression

The typical track limits progression is: 3 deleted lap times → BLACK AND WHITE flag warning → penalty on the next violation. Use the deletions count and warning flag to identify drivers at risk.

Next steps