Lovelace Card Templater es una tarjeta Lovelace personalizada que permite aplicar plantillas Jinja2 a otras tarjetas.
Instalación Lovelace Card Templater
La mejor forma para instalar esta tarjeta en nuestro Home Assistant es desde HACS.
Entre en HACS
Busca «Lovelace Card Templater» en la tienda y sigue las instrucciones.
Opciones
Nombre | Escribe | Opcional / Requerido | Descripción |
---|---|---|---|
type | cuerda | Requerido | personalizado: tarjeta-templater |
card | objeto | Requerido | La tarjeta que se va a mostrar (ver más abajo sobre la creación de plantillas) |
entities | lista | Requerido | Entidades para observar los cambios (también se puede usar para modelar estados de entidad, ver más abajo) |
Plantillas de tarjetas
La opción de tarjeta aceptará cualquier configuración de tarjeta. Cualquier opción en la tarjeta original que tiene un valor de cadena puede ser templated cambiando el nombre de la opción de ser option_name _template . Por ejemplo, name se convertirá en name_template . Aquí hay un ejemplo:
type: custom:card-templater
card:
type: entities
show_header_toggle: true
columns: 2
title: Places
entities:
- entity: zone.figueres
name_template: >-
{{ state_attr("zone.figueres","friendly_name") }} - {{
(distance(states.person.albert, states.zone.figueres) *
0.621371) | round(1) }} miles.
- entity: zone.home
name_template: >-
{{ state_attr("zone.home","friendly_name") }} - {{
(distance(states.person.albert, states.zone.home)) |
round(1) }} kilómetro.
- entity: zone.bonpreu
name_template: >-
{{ state_attr("zone.bonpreu","friendly_name") }} - {{
(distance(states.person.albert, states.zone.bonpreu)) |
round(1) }} kilómetro.
entities:
- person.albert
Esto mostrará una tarjeta de entidades que muestra dos zonas, con los nombres de visualización que incluyen la distancia entre una entidad device_tracker y la zona. Aquí un ejemplo
Listas de plantillas, método experimental alternativo
La versión 0.0.3 introdujo otra forma de crear plantillas de propiedades basadas en listas. Ahora se pueden crear plantillas a través de una plantilla que devuelve YAML o JSON válidos, como este:
type: 'custom:card-templater'
card:
type: entities
title: Who's at Home
entities_template: >-
{{ states.device_tracker | selectattr("state", "equalto",
"home") | map(attribute="entity_id") | list | tojson }}
entities:
- sensor.time
entidades
Esta opción es necesaria para que la plantilla solo se procese cuando una de las entidades referenciadas cambie y sea similar a la opción de entidad para los sensores de plantilla. Estoy investigando si esto se puede determinar a partir de la plantilla, pero esto es difícil de hacer del lado del cliente y, por ahora, esta opción es necesaria.
Para plantillas complejas, puede crear un sensor de tiempo como este:
sensor:
- platform: time_date
display_options:
- 'time'
y luego use sensor.time en entidades
También puede usar esto para modelar el estado de una entidad, de modo que la entidad muestre un estado diferente al real. Por ejemplo:
type: custom:card-templater
card:
type: entities
show_header_toggle: false
columns: 2
title: Lugares
entities:
- entity: zone.home
name_template: >-
{{ (distance(states.person.albert, states.zone.home) *
0.621371) | round(1) }} millas de distáncia.
- entity: zone.figueres
name_template: >-
{{(distance(states.person.albert, states.zone.figueres)
) | round(1) }} kilómetros de distáncia.
entities:
- person.albert
- entity: zone.home
state_template: '{{ state_attr("zone.home","friendly_name") }}'
- entity: zone.figueres
state_template: '{{ state_attr("zone.figueres","friendly_name") }}'
entity: zone.figueres
mostrará los estados de las zonas como sus nombres descriptivos en lugar del estado real de («zoning») como se muestra a continuación:
Los atributos de las entidades también se pueden crear de esta manera:
type: 'custom:card-templater'
card:
...
entities:
- entity: sensor.my_sensor
state_template: >
{{ "One" if states.sensor.my_sensor.state == "1" else "Not One" }}
attributes:
unit_of_measurement_template: >
{{ states.sensor.my_sensor_uom.state }}
Esto se puede hacer con o sin state_template definido, por lo que puede hacer esto:
type: 'custom:card-templater'
card:
...
entities:
- entity: sensor.my_sensor
attributes:
unit_of_measurement_template: >
{{ states.sensor.my_sensor_uom.state }}
Excluir una propiedad con un nombre que termina con la propiedad _template de la plantilla
A veces, es posible que desee crear una plantilla de una tarjeta que tenga propiedades que terminen en _template (por ejemplo, la opción content_template en lovelace-home-feed-card ) y no desea que estas sean manejadas por card-templater. ¡Esto se puede hacer agregando ! hasta el final de la propiedad (por ejemplo content_template!: {{state}}
).
Variables
Las siguientes variables se pasan al motor de plantillas para que pueda usarlas en las plantillas
- user.name – el nombre del usuario actual
- user.is_admin: si el usuario actual es un administrador
- user.is_owner: si el usuario actual es el propietario
- page: este es el objeto de ubicación de Javascript para la página actual y, por lo tanto, se puede usar de la siguiente manera:
- page.pathname: el nombre de la ruta de la página actual (por ejemplo, / lovelace / home)
- page.href: la URL completa de la página actual
- page.protocol: el protocolo (http / https) de la página actual
- page.host: el nombre de host de la página actual
- page.path: este es un alias para page.pathname anterior para compatibilidad con versiones anteriores
- theme: el nombre del tema seleccionado actualmente
Ejemplo
type: custom:card-templater
card:
type: markdown
content_template: >
## Hola {{ user.name }}. </br> Esta tarjeta está en la página {{ page.path
}}
entities:
- entity: sensor.time