Skip to content

Control horario automático

Hoy en control horario vamos a ver cómo hacerlo para hacer una anotación a nuestro calendario de Google cada vez que entramos o salimos de una zona en Home Assistant. También crearé unos sensores que contaran el tiempo que estoy en cada zona y así también anotar este tiempo en el calendario.

Lo Primero que necesito es crear las zonas. Para ello voy a configuración > Zonas, selecciono en el mapa y le doy a Crear.

Acto seguido voy a Configuración > Personas y creo una persona para cada miembro de la familia. Aquí es dónde voy a indicar cuál es el dispositivo de seguimiento que utilizará Home Assistant para detectar cuándo entro y salgo de alguna zona.

Ahora toca crear los sensores que se encargarán de contar el tiempo que paso en cada zona. Aquí te dejo los que yo he creado pero no olvides de cambiar tu dispositivo de seguimiento y el nombre de la zona a seguir. Recuerda que tienes que crear sensores para cada zona que quieras controlar.

Y ahora ya sólo nos falta tener la integración de Google Calendar a nuestro Home Assistant

CONTROL HORARIO TIEMPO QUE ESTOY EN EL COLEGIO

##### CONTROL HORARIO TIEMPO QUE ESTOY EN EL COLEGIO

- platform: history_stats
  name: Albert colegio hoy
  entity_id: person.albert
  state: "colegio"
  type: time
  start: "{{ now().replace(hour=0).replace(minute=0).replace(second=0) }}"
  end: "{{ now() }}"

- platform: template
  sensors:
    albert_colegio_hoy_minutos:
      friendly_name: "Albert colegio hoy"
      value_template: "{{ state_attr('sensor.albert_colegio_hoy', 'value') }}"

- platform: history_stats
  name: Albert colegio  esta semana
  entity_id: person.albert
  state: "colegio"
  type: time
  start: "{{ as_timestamp( now().replace(hour=0).replace(minute=0).replace(second=0) ) - now().weekday() * 86400 }}"
  end: "{{ now() }}"

- platform: template
  sensors:
    albert_colegio_semana_minutos:
      friendly_name: "Albert colegio esta semana"
      value_template: "{{ state_attr('sensor.albert_colegio_esta_semana', 'value') }}"

- platform: history_stats
  name: Albert colegio este mes
  entity_id: person.albert
  state: "colegio"
  type: time
  end: "{{ now().replace(hour=0, minute=0, second=0) }}"
  duration:
    days: 30

- platform: template
  sensors:
    albert_colegio_mes_minutos:
      friendly_name: "Albert colegio este mes"
      value_template: "{{ state_attr('sensor.albert_colegio_este_mes', 'value') }}"

Extra!! no sale en el vídeo pero aquí te dejo unos sensores que cuentan cuantas veces entras y sales de la cada zona.

#### VECES QUE PAPI VA AL COLEGIO

- platform: history_stats
  name: Papi va a cole hoy
  entity_id: person.albert
  state: "colegio"
  type: count
  start: "{{ now().replace(hour=0).replace(minute=0).replace(second=0) }}"
  end: "{{ now() }}"

- platform: history_stats
  name: Papi va a cole esta semana
  entity_id: person.albert
  state: "colegio"
  type: count
  start: "{{ as_timestamp( now().replace(hour=0).replace(minute=0).replace(second=0) ) - now().weekday() * 86400 }}"
  end: "{{ now() }}"

- platform: history_stats
  name: Papi va a cole este mes
  entity_id: person.albert
  state: "colegio"
  type: count
  end: "{{ now().replace(hour=0, minute=0, second=0) }}"
  duration:
    days: 30
Control horario Google Calendar

Y ahora vamos a por las automatizaciones. Recuerda que también las tendras que configurar con los datos de tus sensores

- id: '1633684973186'
  alias: colegio papi llega
  description: ''
  trigger:
  - platform: zone
    entity_id: person.albert
    zone: zone.colegio
    event: enter
  condition: []
  action:
  - service: google.add_event
    data:
      calendar_id: tuid
      summary: 'Papi llega al colegio. '
      start_date_time: '{{ now() }}'
      end_date_time: '{{ now() }}'
  - delay:
      hours: 1
      minutes: 0
      seconds: 0
      milliseconds: 0
  mode: single


- id: '1633686513021'
  alias: colegio papi sale
  description: ''
  trigger:
  - platform: zone
    entity_id: person.albert
    zone: zone.colegio
    event: leave
  condition: []
  action:
  - service: google.add_event
    data:
      calendar_id: tuid
      summary: 'Papi sale del colegio. '
      start_date_time: '{{ now() }}'
      end_date_time: '{{ now() }}'
  - delay:
      hours: 1
      minutes: 0
      seconds: 0
      milliseconds: 0
  mode: single



- id: '1633689084156'
  alias: colegio tiempo esta semana
  description: ''
  trigger:
  - platform: time
    at: '23:59'
  condition:
  - condition: state
    entity_id: sensor.weekday
    state: Viernes
  action:
  - service: google.add_event
    data:
      calendar_id: tuid
      summary: 'Esta semana papi ha estado {{states(''sensor.papi_va_a_cole_esta_semana'')}}
        veces al colegio con un tiempo de {{states(''sensor.albert_colegio_semana_minutos'')}} '
      start_date_time: '{{ now() }}'
      end_date_time: '{{ now() }}'
  mode: single



- id: '1633689372804'
  alias: colegio tiempo este mes
  description: ''
  trigger:
  - platform: time
    at: '23:59'
  condition:
  - condition: template
    value_template: '{{ (now().date() + timedelta(days=1)).day == 1}}'
  action:
  - service: google.add_event
    data:
      calendar_id: tuid
      summary: Este mes  papi ha estado  {{states('sensor.papi_va_a_cole_este_mes')}}
        veces al colegio con un tiempo de {{states('sensor.albert_colegio_mes_minutos')}}
      start_date_time: '{{ now() }}'
      end_date_time: '{{ now() }}'
  mode: single

Ahora te recomiendo ver el vídeo dónde está todo perfectamente explicado

Índice de contenido

    Sígueme a Youtube

    Sígueme en Youtube
    Ajustes