blueprint: name: "AWTRIX - NFL Team Scoreboard" author: Hank_the_Tank description: > # NFL Team Scoreboard for AWTRIX Light ## Screenshots ![](https://raw.githubusercontent.com/fettesb/Homeassistant_blueprints/main/screenshot.svg) - ![](https://raw.githubusercontent.com/fettesb/Homeassistant_blueprints/main/screenshot2.svg) - ![](https://raw.githubusercontent.com/fettesb/Homeassistant_blueprints/main/screenshot3.svg) ## Prerequisites **Before** using this blueprint, ensure that you have **HACS** installed. You also need the ha-teamtracker integration [here](https://github.com/vasqued2/ha-teamtracker). ## Credits to Blueforcer for Awtrix Light If you want to support his hard work in developing awtrix light, please consider to buy your Ulanzi clock with his affiliate links [EU] [link](https://www.ulanzi.de/products/ulanzi-pixel-smart-uhr-2882?ref=28e02dxl) [US] [link](https://www.ulanzi.com/products/ulanzi-pixel-smart-clock-2882?ref=28e02dxl) If you already have hundreds of clocks, there are more ways to support him. [Github](https://github.com/Blueforcer/awtrix-light#support) wanna join the [Darkside](https://discord.gg/a3n8spsn)? ## Get the Awtrix Light Companion App for iOS/Android Get it on Google Play Get it on Google Play **Special Thanks to RobG** This would not be possible without him **Thanks in advance** domain: automation input: awtrix: name: AWTRIX Device description: Select the Awtrix 3 selector: device: integration: mqtt manufacturer: Blueforcer model: AWTRIX 3 multiple: true appname: name: Awtrix Application name description: >- This is the app name listed in the MQTT topic - it should be unique default: "nflteamscore" selector: text: message_duration: name: Message Duration ⏱️ description: >- How long should the message remain on the screen (in seconds). selector: number: min: 0 max: 300 unit_of_measurement: "sec" default: 15 my_sensor: name: Football Sensor description: Select your Football Team Sensor selector: entity: filter: - integration: teamtracker source_url: https://raw.githubusercontent.com/fettesb/Homeassistant_blueprints/main/Awtrix%20NFL%20Team%20Scoreboard/awtrix_nfl_team_scoreboard.yaml variables: device_ids: !input awtrix devices: >- {% macro get_device(device_id) %} {{ states((device_entities(device_id) | select('search','device_topic') | list)[0] | default('unknown')) }} {% endmacro %} {% set ns = namespace(devices=[]) %} {% for device_id in device_ids %} {% set device=get_device(device_id)|replace(' ','')|replace('\n','') %} {% set ns.devices = ns.devices + [ device ] %} {% endfor %} {{ ns.devices | reject('match','unavailable|unknown') | list }} appname: !input appname my_sensor: !input my_sensor message_duration: !input message_duration team_colors_0: "{{ state_attr(my_sensor, 'team_colors')[0] }}" team_colors_1: "{{ state_attr(my_sensor, 'team_colors')[1] }}" opponent_colors_0: "{{ state_attr(my_sensor, 'opponent_colors')[0] }}" opponent_colors_1: "{{ state_attr(my_sensor, 'opponent_colors')[1] }}" team_score: >- {% set raw_team_score = state_attr(my_sensor, 'team_score') %} {% if raw_team_score|int < 10 %} {{ "0" + raw_team_score|string }} {% else %} {{ raw_team_score|string }} {% endif %} opponent_score: >- {% set raw_opponent_score = state_attr(my_sensor, 'opponent_score') %} {% if raw_opponent_score|int < 10 %} {{ "0" + raw_opponent_score|string }} {% else %} {{ raw_opponent_score|string }} {% endif %} first_quarter: >- {"dp":[12,7,"#ffffff"]}, {"dp":[14,7,"#5F5F5F"]}, {"dp":[17,7,"#5F5F5F"]}, {"dp":[19,7,"#5F5F5F"]}, second_quarter: >- {"dp":[12,7,"#ffffff"]}, {"dp":[14,7,"#ffffff"]}, {"dp":[17,7,"#5F5F5F"]}, {"dp":[19,7,"#5F5F5F"]}, third_quarter: >- {"dp":[12,7,"#ffffff"]}, {"dp":[14,7,"#ffffff"]}, {"dp":[17,7,"#ffffff"]}, {"dp":[19,7,"#5F5F5F"]}, fourth_quarter: >- {"dp":[12,7,"#ffffff"]}, {"dp":[14,7,"#ffffff"]}, {"dp":[17,7,"#ffffff"]}, {"dp":[19,7,"#ffffff"]}, payload_switch: >- { "name" : "{{ appname }}" } payload_game_start: >- { "draw":[ {"df":[0,0,16,8,"{{ team_colors_0 }}"]}, {"df":[16,0,16,8,"{{ opponent_colors_0 }}"]}, {"dl":[1,0,1,7,"{{ team_colors_1 }}"]}, {"dl":[3,0,3,7,"{{ team_colors_1 }}"]}, {"dl":[28,0,28,7,"{{ opponent_colors_1 }}"]}, {"dl":[30,0,30,7,"{{ opponent_colors_1 }}"]}, {{ first_quarter }} {"dt":[7, 1, "{{ team_score }}",[255,255,255]]}, {"dt":[18, 1, "{{ opponent_score }}",[255,255,255]]}, {"dl":[15,3,16,3,"#ffffff"]} ], "duration": {{ message_duration }} } payload_second_quarter: >- { "draw":[ {"df":[0,0,16,8,"{{ team_colors_0 }}"]}, {"df":[16,0,16,8,"{{ opponent_colors_0 }}"]}, {"dl":[1,0,1,7,"{{ team_colors_1 }}"]}, {"dl":[3,0,3,7,"{{ team_colors_1 }}"]}, {"dl":[28,0,28,7,"{{ opponent_colors_1 }}"]}, {"dl":[30,0,30,7,"{{ opponent_colors_1 }}"]}, {{ second_quarter }} {"dt":[7, 1, "{{ team_score }}",[255,255,255]]}, {"dt":[18, 1, "{{ opponent_score }}",[255,255,255]]}, {"dl":[15,3,16,3,"#ffffff"]} ], "duration": {{ message_duration }} } payload_third_quarter: >- { "draw":[ {"df":[0,0,16,8,"{{ team_colors_0 }}"]}, {"df":[16,0,16,8,"{{ opponent_colors_0 }}"]}, {"dl":[1,0,1,7,"{{ team_colors_1 }}"]}, {"dl":[3,0,3,7,"{{ team_colors_1 }}"]}, {"dl":[28,0,28,7,"{{ opponent_colors_1 }}"]}, {"dl":[30,0,30,7,"{{ opponent_colors_1 }}"]}, {{ third_quarter }} {"dt":[7, 1, "{{ team_score }}",[255,255,255]]}, {"dt":[18, 1, "{{ opponent_score }}",[255,255,255]]}, {"dl":[15,3,16,3,"#ffffff"]} ], "duration": {{ message_duration }} } payload_fourth_quarter: >- { "draw":[ {"df":[0,0,16,8,"{{ team_colors_0 }}"]}, {"df":[16,0,16,8,"{{ opponent_colors_0 }}"]}, {"dl":[1,0,1,7,"{{ team_colors_1 }}"]}, {"dl":[3,0,3,7,"{{ team_colors_1 }}"]}, {"dl":[28,0,28,7,"{{ opponent_colors_1 }}"]}, {"dl":[30,0,30,7,"{{ opponent_colors_1 }}"]}, {{ fourth_quarter }} {"dt":[7, 1, "{{ team_score }}",[255,255,255]]}, {"dt":[18, 1, "{{ opponent_score }}",[255,255,255]]}, {"dl":[15,3,16,3,"#ffffff"]} ], "duration": {{ message_duration }} } trigger: - platform: state entity_id: - !input my_sensor to: IN id: Game Start - platform: state entity_id: - !input my_sensor to: POST id: Game End - platform: state entity_id: - !input my_sensor attribute: team_score id: Team Score Change - platform: state entity_id: - !input my_sensor attribute: opponent_score id: Opponent Score Change - platform: state entity_id: - !input my_sensor attribute: quarter id: Quarter Change condition: [] action: - repeat: for_each: "{{ devices }}" sequence: - choose: - conditions: - condition: trigger id: - Game Start sequence: - service: mqtt.publish data: qos: 0 retain: false topic: "{{ repeat.item }}/custom/{{ appname }}" payload: "{{ payload_game_start }}" - service: mqtt.publish data: qos: 0 retain: false topic: "{{ repeat.item }}/switch" payload: "{{ payload_switch }}" - conditions: - condition: trigger id: - Quarter Change - condition: numeric_state entity_id: !input my_sensor attribute: quarter above: 1 below: 3 sequence: - service: mqtt.publish data: qos: 0 retain: false topic: "{{ repeat.item }}/custom/{{ appname }}" payload: "{{ payload_second_quarter }}" - conditions: - condition: trigger id: - Quarter Change - condition: numeric_state entity_id: !input my_sensor attribute: quarter above: 2 below: 4 sequence: - service: mqtt.publish data: qos: 0 retain: false topic: "{{ repeat.item }}/custom/{{ appname }}" payload: "{{ payload_third_quarter }}" - conditions: - condition: trigger id: - Quarter Change - condition: numeric_state entity_id: !input my_sensor attribute: quarter above: 3 below: 5 sequence: - service: mqtt.publish data: qos: 0 retain: false topic: "{{ repeat.item }}/custom/{{ appname }}" payload: "{{ payload_fourth_quarter }}" - conditions: - condition: trigger id: - Team Score Change - condition: numeric_state entity_id: !input my_sensor attribute: quarter above: 0 below: 2 sequence: - service: mqtt.publish data: qos: 0 retain: false topic: "{{ repeat.item }}/custom/{{ appname }}" payload: "{{ payload_game_start }}" - service: mqtt.publish data: qos: 0 retain: false topic: "{{ repeat.item }}/switch" payload: "{{ payload_switch }}" - conditions: - condition: trigger id: - Team Score Change - condition: numeric_state entity_id: !input my_sensor attribute: quarter above: 1 below: 3 sequence: - service: mqtt.publish data: qos: 0 retain: false topic: "{{ repeat.item }}/custom/{{ appname }}" payload: "{{ payload_second_quarter }}" - conditions: - condition: trigger id: - Team Score Change - condition: numeric_state entity_id: !input my_sensor attribute: quarter above: 2 below: 4 sequence: - service: mqtt.publish data: qos: 0 retain: false topic: "{{ repeat.item }}/custom/{{ appname }}" payload: "{{ payload_third_quarter }}" - conditions: - condition: trigger id: - Team Score Change - condition: numeric_state entity_id: !input my_sensor attribute: quarter above: 3 below: 5 sequence: - service: mqtt.publish data: qos: 0 retain: false topic: "{{ repeat.item }}/custom/{{ appname }}" payload: "{{ payload_fourth_quarter }}" - conditions: - condition: trigger id: - Opponent Score Change - condition: numeric_state entity_id: !input my_sensor attribute: quarter above: 0 below: 2 sequence: - service: mqtt.publish data: qos: 0 retain: false topic: "{{ repeat.item }}/custom/{{ appname }}" payload: "{{ payload_game_start }}" - service: mqtt.publish data: qos: 0 retain: false topic: "{{ repeat.item }}/switch" payload: "{{ payload_switch }}" - conditions: - condition: trigger id: - Opponent Score Change - condition: numeric_state entity_id: !input my_sensor attribute: quarter above: 1 below: 3 sequence: - service: mqtt.publish data: qos: 0 retain: false topic: "{{ repeat.item }}/custom/{{ appname }}" payload: "{{ payload_second_quarter }}" - conditions: - condition: trigger id: - Opponent Score Change - condition: numeric_state entity_id: !input my_sensor attribute: quarter above: 2 below: 4 sequence: - service: mqtt.publish data: qos: 0 retain: false topic: "{{ repeat.item }}/custom/{{ appname }}" payload: "{{ payload_third_quarter }}" - conditions: - condition: trigger id: - Opponent Score Change - condition: numeric_state entity_id: !input my_sensor attribute: quarter above: 3 below: 5 sequence: - service: mqtt.publish data: qos: 0 retain: false topic: "{{ repeat.item }}/custom/{{ appname }}" payload: "{{ payload_fourth_quarter }}" - repeat: for_each: "{{ devices }}" sequence: - choose: - conditions: - condition: trigger id: - Game End sequence: - service: mqtt.publish data: qos: 0 retain: false topic: "{{ repeat.item }}/custom/{{ appname }}" mode: restart