Si quieres saber a qué te dedicas en tu vida, hoy te enseño a crear una tarjeta de control del tiempo para tener esta información.
Índice
¿Por qué controlar el tiempo dedicado?
La verdad, se me ocurren muchas situaciones en mi vida en las que he querido tener este dato, o al menos me habría venido bien tenerlo. Tener una tarjeta de control del tiempo puede ayudarte, por ejemplo a:
- Construir hábitos saludables y marcarte objetivos. Por ejemplo, puedes establecer una meta de 3 horas de deporte a la semana y recibir una notificación de felicitación cuando lo cumplas.
- Limitar ciertas actividades. Tener este dato puede ser revelador, por ejemplo, si eres de las personas que tiende a pasar más horas de lo aconsejable trabajando, o quieres controlar el tiempo que tus hijos dedican a la consola.
- Tener una perspectiva general de tu tiempo. En periodos en los que te sientes, por ejemplo, cansado o estresado puede ayudarte mucho analizar el tiempo que pasas fuera de casa o descansando.
Requisitos previos
Para crear estar tarjeta de control del tiempo necesitas:
- Sensores que midan el tiempo que dedicas a las actividades que quieras medir. Hay una infinidad de formas de hacerlo, pero puedes encontrar un montón de ideas revisando nuestro Sistema de Presencia Total.
- Haber instalado desde HACS las tarjetas ApexCharts Card (aunque he realidad puedes utilizar cualquier tarjeta para construir gráficos), Card Mod, Bubble Card, Bar Card y Mushroom Cards.
Sensores de control del tiempo
Lo primero que necesitamos para nuestra tarjeta de control del tiempo es contar con los sensores que nos proporcionen la información correspondiente.
Como te decía, en mi caso utilizo nuestro Sistema de Presencia Total, por lo que ya tengo un sensor que registra lo que estoy haciendo en cada momento (con el nivel de detalle que yo le quiera dar). No obstante, también puedes utilizar sensores más sencillos con el mismo propósito (por ejemplo, un enchufe inteligente conectado a la consola para saber si está encendida o apagada).
Sea como sea, tienes que crear un ayudante de tipo «Estadísticas históricas» para cada una de las categorías que quieras controlar. Por ejemplo, en mi caso he creado los siguientes ayudantes:
- Trabajando. Este ayudante recoge las horas que paso trabajando, en función de si mi laptop está encendido o no. Si trabajas fuera de casa, puedes medirlo en función de si te encuentras dentro de la zona geográfica de tu centro de trabajo. También puedes crear un sensor template, que sume ambos!
- Deporte. Este ayudante agrega las horas que paso haciendo deporte. En mi caso lo hago combinando cuando me encuentro dentro de ciertas áreas geográficas (como el rocódromo, la piscina, el gimnasio…) o cuando estoy conectado a mis auriculares de correr (independientemente de donde esté).
- En casa. Siendo el descanso una parte clave de la salud, me gusta saber cuando tiempo paso en casa (además de ser el sitio donde pasamos tiempo en familia). Esto es muy fácil de medir, usando cualquiera de tus ‘device tracker’.
- Fuera de casa. Como despejarse y tener ocio es importante, también registro el tiempo que paso fuera de casa. Este es fácil de medir, por oposición al anterior.
De esta forma he generado los siguientes sensores que reportan la distribución de las horas de la última semana (teniendo en cuenta que puedes haber dedicado tiempo a actividades que encajen en otras categorías).

Además, aprovechando toda esta información, voy a crear un sensor personalizado que me proporcione información cualitativa en función de mis pereferencias:
- Si paso más de 40 horas trabajando, toma el valor de «workaholic».
- Si hago menos de 3 horas de deporte a la semana, toma el valor de «sedentario».
- Si paso fuera de casa menos de 10 horas, toma el valor de «ermitaño».
Para ello simplemente he creado el siguiente código en mi fichero ‘sensors.yaml’:
- platform: template
sensors:
presencia_tito_tiempo:
friendly_name: "TiTo (tiempo)"
value_template: >
{% if states('sensor.presencia_tito_trabajando') | float > 40 %}
workaholic
{% elif states('sensor.presencia_tito_deporte') | float < 3 %}
sedentario
{% elif states('sensor.presencia_tito_fuera') | float < 10 %}
ermitaño
{% else %}
saludable
{% endif %}
icon_template: mdi:user
Tarjeta de control del tiempo
Ahora que tenemos preparada la información necesaria, vamos a crear nuestra tarjeta de control del tiempo. En mi caso voy a utilizar un gráfico de tipo ‘donut’ usando la tarjeta ApexCharts Card y en el centro del mismo, una imagen estilo Pixar que represente el estado del último sensor que he creado en el apartado anterior. De esta forma tendré la información cuantitiva y un ‘feedback’ visual de un rápido vistazo.


A continuación te dejo el código completo de la tarjeta del ejemplo:
type: vertical-stack
cards:
- type: custom:bubble-card
card_type: pop-up
hash: "#presencia_tito"
name: Tiempo dedicado
icon: mdi:timelapse
button_type: name
modules:
- default
- type: custom:apexcharts-card
apex_config:
chart:
height: 400
legend:
show: false
dataLabels:
formatter: |
EVAL:function(value) {
return value.toFixed(0) + " %";
}
chart_type: donut
header:
show: true
show_states: false
colorize_states: true
stacked: true
card_mod:
style: |
ha-card {
border: 0px;
box-shadow: none;
}
series:
- entity: sensor.presencia_tito_casa
color: cornflowerblue
name: Descanso
show:
legend_value: false
datalabels: percent
- entity: sensor.presencia_tito_deporte
color: crimson
name: Deporte
show:
legend_value: false
datalabels: percent
- entity: sensor.presencia_tito_fuera
color: orange
name: Ocio
show:
legend_value: false
datalabels: percent
- entity: sensor.presencia_tito_trabajando
color: yellowgreen
name: Trabajo
show:
legend_value: false
datalabels: percent
- type: custom:mushroom-template-card
icon: mdi:home
layout: vertical
secondary: ""
primary: ""
picture: /local/person/tito/{{states('sensor.presencia_tito_tiempo') }}.jpeg
card_mod:
style: |
ha-card {
background: transparent;
border: 0px;
box-shadow: none;
--icon-size: 195px;
margin-top: -288px;
}
- type: custom:bubble-card
card_type: separator
name: Última semana
icon: mdi:timer-sand-complete
modules:
- default
sub_button:
- entity: sensor.presencia_tito_tiempo
show_state: true
show_name: false
show_icon: false
state_background: false
show_background: false
card_mod:
style: |
ha-card {
margin-top: -10px!important;
margin-bottom: 10px!important;
}
- type: custom:bar-card
positions:
name: inside
card_mod:
style: |-
ha-card {
--primary-text-color: white;
background: transparent;
box-shadow: none;
margin-top: -20px;
border: 0px;
}
bar-card-name {
margin-left: 20px;
}
bar-card-currentbar {
border-radius: 10px !important;
}
bar-card-backgroundbar {
border-radius: 10px !important;
opacity: 0.7
}
bar-card-value {
margin-right: 12px;
font-size: 11px;
text-shadow: 1px 1px #0005;
opacity: .5
}
entities:
- entity: sensor.presencia_tito_trabajando
icon: mdi:egg
name: Trabajo
decimal: 0
positions:
icon: inside
color: yellowgreen
max: 40
unit_of_measurement: Horas
- entity: sensor.presencia_tito_deporte
icon: mdi:run-fast
name: Deporte
decimal: 0
positions:
icon: inside
color: crimson
max: 3
unit_of_measurement: Horas
- entity: sensor.presencia_tito_fuera
icon: mdi:glass-mug-variant
name: Ocio
decimal: 0
positions:
icon: inside
color: orange
max: 10
unit_of_measurement: Horas

