Automation
Automate your home based on live F1 data. These examples use live data sensors and events to trigger actions during sessions.
For automations to match what you see on screen, configure the Live Delay to match your broadcast delay.
Looking for an easy starting point? The Blueprints section has ready-made automations for light control, race control notifications, incident notifications, and replay sync - no YAML required.
All examples below use the standard entity_id, such as sensor.f1_session_status and binary_sensor.f1_safety_car.
If your Home Assistant UI shows translated display names, search for the documented entity_id or the f1_ suffix in the entity picker. If you upgraded from an older release and already have a different registry ID, keep using your existing entity.
Device Automation Triggers
The easiest way to build automations is through the Home Assistant UI using device triggers. Go to Settings > Devices & Services > Devices, select any F1 Sensor sub-device, and choose Automations > Add trigger to see the available triggers without writing any YAML.
Device triggers are the recommended starting point. They automatically reference the correct entity and are always kept in sync with the integration. YAML examples further down on this page show equivalent manual setups.
Triggers are organized per sub-device. Only triggers whose backing entity is enabled will appear.
Race device
| Trigger | Fires when |
|---|---|
| Race week started | The race week indicator turns on |
| Race week ended | The race week indicator turns off |
Session device
| Trigger | Fires when |
|---|---|
| Safety car deployed | Safety car or Virtual Safety Car becomes active |
| Safety car cleared | Safety car or Virtual Safety Car is cleared |
| Formation start ready | Formation start procedure is ready |
| Overtake mode enabled | Track-wide overtake mode is enabled (2026 regulation) |
| Overtake mode disabled | Track-wide overtake mode is disabled (2026 regulation) |
| Session live | Session status changes (any state transition) |
| Track status: CLEAR | Track status becomes CLEAR |
| Track status: YELLOW | Track status becomes YELLOW |
| Track status: Safety Car | Track status becomes SC |
| Track status: VSC | Track status becomes VSC |
| Track status: Red Flag | Track status becomes RED |
| Possible on-track incident detected | A candidate, confirmed, or updated incident becomes active |
| Possible on-track incident cleared | No possible incident remains active |
| On-track incident detected | A confirmed incident becomes active |
| On-track incident cleared | No confirmed incident remains active |
Officials device
| Trigger | Fires when |
|---|---|
| New race control message | A new race control message is received |
| New FIA document | A new FIA document is published |
| Investigation changed | An investigation or penalty status changes |
System device
| Trigger | Fires when |
|---|---|
| Live timing online | Live timing connection is established |
| Live timing offline | Live timing connection is lost |
YAML Examples
Notify when race week begins
Uses the Race Week sensor to send a notification the moment race week starts. Useful for kicking off any weekly routines — changing dashboard views, enabling presence modes, or just a heads-up.
alias: F1 - Race week started
description: Notify when race week begins
trigger:
- platform: state
entity_id: binary_sensor.f1_race_week
to: "on"
condition: []
action:
- service: notify.mobile_app_your_phone
data:
title: "Formula 1"
message: >
Race week is here! Next up: {{ state_attr('sensor.f1_next_race', 'race_name') }}
at {{ state_attr('sensor.f1_next_race', 'circuit_name') }}.
mode: single
Reminder before a session starts
Uses the Season Calendar entity to trigger a notification 30 minutes before any session — practice, qualifying, sprint, or race.
alias: F1 - Session starting soon
description: Send a reminder 30 minutes before any F1 session
trigger:
- platform: calendar
event: start
entity_id: calendar.f1_season_calendar
offset: "-0:30:0"
condition: []
action:
- service: notify.mobile_app_your_phone
data:
title: "F1 starting soon"
message: "{{ trigger.calendar_event.summary }} starts in 30 minutes."
mode: single
Change the offset value to adjust how far in advance the reminder fires. Use -1:00:0 for one hour, or "-0:05:0" for five minutes.
Session goes live
Triggers the moment a session becomes active, when the Session Status sensor changes to live. Use this to turn on the TV, switch to an F1 dashboard, or send a notification.
alias: F1 - Session is live
description: Trigger when a session goes live
trigger:
- platform: state
entity_id: sensor.f1_session_status
to: "live"
condition: []
action:
- service: notify.mobile_app_your_phone
data:
title: "F1 is live"
message: >
{{ state_attr('sensor.f1_session_status', 'session_name') }} at
{{ state_attr('sensor.f1_session_status', 'meeting_name') }} has started.
mode: single
Race about to start — formation lap
The Formation Start sensor turns on the moment the formation lap begins, giving you a precise early warning that the race is seconds away.
alias: F1 - Formation lap started
description: Notify when the formation lap begins
trigger:
- platform: state
entity_id: binary_sensor.f1_formation_start
to: "on"
condition: []
action:
- service: notify.mobile_app_your_phone
data:
title: "Formation lap"
message: "The formation lap has started. Lights out soon."
mode: single
Safety car deployed
Triggers when the Safety Car sensor turns on. Combine with the Race Control Notifications blueprint for detailed messages, or use this as a quick standalone trigger.
alias: F1 - Safety car deployed
description: Notify when the safety car is deployed
trigger:
- platform: state
entity_id: binary_sensor.f1_safety_car
to: "on"
condition: []
action:
- service: notify.mobile_app_your_phone
data:
title: "Safety Car"
message: "Safety car deployed — track status: {{ state_attr('binary_sensor.f1_safety_car', 'track_status') }}"
mode: single
Race Control Event Notifications
Uses Race Control events for a low-latency trigger on every race control message — flag changes, incident reports, and steward notes.
You can also use the Race Control sensor if you prefer a sensor-state trigger with attribute access and history.
alias: F1 - Race Control Notification
description: Sends Race Control messages as notifications in Home Assistant
trigger:
- platform: event
event_type: f1_sensor_race_control_event
condition: []
action:
- service: notify.persistent_notification
data:
title: "Race Control"
message: "{{ trigger.event.data.message.Message }}"
mode: queued
max: 10
Possible on-track incident notification
Uses the f1_sensor_incident event to notify only for confirmed medium or high confidence incidents during race, sprint, or qualifying sessions. For a ready-made version, see the Incident Notifications blueprint. For behavior details, see Incident Detection.
Incident events respect Live Delay, so set Live Delay to match your broadcast if you want notifications to line up with the pictures.
alias: F1 - Possible on-track incident
description: Notify for confirmed likely stopped cars or on-track incidents
trigger:
- platform: event
event_type: f1_sensor_incident
condition:
- condition: template
value_template: "{{ trigger.event.data.phase == 'confirmed' }}"
- condition: template
value_template: "{{ trigger.event.data.confidence in ['medium', 'high'] }}"
- condition: template
value_template: "{{ trigger.event.data.session.session_type in ['race', 'sprint', 'qualifying'] }}"
action:
- service: notify.mobile_app_your_phone
data:
title: "Possible F1 incident"
message: >
{% set data = trigger.event.data %}
{% set location = data.get('location') or {} %}
{{ trigger.event.data.driver.tla }} may have stopped on track
during {{ trigger.event.data.session.session_name }}.
{% if location.get('description') %}
Location: {{ location.get('description') }}
{% endif %}
mode: queued
max: 5
The wording is intentionally neutral. F1 Sensor detects likely stopped cars and on-track incidents, not guaranteed crashes. Location text only appears when fresh Track Map context is available.
Optional candidate incident notification
Candidate incidents are earlier and less certain than confirmed incidents. They can come from public context and can also be improved by optional F1TV Auth car movement data when it correlates with flag or Safety Car context.
Use candidate notifications only if you are comfortable with more false positives. Keep the wording neutral and consider limiting this automation to races and sprints.
alias: F1 - Candidate on-track incident
description: Advanced alert for candidate incident events
trigger:
- platform: event
event_type: f1_sensor_incident
condition:
- condition: template
value_template: "{{ trigger.event.data.phase == 'candidate' }}"
- condition: template
value_template: "{{ trigger.event.data.confidence in ['medium', 'high'] }}"
- condition: template
value_template: "{{ trigger.event.data.session.session_type in ['race', 'sprint'] }}"
action:
- service: notify.mobile_app_your_phone
data:
title: "Possible F1 incident candidate"
message: >
{% set data = trigger.event.data %}
{% set location = data.get('location') or {} %}
{{ data.driver.tla }} may be slow or stopped
during {{ data.session.session_name }}.
{% if location.get('description') %}
Location: {{ location.get('description') }}
{% endif %}
mode: queued
max: 5
Dashboard trigger for active incidents
Use the On-track Incident binary sensor when you only need to know whether any confirmed incident is currently active.
alias: F1 - Incident indicator on
description: Turn on a scene while a confirmed incident is active
trigger:
- platform: state
entity_id: binary_sensor.f1_on_track_incident
to: "on"
condition: []
action:
- service: scene.turn_on
target:
entity_id: scene.f1_caution
mode: single