# Blueprint: aviso antes do jogo do seu time

> Avisa antes do jogo, repete até a bola rolar e acende a luz na cor do time se tiver alguém em casa. Usa a integração Próximo Jogo.

- Tipo: Blueprint (yaml)
- Testado no Home Assistant 2026.11
- Arquivo cru: https://dougsmarthome.com.br/api/codigos/blueprint-aviso-antes-do-jogo-do-seu-time/arquivo.yaml
- Importar no Home Assistant: https://my.home-assistant.io/redirect/blueprint_import/?blueprint_url=https%3A%2F%2Fdougsmarthome.com.br%2Fapi%2Fcodigos%2Fblueprint-aviso-antes-do-jogo-do-seu-time%2Farquivo.yaml
- Página: https://dougsmarthome.com.br/codigos/blueprint-aviso-antes-do-jogo-do-seu-time

## Código

```yaml
blueprint:
  name: Próximo Jogo - aviso antes do jogo
  description: >
    Avisa antes do jogo do seu time e repete o aviso de tempos em
    tempos até a bola rolar. Quando o jogo começa, se tiver alguém em casa,
    acende a luz na cor do time.


    Usa o sensor "Próximo jogo" da integração Próximo Jogo
    (https://github.com/dougbaptista/ha_proximo_jogo).
  domain: automation
  source_url: https://github.com/dougbaptista/ha_proximo_jogo/blob/main/blueprints/automation/proximo_jogo/aviso_do_jogo.yaml
  input:
    jogo:
      name: Time
      description: "O sensor Próximo jogo do time, por exemplo sensor.gremio_proximo_jogo."
      selector:
        entity:
          filter:
            - integration: proximo_jogo
              domain: sensor
              device_class: timestamp
    antecedencia:
      name: Começar a avisar quanto tempo antes
      default: 120
      selector:
        number:
          min: 5
          max: 1440
          step: 5
          unit_of_measurement: min
    intervalo:
      name: Repetir o aviso a cada
      description: Use 0 para avisar uma vez só.
      default: 30
      selector:
        number:
          min: 0
          max: 240
          step: 5
          unit_of_measurement: min
    aviso:
      name: Como avisar
      description: >
        Já vem com a notificação do próprio Home Assistant. Troque pelo
        celular (notify.mobile_app_...), Telegram, WhatsApp ou Alexa, usando
        {{ titulo }} e {{ mensagem }} no texto.
      default:
        - action: persistent_notification.create
          data:
            title: "{{ titulo }}"
            message: "{{ mensagem }}"
            notification_id: proximo_jogo_aviso
      selector:
        action: {}
    presenca:
      name: Quem conta como "tem alguém em casa"
      description: A zona Casa (zone.home), uma pessoa, um grupo ou um sensor de presença.
      default: zone.home
      selector:
        entity:
          filter:
            - domain: [zone, person, group, binary_sensor, input_boolean]
    luzes:
      name: Luzes que acendem quando o jogo começa (opcional)
      default: []
      selector:
        entity:
          multiple: true
          filter:
            - domain: light
    cor:
      name: Cor do time
      default: [0, 114, 206]
      selector:
        color_rgb: {}

mode: single
max_exceeded: silent

trigger_variables:
  jogo: !input jogo
  antecedencia: !input antecedencia

triggers:
  # Fica verdadeiro quando entra na janela de aviso. O now() faz o Home
  # Assistant reavaliar a cada minuto, então não precisa de outro gatilho.
  - trigger: template
    value_template: >
      {% set inicio = as_datetime(states(jogo), none) %}
      {{ inicio is not none
         and state_attr(jogo, 'hora_definida') != false
         and inicio - timedelta(minutes=antecedencia | int) <= now() < inicio }}

variables:
  jogo: !input jogo
  intervalo: !input intervalo
  presenca: !input presenca
  luzes: !input luzes
  cor: !input cor
  # Guardado como texto ISO: variáveis de automação não preservam datetime.
  inicio: "{{ states(jogo) }}"

actions:
  - repeat:
      sequence:
        - variables:
            minutos: "{{ ((as_datetime(inicio) - now()).total_seconds() / 60) | round(0) | int }}"
            quando: >-
              {% if minutos >= 60 %}{{ minutos // 60 }} h{{ ' %02d min' % (minutos % 60) if minutos % 60 else '' }}{% else %}{{ minutos }} min{% endif %}
            mensagem: >-
              {{ state_attr(jogo, 'mandante') }} x {{ state_attr(jogo, 'visitante') }} começa em {{ quando }}
              ({{ (as_datetime(inicio) | as_local).strftime('%H:%M') }}).
              {%- if state_attr(jogo, 'estadio') %} Local: {{ state_attr(jogo, 'estadio') }}.{% endif %}
              {%- if state_attr(jogo, 'transmissao') %} Onde assistir: {{ state_attr(jogo, 'transmissao') | join(', ') }}.{% endif %}
            titulo: "⚽ Jogo do {{ state_attr(jogo, 'time') }}"
        - choose: []
          default: !input aviso
        # Espera o intervalo, sem passar do início do jogo.
        - delay:
            seconds: >
              {% set falta = (as_datetime(inicio) - now()).total_seconds() %}
              {{ [falta, intervalo | int * 60 if intervalo | int > 0 else falta] | min | int }}
      # Para 30 s antes: a espera é truncada e, sem essa folga, sairia um
      # último aviso de "começa em 0 min".
      until:
        - condition: template
          value_template: >
            {{ now() >= as_datetime(inicio) - timedelta(seconds=30)
               or intervalo | int == 0 }}

  # Com aviso único (intervalo 0), espera o início para a parte da luz.
  - wait_template: "{{ now() >= as_datetime(inicio) }}"
    timeout:
      hours: 24

  - if:
      - condition: template
        value_template: >
          {% set s = states(presenca) %}
          {{ luzes | count > 0 and
             ((presenca.startswith('zone.') and s | int(0) > 0)
              or s in ['on', 'home']) }}
    then:
      - action: light.turn_on
        target:
          entity_id: "{{ luzes }}"
        data:
          rgb_color: "{{ cor }}"
          brightness_pct: 100
```

