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
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