Contagem decrescente para jogo de futebol (¡qualquer equipa!) - Calendário+Card+Automatização

Nota: Esta aplicação é baseado num post que encontrei, há dias, no reddit. Por isso, tirando alguns insignificantes detalhes não tenho qualquer mérito de autoria.

Nota2: Algumas coisas tiveram de ser alteradas, devido às mais recentes actualizações. Em baixo segue a “aplicação” actualizada.

Antes de mais nada, devem seguir as excelentes indicações deixadas no post do @RodolfoVieira, sobre como conseguir as credenciais & password, de forma a conectar o Google Calendar ao vosso HA:

Tendo acesso ao vosso calendário, têm de ir ao site: https://fixtur.es/en/superliga
Escolham o país, competição e equipa - caso queiram uma diferente -, e de seguida carreguem no icon: “Google Calendar.”

Façam Restart, no HA ,e confirmem no ficheiro google_calendars.yaml a nova adição.

Tomem nota do device_id pretendido e criem os seguintes templates, no configuration.yaml:

  - platform: template
    sensors:
      time_until_next_equipa_game_minutes:
        friendly_name: Time Until Next Equipa Game Minutes
        unit_of_measurement: minutes
        value_template: >-
          {% if states.calendar.equipa.attributes.start_time %}
            {{((as_timestamp(states.calendar.equipa.attributes.start_time) - as_timestamp(now())) / 60) | int }}
          {%- else -%}
            0
          {%- endif %}

  - platform: template
    sensors:
      time_until_next_equipa_game:
        friendly_name: Time Until Next Equipa Game
        value_template: >-
          {% set time = (((states('sensor.time_until_next_equipa_game_minutes') | int) * 60) | int) | int %}
          {% set minutes = ((time % 3600) / 60) | int %}
          {% set hours = ((time % 86400) / 3600) | int %}
          {% set days = (time / 86400) | int %}
          {%- if time < 60 -%}
          Game!
          {%- else -%}
          {%- if days > 0 -%}
          {{ days }} days
          {%- endif -%}
          {%- if hours > 0 -%}
             {%- if days > 0 or hours -%}
                  {{ ' ' }}
              {%- endif -%}
              {{ hours }} hours
          {%- endif -%}
          {%- if minutes > 0 -%}
              {%- if days > 0 or hours > 0 -%}
                  {{ ' ' }}
              {%- endif -%}
              {{ minutes }} minutes
          {%- endif -%}
          {%- endif -%}

Alterem, “equipa” pelo vosso device_id.

De seguida, numa localização à vossa escolha, no Lovelace, criem uma nova Card e escolham a última opção “Manual”, acrescentando o seguinte:

type: button
tap_action:
  action: more-info
entity: sensor.time_until_next_equipa_game
show_state: true
show_icon: false
hold_action:
  action: none

Mais uma vez, alterem “equipa” pelo vosso device_id.

O resultado deverá ser algo como isto:

Tottenham, no meu caso.
O quê?.. Gosto de ver portugueses a darem cartas no estrangeiro. :wink:

Quanto à Automatização; vão a Configuration/Configuração, Automations/Automatizações e Add Automations/Adicionar Automatizações.

Comecem com uma Automatização “limpa”; carreguem no três pontinhos (hamburguer) no topo-direito e escolhe a opção de editar como YAML.
Apaguem o que lá aparece e copiem o seguinte code:

alias: Equipa's Game - Start (Minutes)
description: ''
trigger:
  - platform: state
    entity_id: sensor.time_until_next_equipa_game
    from: '10'
    to: '9'
condition: []
action:
  - service: tts.google_translate_say
    data:
      message: The game is starting.
      entity_id: all
mode: single

Mas, mais uma vez, se tiverem seguido as indicações, apenas terão de alterar o “equipa” pelo device_id de antes.

No meu caso, criei o trigger para quando os minutos decrescentes se alteram de 10->9, de modo a dar-me tempo para preparar tudo. Assim como a receber uma notificação-falada em todos os Google Minis, pela casa: “The game is starting.

Alterem isso ao vosso gosto.

PS. Dêem, também, uma vista de olhos no Tutorial do @vpnobrega, sobre as transmissões televisivas dos jogos. Parece-me um óptimo acrescento!

edit: actualização

4 Curtiram

Boas,

Excelente trabalho, no entanto o template para o tempo em dias não esta a funcionar.
Eu sou novo nisto do Home assistant e ainda nao explorei muito os templates mas o problema parece ser com a conversão como timestamp.

