Saltar al contenido

History Stats en Home Assistant: tiempo, porcentaje y activaciones

12/05/2022
History Stats

Este artículo puede contener enlaces de afiliado. Si compras desde estos enlaces, el precio para ti es el mismo y la tienda me paga una pequeña comisión que ayuda a mantener Tecnoyfoto.

History Stats crea un sensor que calcula estadísticas a partir del historial de otra entidad. Permite saber cuánto tiempo estuvo encendida una luz, qué porcentaje del día funcionó una calefacción o cuántas veces una puerta estuvo abierta durante un período.

OFERTAS · TIENDA OFICIAL

Descuentos en domótica SONOFF

Interruptores WiFi, relés, sensores, tiras LED y más. Las promociones cambian con frecuencia en la tienda oficial.

Cupón: TECNOYFOTO (10% de descuento al pagar)

Ver ofertas oficiales Enlace de afiliado · Tienda Sonoff

History Stats y Counter: diferencias

Counter guarda un número y lo modifica mediante acciones o eventos. History Stats consulta el historial de estados de una entidad y calcula un resultado en un intervalo. Para contar pulsaciones o ciclos desde ahora, usa Counter; para medir lo ocurrido hoy, ayer, esta semana o este mes, usa History Stats.

Crear History Stats desde la interfaz

  1. Ve a Ajustes > Dispositivos y servicios > Ayudantes.
  2. Pulsa Crear ayudante y selecciona History Stats.
  3. Elige nombre, entidad, estado a medir, tipo y período.
  4. Guarda: Home Assistant creará un sensor para el dashboard y las automatizaciones.

Tipos de cálculo

  • time: horas que la entidad permaneció en el estado indicado.
  • ratio: porcentaje del período en ese estado.
  • count: veces que la entidad coincidió con el estado durante el período. Si ya estaba en dicho estado al empezar, cuenta como coincidencia; no equivale siempre a contar transiciones.

Períodos: hoy, ayer, semana y mes

Debes proporcionar exactamente dos de estos valores: start, end y duration. En YAML, today_at() es una forma segura de definir límites locales, incluso en los cambios de hora.

sensor:
  - platform: history_stats
    name: Luz del salón encendida hoy
    entity_id: light.salon
    state: "on"
    type: time
    start: "{{ today_at('00:00') }}"
    end: "{{ now() }}"
    state_class: total_increasing

Para ayer, usa end: "{{ today_at('00:00') }}" y duration: { hours: 24 }. Para la semana actual, inicia el lunes a medianoche; para el mes, el día 1 a medianoche.

Ejemplos prácticos

Contar aperturas de puerta

- platform: history_stats
  name: Aperturas de puerta hoy
  entity_id: binary_sensor.puerta_entrada
  state: "on"
  type: count
  start: "{{ today_at('00:00') }}"
  end: "{{ now() }}"

Tiempo de funcionamiento de una calefacción

- platform: history_stats
  name: Horas de calefacción hoy
  entity_id: climate.calefaccion
  state: heat
  type: time
  start: "{{ today_at('00:00') }}"
  end: "{{ now() }}"

Los mismos patrones sirven para lavadora, secadora, lavavajillas, TV o una luz. Con ratio puedes mostrar qué porcentaje del día estuvo activo un dispositivo.

Recorder, historial y limitaciones

History Stats depende del historial guardado por Recorder. Si el período supera purge_keep_days, faltarán datos. El sensor se actualiza cuando cambia la entidad origen o aproximadamente cada minuto. Usa min_state_duration para ignorar cambios breves, por ejemplo desconexiones de pocos segundos.

Unidades y consejos

El tipo time devuelve horas, ratio un porcentaje y count un número. Elige una entidad con estados estables y confirma el estado exacto en Herramientas para desarrolladores > Estados antes de crear el sensor.

Consulta la documentación oficial de History Stats.

Períodos seguros y ejemplos útiles

Para hoy, usa start: "{{ today_at('00:00') }}" y end: "{{ now() }}". Para ayer, termina en today_at('00:00') y usa una duración de 24 horas. La semana actual empieza en today_at('00:00') - timedelta(days=now().weekday()); el mes actual, en today_at('00:00').replace(day=1). Estas bases son más seguras que construir fechas manualmente y evitan errores en los cambios de horario.

Con ratio puedes mostrar el porcentaje del día que una luz permaneció encendida. Con count puedes seguir coincidencias como puerta abierta; recuerda que cuenta estados coincidentes, no necesariamente cada transición.

Medir calefacción: estado de modo frente a funcionamiento real

No interpretes automáticamente climate.calefaccion con state: heat como horas reales de caldera o compresor funcionando: heat suele indicar el modo HVAC seleccionado y puede mantenerse durante muchas horas sin demanda física. Cuando exista, mide hvac_action: heating o, mejor aún, una entidad que represente la demanda real, el relé de caldera, la bomba o un sensor binario de funcionamiento. Si no existe, crea un template binario que refleje esa señal real y úsalo como entidad origen.

- platform: history_stats
  name: Horas de calefacción real hoy
  entity_id: binary_sensor.caldera_activa
  state: "on"
  type: time
  start: "{{ today_at('00:00') }}"
  end: "{{ now() }}"

Comprobar antes de confiar en la cifra

Revisa el estado exacto de la entidad en Herramientas para desarrolladores > Estados y prueba las plantillas en Herramientas para desarrolladores > Plantillas. Si necesitas excluir microcortes, usa min_state_duration, por ejemplo "00:02:00". Si el período es mayor que la retención de Recorder (purge_keep_days), la cifra no podrá incluir el historial ya purgado.

Continúa leyendo

Siguiente guía relacionada · 7 min de lectura

Contador Home Assistant: Guía Completa y Fácil [2026]

Actualizado el 18 de abril de 2026 En la gestión de nuestra automatización del hogar, a menudo necesitamos ir más allá de los simples…

Continuar con este artículo