đŸ”č template-entity-row - Put templates in an entities row

HI Thomas,

Since updating to 105.1/2 the above card using your auto-entities and template-entity-row is in a state of turmoil
 it shows like this now:
Feb-07-2020 10-35-04

every few seconds flickers to its ‘supposed to be state’ like posted above for a split second and then back to the full templates again


Could it be either of these cards is having issues with HA 105?

this is the config for the cards:

  - type: custom:auto-entities
    card:
      type: entities
      title: Github repos
      show_header_toggle: false
    filter:
      include:
        - entity_id: sensor.github*
          options:
            type: custom:template-entity-row
            state: >
              {% if state_attr(config.entity,'latest_release_url') %}
              {{ state_attr(config.entity,'latest_release_url').split('tag/')[1]}}
              {% else %} Not set
              {% endif %}
            secondary: >
              {{ state_attr(config.entity,'latest_commit_message')}}

which has been showing just fine up to now like posted here

This is great, thanks. It would be even better if it behaves like a normal card. So when I click it, it would be nice when it opens the entity. Is this possible too?

Something like tap_action in the glance card.

1 Like

on my post above, this is solved with the latest update of your custom card, so thank you very much.

I do have another question (next to the open request for tap/hold-action ) which has revealed itself just now. As you can see the auto-entities config makes the sensors appear with the templated state and secondary info, but also with their given name, and default GitHub icon, belonging to the GitHub sensor.

I needed to add a single GitHub sensor to the card config, and without explicitly setting a name and icon this shows as:

adding the name and icon as follows:

 - type: custom:auto-entities
    card:
      type: entities
#      title: Github repos
      show_header_toggle: false
      header:
        type: picture
        image: /local/images/github_owler.png
    entities:
      - entity: automation.github_repo_update
        secondary_info: last-triggered
      - type: custom:template-entity-row
        name: >
          {{state_attr('sensor.home_assistant','name')}}
        icon: >
          {{state_attr('sensor.home_assistant','icon')}}
        state: >
          {% if state_attr('sensor.home_assistant','latest_release_url') %}
          {{ state_attr('sensor.home_assistant','latest_release_url').split('tag/')[1]}}
          {% else %} Not set
          {% endif %}
        secondary: >
          {{ state_attr('sensor.home_assistant','latest_commit_message')}}
    filter:
      include:
        - entity_id: sensor.github*
          options:
#            tap_action:
#              action: more-info
            type: custom:template-entity-row
            state: >
              {% if state_attr(config.entity,'latest_release_url') %}
              {{ state_attr(config.entity,'latest_release_url').split('tag/')[1]}}
              {% else %} Not set
              {% endif %}
            secondary: >
              {{ state_attr(config.entity,'latest_commit_message')}}
          sort:
            method: name

makes it show like the other sensors:

how can this be? does the auto-entities card also automatically add the name and icon?

I’ve just started using this card and it’s awesome, thanks @thomasloven!

I need some help from more experienced people with the following card.
It displays my motion sensors with their statuses (Clear/Detected instead of ‘off’/on), secondary info as a value of another (related to entity) sensor and changing its icon’s colour dependig on the entity's state.

This is working the version (secondary code shortened for clarity):

entities:
  - type: custom:template-entity-row
    entity: binary_sensor.pir_ground_floor_hall
    secondary: >
      {% set dt_obj = states.input_datetime.pir_ground_floor_hall %}
    state: >
      {{ 'Clear' if is_state('binary_sensor.pir_ground_floor_hall', 'off') else 'Detected' }}
    active: "{{ is_state('binary_sensor.pir_ground_floor_hall', 'on') }}"

  - type: custom:template-entity-row
    entity: binary_sensor.pir_ground_floor_reception
    secondary: >
      {% set dt_obj = states.input_datetime.pir_ground_floor_reception %}
    state: >
      {{ 'Clear' if is_state('binary_sensor.pir_ground_floor_reception', 'off') else 'Detected' }}
    active: "{{ is_state('binary_sensor.pir_ground_floor_reception', 'on') }}"
    
show_header_toggle: false
state_color: true
title: Motion detectors
type: entities

As you can see, there is little difference so I wanted to avoid repeating entities. After looking at this and this advice I tried to change my card to:

entities:
  - type: custom:template-entity-row
    entity: binary_sensor.pir_ground_floor_hall
    secondary: >
      {% set dt_obj = states.input_datetime.pir_ground_floor_hall %}
    state: >
      {{ 'Clear' if is_state(config.entity, 'off') else 'Detected' }}
    active: "{{ is_state(config.entity, 'on') }}"

  - type: custom:template-entity-row
    entity: binary_sensor.pir_ground_floor_reception
    secondary: >
      {% set dt_obj = states.input_datetime.pir_ground_floor_reception %}
    state: >
      {{ 'Clear' if is_state(config.entity, 'off') else 'Detected' }}
    active: "{{ is_state(config.entity, 'on') }}"

Entities do change icons when motion detected but states do not change (always Clear) and colour is always blue.
Do I miss anything here or it won’t work in my case? (I kind of understand how HA detects what entities’ changes to listen to when rendering templates but people reported success with their config.entity templates
)

It also does not look like I can use any YAML anchors here, does it?

p.s as far as I understand from reading this topic, this card does not support tap_action so if I need such functionality I need to look elsewhere?

Does the color change if you refresh the page while the sensor is on?

yes, both state and active work if I refresh the page.
that’s why I doubted this {{ is_state(config.entity, 'on') }} would ever work properly as it’s a template and HA won’t catch what’s inside config.entity so there will be no re-evaluation and therefore no change (until something else causes re-evaluation)

