Skip to main content

Constructor Points Progression

Follow constructor championship points across race rounds. Use sensor.f1_constructor_points_progression in dashboards, templates, and automations.

This reference covers the state and attributes. For setup, see Configuration.

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_constructor_points_progression - Per‑round constructor points (including sprint) with cumulative series, suitable for charts.

State

  • Integer: number of rounds covered.

Example

12

Attributes

AttributeTypeDescription
seasonstringSeason year
roundslistList of rounds with metadata
constructorsobjectMap of constructor IDs to their progression data
seriesobjectProgression series data for charts

Each entry in rounds contains:

FieldTypeDescription
roundstringRound number
race_namestringGrand Prix name
datestringRace date (YYYY-MM-DD)

Each entry in constructors (keyed by constructor ID) contains:

FieldTypeDescription
namestringTeam name
constructorIdstringConstructor identifier
points_by_roundlistPoints scored in each round
cumulative_pointslistRunning total of points after each round
wins_by_roundlistWins per round
totalsobject{ points, wins } - season totals

The series object contains:

FieldTypeDescription
labelslistRound labels for chart X-axis (e.g., ["R1", "R2", ...])
serieslistArray of series objects for charting

Each entry in series.series contains:

FieldTypeDescription
keystringConstructor ID
namestringTeam name
datalistPoints per round
cumulativelistCumulative points per round
JSON Structure Example
{
"season": "2025",
"rounds": [
{ "round": "1", "race_name": "Bahrain Grand Prix", "date": "2025-03-02" },
{ "round": "2", "race_name": "Saudi Arabian Grand Prix", "date": "2025-03-09" },
{ "round": "3", "race_name": "Australian Grand Prix", "date": "2025-03-23" }
],
"constructors": {
"red_bull": {
"name": "Red Bull Racing",
"constructorId": "red_bull",
"points_by_round": [44, 33, 40],
"cumulative_points": [44, 77, 117],
"wins_by_round": [1, 0, 1],
"totals": {
"points": 117,
"wins": 2
}
},
"ferrari": {
"name": "Ferrari",
"constructorId": "ferrari",
"points_by_round": [33, 44, 28],
"cumulative_points": [33, 77, 105],
"wins_by_round": [0, 1, 0],
"totals": {
"points": 105,
"wins": 1
}
},
"mclaren": {
"name": "McLaren",
"constructorId": "mclaren",
"points_by_round": [28, 25, 33],
"cumulative_points": [28, 53, 86],
"wins_by_round": [0, 0, 0],
"totals": {
"points": 86,
"wins": 0
}
}
},
"series": {
"labels": ["R1", "R2", "R3"],
"series": [
{
"key": "red_bull",
"name": "Red Bull Racing",
"data": [44, 33, 40],
"cumulative": [44, 77, 117]
},
{
"key": "ferrari",
"name": "Ferrari",
"data": [33, 44, 28],
"cumulative": [33, 77, 105]
}
]
}
}
Jinja2 Template Examples

Get a team's total points:

{% set constructors = state_attr('sensor.f1_constructor_points_progression', 'constructors') %}
{% if constructors and constructors.red_bull %}
Red Bull total: {{ constructors.red_bull.totals.points }} points
{% endif %}

Get points scored in the last round:

{% set constructors = state_attr('sensor.f1_constructor_points_progression', 'constructors') %}
{% set ferrari = constructors.ferrari %}
{% if ferrari %}
{% set pts = ferrari.points_by_round %}
Ferrari last round: {{ pts[-1] if pts else 0 }} points
{% endif %}

Calculate gap between two teams:

{% set c = state_attr('sensor.f1_constructor_points_progression', 'constructors') %}
{% if c.red_bull and c.ferrari %}
{% set gap = c.red_bull.totals.points - c.ferrari.totals.points %}
Red Bull leads Ferrari by {{ gap }} points
{% endif %}

Get team with most wins:

{% set constructors = state_attr('sensor.f1_constructor_points_progression', 'constructors') %}
{% set winner = constructors.values() | sort(attribute='totals.wins', reverse=true) | first %}
{% if winner %}
Most wins: {{ winner.name }} with {{ winner.totals.wins }}
{% endif %}

List all teams by points:

{% set constructors = state_attr('sensor.f1_constructor_points_progression', 'constructors') %}
{% for c in constructors.values() | sort(attribute='totals.points', reverse=true) %}
{{ c.name }}: {{ c.totals.points }} pts
{% endfor %}
Season progression card

Use this entity with the bundled F1 Season Progression Card to show constructor championship point progression without installing another chart card.

Next steps