La plataforma de sensores history stats Home Assistant, proporciona estadísticas rápidas sobre otra integración, entidades o plataformas, utilizando datos de la integración history.
Puede rastrear cuánto tiempo ha estado la integración o entidad en un estado específico, en un período de tiempo personalizado.
Ejemplos de lo que puede rastrear:
- ¿Cuánto tiempo estuviste en casa esta semana?
- ¿Y las luces? ¿Cuánto tiempo estuvieron encendidas ayer?
- ¿Cuánto tiempo viste la televisión hoy?
Configuración
Para habilitar el sensor de estadísticas de historial, agregue las siguientes líneas a su archivo de sensores o directamente en configuration.yaml:
VARIABLES DE CONFIGURACIÓN History Stats Home Assistant
entity_id OBLIGATORIO
La entidad que desea rastrear.
state OBLIGATORIO
Los estados que desea rastrear.
name ( opcional , predeterminado: estadísticas sin nombre )
Nombre que se muestra en la interfaz. Tenga en cuenta que Home Assistant lo utiliza para generar sensores, object_idpor lo que es recomendable elegir uno único y cambiar el nombre de la interfaz mediante la personalización o a través de Dashboards .
type ( opcional , predeterminado: hora )
El tipo de sensor: time, ratioo count.
start ( opcional)
Cuándo iniciar la medida (marca de tiempo o fecha y hora).
end ( opcional)
Cuándo detener la medida (marca de tiempo o fecha y hora).
duration ( opcional)
Duración de la medida.
NOTA:
Tienes que proporcionar exactamente 2 de start, endy duration.
Puede usar extensiones de plantilla como now()o as_timestamp()para manejar fechas dinámicas, como se muestra en los ejemplos a continuación.
Tipo de sensor
Dependiendo del tipo de sensor que elija, la history_stats
integración puede mostrar diferentes valores:
- tiempo : el valor predeterminado, que es el tiempo rastreado, en horas
- ratio : El tiempo rastreado dividido por la duración de su período, como un porcentaje
- count : cuántas veces la integración que rastrea se cambió al estado que rastrea
Períodos de tiempo History Stats Home Assistant
La integración history_stats
ejecutará una medida dentro de un período de tiempo preciso. Siempre debe proporcionar 2 de los siguientes:
- Al comenzar el período (
start
variable) - Cuando termina el período (
end
variable) - ¿Cuánto dura el período (
duration
variable)
Como start
y end
las variables pueden ser fechas y horas o marcas de tiempo, puede configurar casi cualquier período que desee.
DURACIÓN
La variable de duración se utiliza cuando el período de tiempo es fijo. Se admiten diferentes sintaxis para la duración, como se muestra a continuación.
Si la duración excede la cantidad de días de historial almacenados por el recordercomponente ( purge_keep_days), el sensor de estadísticas de historial no tendrá toda la información que necesita para ver la duración completa. Por ejemplo, si purge_keep_daysse establece en 7, un sensor de estadísticas de historial con una duración de 30 días solo informará un valor basado en los últimos 7 días de historial.
EJEMPLOS History Stats Home Assistant
Estos son algunos ejemplos de períodos con los que podría trabajar y qué escribir:
Hoy : comienza a las 00:00 del día actual y finaliza ahora mismo.
start: "{{ now().replace(hour=0, minute=0, second=0) }}"
end: "{{ now() }}"
Ayer : termina hoy a las 00:00, dura 24 horas.
end: "{{ now().replace(hour=0, minute=0, second=0) }}"
duration:
hours: 24
Esta mañana (6AM – 11AM) : comienza hoy a las 6, dura 5 horas.
start: "{{ now().replace(hour=6, minute=0, second=0) }}"
duration:
hours: 5
Semana actual : comienza el lunes pasado a las 00:00, termina ahora mismo.
Aquí, el lunes pasado es hoy como marca de tiempo, menos 86400 veces el día de la semana actual (86400 es el número de segundos en un día, el día de la semana es 0 el lunes, 6 el domingo).
start: "{{ as_timestamp( now().replace(hour=0, minute=0, second=0) ) - now().weekday() * 86400 }}"
end: "{{ now() }}"
Próximas 16:00 : 24 horas, desde las últimas 16:00 horas hasta las 16:00 horas siguientes. Si no han sido las 4 de la tarde de hoy, serían las 4 de la tarde de ayer hasta las 4 de la tarde de hoy. Si ya son más de las 4 de la tarde de hoy, serán las 4 de la tarde de hoy hasta las 4 de la tarde de mañana. Al cambiar la hora de inicio, sume o reste al búfer de 8 horas para que coincida con la próxima medianoche.
end: "{{ (now().replace(minute=0,second=0) + timedelta(hours=8)).replace(hour=16) }}"
duration:
hours: 24
Últimos 30 días : finaliza hoy a las 00:00, dura 30 días. Fácil.
end: "{{ now().replace(hour=0, minute=0, second=0) }}"
duration:
days: 30
start: "{{ 0 }}"
end: "{{ now() }}"
Todo su historial comienza en la marca de tiempo = 0 y termina ahora mismo.
Contar el tiempo de estado de un dispositivo en Home Assistant
- platform: history_stats
name: Lavadora hoy
entity_id: input_select.rentadora_status
state: "Lavando"
type: time
start: "{{ now().replace(hour=0, minute=0, second=0) }}"
end: "{{ now() }}"
- platform: history_stats
name: Lavadora ayer
entity_id: input_select.rentadora_status
state: "Lavando"
type: time
end: "{{ now().replace(hour=0, minute=0, second=0) }}"
duration:
hours: 24
- platform: history_stats
name: Lavadora esta semana
entity_id: input_select.rentadora_status
state: "Lavando"
type: time
start: "{{ as_timestamp( now().replace(hour=0, minute=0, second=0) ) - now().weekday() * 86400 }}"
end: "{{ now() }}"
- platform: history_stats
name: Lavadora este mes
entity_id: input_select.rentadora_status
state: "Lavando"
type: time
end: "{{ now().replace(hour=0, minute=0, second=0) }}"
duration:
days: 30
- platform: history_stats
name: Lavadora todo los tiempos
entity_id: input_select.rentadora_status
state: "Lavando"
type: time
start: "{{ 0 }}"
end: "{{ now() }}
ATENCIÓN!! En entity_id tienes que poner el id de la entidad que quieres contar el tiempo y en state, el estado que tiene que quieres controlar. Para conocer el estado de tu entidad, lo puedes hacer desde herramientas para desarrolladores.
La página de plantillas /developer-tools/template de herramientas para desarrollador de Home Assistant, puede ayudarte a comprobar si los valores de start o end son durationcorrectos. Si desea verificar si su período es correcto, simplemente haga clic en su componente. Los atributos from y to mostrarán el inicio y el final del período, con un formato agradable.