:+1:

By the way, when I move some logic from backend to LL (as I used to have some template sensors just to make them read-only like this one) does it shift processing from backend to a browser?
I’m asking because it seems like my sensors react a bit slower now and I’m trying to figure out why


Ok.
I’ll have a fix up later today.

Temporary workaround: add

entity_ids:
  - binary_sensor.pir_...
1 Like

Hi Thomas,

would you add the tap/hold action functionality also? Would be really very nice indeed.

That’s very kind of you, thanks!
Just a thought:
I only need to re-define state because (I think) standard LL entity row looks at my binary_sensor’s device_class and internally does that off → Clear/on → Detected substitution so I don’t see those off/on if I use standard entity row. Maybe your code could do the same?
That way there will be less template processing and generally room for error :wink:

On a similar note, I have active
 but it’s much trickier considering the recent state of things with dropping colour changes in standard cards.

I just wanted to update my report based on some observation.
Your workaround let me see immediate changes in state but as my secondary info displays time elapsed from the last on state in needs to be updated regularly.
So I ended up having this and it works better as being updated both upon state change and then every minute

entity_ids:
      - binary_sensor.pir_ground_floor_lounge
      - sensor.time

Don’t know if there is a better way of doing what I want though


Just wanted to say a big thank you for the fix - I downloaded the latest version and it works for me without entity_ids (even without sensor.time - good stuff).
You don’t do releases of it, do you? :wink:

@thomasloven I have an issue similar to the previous one when using condition as I want to hide my input_number when an automation is disabled - my card is updated only if I refresh the page.
Here’s the simple config

type: entities
show_header_toggle: false
title: Ventilation
entities:
  - entity: automation.ventilation_1st_floor_bathroom_extractor_fan_turn_on_by_humdity_threshold

  - type: custom:template-entity-row
    entity: input_number.ventilation_1st_floor_bathroom_shower_humidity_threshold
    condition: >
      {{ is_state('automation.ventilation_1st_floor_bathroom_extractor_fan_turn_on_by_humdity_threshold', 'on') }}

The workaround works, too :wink:

But there is another problem - that input_number (mode: slider, but mode: box makes no difference) behaves like a sensor so I can see no box around it and cannot change its value.
Could you look into it please?

@thomasloven

I recently learned that it is considered normal for template-entity-row to momentarily display its raw templates during a page-refresh (this may be true of other custom cards as well; I don’t know because I don’t use any others).
Template-Entity-Row momentarily displays its templates

My point of reference is Custom UI and its templates are never displayed in the UI. Can you explain to a novice like me how Custom UI and template-entity-row differ in their approach?

FWIW, I’m trying to replace Custom UI with purely Lovelace cards and techniques. My requirement is fairly simple: I want to change the icon (and its color) of an entities card based on the entity’s state. I’m using style: to set the icon’s color and template-entity-row to set the icon. It produces the same appearance as Custom UI but has the additional undesirable feature of showing its templates during rendering.

For the benefit of other readers, this issue was resolved here.

1 Like

I chose to display the original template as a fallback. That means that if the template fails to evaluate for any reason, you will be able to at least see it and possibly find out what went wrong.

That also means that on initial load, you will see the template until the backend can evaluate it and send the result back to the frontend.

Thank you for the explanation.

If I understood you correctly, you are saying the template is displayed by design. In other words, it is entirely feasible to not momentarily display the template but it was decided to display it.

I ask that you reconsider this design choice (or provide an option to enable/disable the display of templates). Here’s why:

  1. From the standpoint of aesthetics, it’s unattractive. I can’t recall seeing any web page that, when refreshed, momentarily reveals portions of its raw code prior to rendering it.
  2. If the template has an error, I doubt seeing it flash on the screen for a half-second allows anyone to analyze it.

yes, + 1 to that indeed.
We have to write correct templates, and have guards to prevent unknown’s


if anything, an error could be logged stating the template is incorrect. If possible at all, drop the initial momentarily display, and show the evaluated result immediately.

hi Thomas,

please let me ask your assistance in rewriting some secondaryinfo-entity-row’s to your template-entity-row. I have this:

  - type: custom:stack-in-card
    title: Boiler switch monitor
    cards:
      - type: entities
        show_header_toggle: false
        entities:
          - type: 'custom:secondaryinfo-entity-row'
            entity: switch.sw_boiler_bijkeuken_sc
            state_color: true
            secondary_info: 'Actueel verbruik: [[ sensor.boiler_bijkeuken_actueel ]] watt'

          - type: custom:template-entity-row
            entity: switch.sw_boiler_bijkeuken_sc
            active: >
              {{is_state(config.entity,'on')}}
#            state_color: true
            secondary: >
              Actueel verbruik: {{states('sensor.boiler_bijkeuken_actueel')}} watt

showing like:

I have 2 questions in particular:

  • would you consider adding support for state_color? As you can see I know we can use a template there, but as state_color is used in core HA, it might be a valuable addition, and make the config just that bit simpler (and not have to evaluate a jinja template could be beneficial to the system.)

  • can we have the toggle for a switch, instead of the value for state? dont think I found it in your doc’s. If no yet possible, would you consider adding that too please?

Thanks for considering!

2 Likes

+1 Only just started using this
 replaced secondaryinfo-entity-row and card tools with it and that was the first thing I noticed as well.

1 Like

hey David, Maybe also +1 on the Fr for the toggle :wink:

1 Like

Is it possible for the secondary info to have multi line output? I can’t seem to inject any kind of of new line character in the template.