Skip to content

Lovelace Card Templater

Lovelace Card Templater es una tarjeta Lovelace personalizada que permite aplicar plantillas Jinja2 a otras tarjetas.

Índice de contenido

    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

    NombreEscribeOpcional / RequeridoDescripción
    typecuerdaRequeridopersonalizado: tarjeta-templater
    cardobjetoRequeridoLa tarjeta que se va a mostrar (ver más abajo sobre la creación de plantillas)
    entitieslistaRequeridoEntidades 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

    Lovelace Card Templater

    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
    
    Lovelace Card Templater

    No te pierdas el vídeo de este artículo.

    Sígueme a Youtube

    Lovelace Card Templater - Sígueme en Youtube
    Ajustes