📑 Como saber a que horas deves sair de casa para ir trabalhar ou chegar a outro destino (carro)

https://www.dropbox.com/s/i09vl26k4xttw23/transito.jpg?dl=0

Andei entretido a lêr umas coisas e deparei-me com algo interessante que pode servir para quem anda de carro e tem certas rotinas para chegar ao trabalho.
Muitas das vezes, pelo menos a mim acontece-me, vou pela auto estrada e a meio do caminho há um acidente e tenho que estar na fila, ou então sei pelo rádio que há x acidente no sitio y, e tenho que arranjar alternativas… Alternativas essas que podem ser muito em cima do Joelho, o que nos faz chegar atrasados.
O que vou aqui partilhar, mais uma vez, usa a API da google, o google travel time, que com alguma matemática à mistura torna a coisa útil, contudo pode ser crucial saber que a informação é actualizada, apenas, de 5 em 5 minutos (obrigado @Maddoctor por esta info), mas vamos então ao que interessa.

Caso ainda não tenhas criado uma api para usares o google travel time terás que o fazer. Se tiveres dúvidas, pergunta.

Ok, algumas considerações:

  • precisamos de converter as horas para decimal, ou seja, uma hora tem 60 minutos, mas vamos dividi-la em 100.

Exemplos:

  • 10:15, faríamos as contas da seguinte maneira -> 15 / 60 x 100 = 25 -> 10.25
  • 10:30 -> 30 / 60 x 100 = 50 -> 10.50

Vamos então imaginar o seguinte cenário:

No trabalho, entramos às 08:00 da manhã e sabemos que temos que sair de casa às 07:30 para chegarmos a horas.
Então a nossa rotina seria sair de casa todos os dias a mesma hora. Havendo um acidente no caminho, chegaríamos atrasados. Vamos então agora fazer para que o Home Assistant nos informe sempre a que horas devemos sair de casa, tendo em conta o estado do trânsito.

Código em modo package (altera as coordenadas GPS para as tuas), se não sabes como usar package consulta AQUI

homeassistant:
zone:
  - name: trabalho
    latitude: 36.123456
    longitude: -76.123456
    radius: 300
    icon: mdi:domain

  - name: casa
    latitude: 35.123456
    longitude: -75.123456
    radius: 300
    icon: mdi:home

binary_sensor:

 - platform: workday
   country: PT
   workdays: [mon, tue, wed, thu, fri]
   
sensors:
  - platform: time_date

  - platform: uptime
    name: "Tempo HA"
    unit_of_measurement: minutes

  - platform: google_travel_time
    name: tempo trabalho
    api_key: !secret google_maps_api_key
    origin: zone.home
    destination: zone.work

# Se entramos às 08:00 e queremos ser avisados 10 minutos antes da hora de saída, "fazemos de conta" que entramos às 7:50 que, pelas contas que fizemos acima são: 50 / 60 x 100 = 83 -> 7.83

   - platform: template
     sensors:
       tempo ate ao trabalho:
         value_template: >
          {% set t = strptime(states.sensor.time.state,'%H:%M') %}
          {{ ( t.hour + t.minute / 60 ) > ( 7.83 - states.sensor.tempo_trabalho.state | int / 60) }}
         friendly_name: 'Hora de sair para o trabalho'

automations
- alias: "Notifica-me quando devo sair para o trabalho"
  trigger:
  - platform: state
    entity_id: sensor.tempo_ate_ao_trabalho
    to: 'True' 
    from: 'False'
  condition:
  - condition: numeric_state
    entity_id: sensor.tempo_ha
    above: 1    
  - condition: state
    entity_id: binary_sensor.workday_sensor
    state: 'on'
  action:
  - service: notify.telegram
    data:
      title: "Hora de dar corda aos sapatos"
      message: "Vai vergar a mola que está quase na hora"

Poderás trocar a parte do action, para em vez de seres notificado no telegram ou outro notificador, seres antes notificado via TTS que é o que para mim faz mais sentido caso estejas em casa.

Com esta automação tens uma ajuda se tens que sair mais cedo ou não…

Isto dá para fazer de outras maneiras. Se usas de outra forma partilha conosco.
Além disso pode ser facilmente alterado para usar outras plataformas, como o waze.

Para comentares este tópico clica aqui: