This is my first attempt at creating a blueprint for automations. Looking for suggestions to improve.
blueprint:
name: Team Score Management
description: >
Manages team score updates, detects scoring events, and updates scores for
active games dynamically. Allows adding additional actions after each condition.
domain: automation
input:
team_sensor:
name: Team Sensor
description: >
The sensor entity tracking the team's state and score (e.g., sensor.lions_football).
selector:
entity:
integration: teamtracker
multiple: false
score_input_text:
name: Score Input Text
description: >
The input_select entity for displaying the type of score (e.g., Touchdown, Extra Point), This can be used for conditions on the conditional card to change your dashboard.
selector:
entity:
domain: input_text
update_teamtracker_sensor:
name: How often the Team Tracker Senesor
description: This sets how often the Team Tracker Sensor should update, when the game is playing (State = "IN") Every 10 to 59 seconds
default: 30
selector:
number:
min: 10
max: 59
mode: box
game_start_actions:
name: Game Starts Actions
description: >
A sequence of actions to perform after game starts.
default: []
selector:
action: {}
scored_actions:
name: Any Score Actions
description: >
A sequence of actions to perform after any score.
default: []
selector:
action: {}
touchdown_actions:
name: Touchdown Actions
description: >
A sequence of actions to perform after Touchdown.
default: []
selector:
action: {}
extra_point_actions:
name: Extra Point Actions
description: >
A sequence of actions to perform after Extra Point.
default: []
selector:
action: {}
safety_2_point_conversion_actions:
name: Safety or 2 Point Conversion Actions
description: >
A sequence of actions to perform after Safety or 2 Point Conversion.
default: []
selector:
action: {}
field_goal_actions:
name: Field Goal Actions
description: >
A sequence of actions to perform after Field Goal.
default: []
selector:
action: {}
trigger:
- platform: time_pattern
seconds: !input update_teamtracker_sensor
- platform: state
entity_id: !input team_sensor
condition:
- condition: state
entity_id: !input team_sensor
state: "IN"
action:
- parallel:
- sequence:
- delay: !input update_teamtracker_sensor
- action: homeassistant.reload_config_entry
target:
entity_id: !input team_sensor
data: {}
- choose:
# Detect scoring events
- conditions:
- condition: template
value_template: >
{{ trigger.to_state.state != trigger.from_state.state }}
sequence:
- choose:
- conditions:
# Game Starting
- condition: template
value_template: >
{{ trigger.to_state.state == "IN" and trigger.from_state.state == "PRE" }}
sequence:
- parallel:
- sequence:
- service: input_text.set_value
target:
entity_id: !input score_input_text
data:
option: Game Starting
- delay: "00:00:30"
- service: input_text.set_value
target:
entity_id: !input score_input_text
data:
option: None
- sequence: !input game_start_actions
- conditions:
# Any Score
- condition: template
value_template: >
{{ (trigger.to_state.attributes.team_score | int) -
(trigger.from_state.attributes.team_score | int) >= 1 }}
sequence:
- parallel:
- sequence:
- service: input_text.set_value
target:
entity_id: !input score_input_text
data:
option: Scored
- delay: "00:00:30"
- service: input_text.set_value
target:
entity_id: !input score_input_text
data:
option: None
- sequence: !input scored_actions
- conditions:
# Touchdown
- condition: template
value_template: >
{{ (trigger.to_state.attributes.team_score | int) -
(trigger.from_state.attributes.team_score | int) == 6 }}
sequence:
- parallel:
- sequence:
- service: input_text.set_value
target:
entity_id: !input score_input_text
data:
option: Touchdown
- delay: "00:00:30"
- service: input_text.set_value
target:
entity_id: !input score_input_text
data:
option: None
- sequence: !input touchdown_actions
- conditions:
# Extra Point
- condition: template
value_template: >
{{ (trigger.to_state.attributes.team_score | int) -
(trigger.from_state.attributes.team_score | int) == 1 }}
sequence:
- parallel:
- sequence:
- service: input_text.set_value
target:
entity_id: !input score_input_text
data:
option: Extra Point
- delay: "00:00:30"
- service: input_text.set_value
target:
entity_id: !input score_input_text
data:
option: None
- sequence: !input extra_point_actions
- conditions:
# Safety or 2 Point Conversion
- condition: template
value_template: >
{{ (trigger.to_state.attributes.team_score | int) -
(trigger.from_state.attributes.team_score | int) == 2 }}
sequence:
- parallel:
- sequence:
- service: input_text.set_value
target:
entity_id: !input score_input_text
data:
option: Safety / 2 Point Conversion
- delay: "00:00:30"
- service: input_text.set_value
target:
entity_id: !input score_input_text
data:
option: None
- sequence: !input safety_2_point_conversion_actions
- conditions:
# Field Goal
- condition: template
value_template: >
{{ (trigger.to_state.attributes.team_score | int) -
(trigger.from_state.attributes.team_score | int) == 3 }}
sequence:
- parallel:
- sequence:
- service: input_text.set_value
target:
entity_id: !input score_input_text
data:
option: Field Goal
- delay: "00:00:30"
- service: input_text.set_value
target:
entity_id: !input score_input_text
data:
option: None
- sequence: !input field_goal_actions
mode: parallel