## Como usar

Avisa antes do jogo do seu time, repete o aviso de tempos em tempos até a bola rolar e, quando o jogo começa, acende a luz na cor do time se tiver alguém em casa. Precisa da integração [Próximo Jogo](https://github.com/dougbaptista/ha_proximo_jogo).

### Passo a passo

1. [Importe o blueprint no seu Home Assistant](https://my.home-assistant.io/redirect/blueprint_import/?blueprint_url=https%3A%2F%2Fgithub.com%2Fdougbaptista%2Fha_proximo_jogo%2Fblob%2Fmain%2Fblueprints%2Fautomation%2Fproximo_jogo%2Faviso_do_jogo.yaml) (ou copie o código para `blueprints/automation/proximo_jogo/`).
2. Crie uma automação a partir dele e preencha o formulário: time, com quanto tempo começar a avisar (padrão 120 min), repetir a cada (padrão 30 min; 0 = uma vez só), como avisar, quem conta como "em casa" (padrão `zone.home`), luzes e cor do time.
3. O aviso já vem configurado para as notificações do próprio Home Assistant. Para celular, Telegram, WhatsApp ou Alexa, troque a ação usando `{{ titulo }}` e `{{ mensagem }}`.

A mensagem sai assim: *"Atlético-MG x Grêmio começa em 1 h 40 min (18:00). Local: Arena MRV. Onde assistir: sportv, Premiere."*

Explicado no vídeo: https://dougsmarthome.com.br/videos/o-jogo-do-seu-time-no-home-assistant-horario-onde-passa-e-aviso-antes-da-bola-ro
Artigo: https://dougsmarthome.com.br/artigos/proximo-jogo-do-seu-time-no-home-assistant

## Veja também

- [Blueprint: sincroniza luz e interruptor nos dois sentidos](https://dougsmarthome.com.br/codigos/blueprint-sincroniza-luz-e-interruptor.md): Liga a luz pelo interruptor e o interruptor pela luz, sem loop. Uso na escada e na garagem aqui de casa.
- [Automations - Home Assistant [Pt-BR]](https://dougsmarthome.com.br/videos/automations-home-assistant-pt-br.md): Automations - Home Assistant Aprenda mais sobre automações no Home Assistant
- [Aviso de porta ou janela aberta quando todos saem](https://dougsmarthome.com.br/codigos/aviso-de-porta-ou-janela-aberta-ao-sair.md): Casa vazia por 2 minutos e algo ficou aberto? Chega uma notificação dizendo exatamente o quê.
- [Node Red e o nó "http request" com o Home Assistant](https://dougsmarthome.com.br/videos/node-red-e-o-no-http-request-com-o-home-assistant.md): Neste vídeo explico um puquinhgo de como funciona o nó "http request" mais o nó "html" para resgatar uma informação de um site através do método GET, como o próximo jogo do seu…
- [Sua casa em 3D no Home Assistant: NeonPlan 3D do zero (grátis)](https://dougsmarthome.com.br/videos/sua-casa-em-3d-no-home-assistant-neonplan-3d-do-zero-gratis.md): ⚠️ AVISO IMPORTANTE: o Marketplace nativo chega na versão 2026.11 do Home Assistant, com lançamento estável previsto para 4 de novembro de 2026. Gravei este vídeo na versão beta.…
- [Cards Incríveis no Home Assistant: Stack-in-Card, Mushroom & Card-Mod](https://dougsmarthome.com.br/videos/cards-incriveis-no-home-assistant-stack-in-card-mushroom-card-mod.md): Personalize sua interface do Home Assistant com Mushroom Template Card e Mushroom Chips! 🚀

---
Fonte: Doug Smart Home (https://dougsmarthome.com.br), por Douglas Baptista. Canal no YouTube: https://www.youtube.com/@dougsmarthome