Ignora, ja está fixed, o problema estava entre o teclado e a cadeira :smiley:

Ahaha, ainda bem que conseguiste resolver.
Bons jogos. :wink:

No configuration.yaml usando o File editor, não consigo adicionar pois fica uma exclamacão informando erro.

Vai-me ser difícil ajudar pois já não estou a seguir nenhuma equipa e fiz há tempos uma “renovação” ao meu HA.

Qual a msg de erro que recebes a tentar inserir o code no configuration.yaml?

Não te esqueças que “- platform: template”, ou outras, por sinal, têm de ficar debaixo de “sensor:”; algo como:

sensor:
#Calendar Equipa
  - platform: template
    sensors:
        equipa_match_date:
          entity_id: calendar.equipa
          friendly_name: Equipa Next Match in Days
          value_template: >-
        ...................

Se já tiveres algum sensor criado em configuration.yaml tens de por isso por baixo. Caso tenhas criado um file sensors.yaml, à parte, é aí que fazes copy&past, do template em cima.

Consegui fazer a parte do sensor, porem ao criar o card esta retornando a informacao de indisponivel!
Fiquei sem entender

Hmmm, parece que as últimas actualizações partiram de alguma forma o code.

Altera os sensores, anteriormente criados, por isto:

  - platform: template
    sensors:
      time_until_next_liverpool_game_minutes:
        friendly_name: Time Until Next Liverpool Game Minutes
        unit_of_measurement: minutes
        value_template: >-
          {% if states.calendar.liverpool.attributes.start_time %}
            {{((as_timestamp(states.calendar.liverpool.attributes.start_time) - as_timestamp(now())) / 60) | int }}
          {%- else -%}
            0
          {%- endif %}

  - platform: template
    sensors:
      time_until_next_liverpool_game:
        friendly_name: Time Until Next Liverpool Game
        value_template: >-
          {% set time = (((states('sensor.time_until_next_liverpool_game_minutes') | int) * 60) | int) | int %}
          {% set minutes = ((time % 3600) / 60) | int %}
          {% set hours = ((time % 86400) / 3600) | int %}
          {% set days = (time / 86400) | int %}
          {%- if time < 60 -%}
          Jogo!
          {%- else -%}
          {%- if days > 0 -%}
          {{ days }} dias
          {%- endif -%}
          {%- if hours > 0 -%}
             {%- if days > 0 or hours -%}
                  {{ ' ' }}
              {%- endif -%}
              {{ hours }} horas
          {%- endif -%}
          {%- if minutes > 0 -%}
              {%- if days > 0 or hours > 0 -%}
                  {{ '  ' }}
              {%- endif -%}
              {{ minutes }} minutos
          {%- endif -%}
          {%- endif -%}

Confirma a validação, e reinicia o HA.

Depois cria uma nova card, ou altera a que já criaste por isto:

type: button
tap_action:
  action: more-info
entity: sensor.time_until_next_liverpool_game
show_state: true
show_icon: false
hold_action:
  action: none

Resultado:

Ps. Como tens o HA em português alterei algumas coisas para pt, mas esqueci-me da msg no top do card. Substitui apenas o “Time Until Next Liverpool Game”, no segundo sensor, por algo como “Próximo jogo do Liverpool”.

1 Curtiu

Fiz como recomendou e funcionou! Muito Obrigado por compartilhar!

Ainda é funcional?
Tentei com meu time (FLAMENGO) e não funcionou…

Parece que está relacionado com o Fixtur.

O último registo que têm do Flamengo é a Dec 10, 2021. (link - no final da página)
Talvez atualizem nos próximos dias; não sei. :thinking:

Prever o resultado de eventos no futebol, como qualquer outro esporte, envolve uma combinação de conhecimento, análise e compreensão do jogo. No passado, quando comecei a fazer previsões em https://mostbet-cassino.com.br/, eu não me divertia tanto porque não tinha experiência. Mas agora eu a tenho, e posso compartilhá-la com vocês. O primeiro passo para prever o resultado de uma partida de futebol é ter uma compreensão completa do jogo. Isto inclui conhecer as regras, compreender as diferentes posições e papéis dos jogadores, conhecer as táticas dos times e conhecer os pontos fortes e fracos dos diferentes times e jogadores. Acompanhar as notícias do futebol, assistir às partidas e estudar as estatísticas dos jogos ajudará você a obter informações valiosas e melhorar seu conhecimento do jogo.


Copyright © 2017-2021. Todos os direitos reservados
CPHA.pt - info@cpha.pt


FAQ | Termos de Serviço/Regras | Política de Privacidade