You may calculate count of filtered entities inside a “template” option.
nice answer but it does not help me much - for normal entities I put name:… but here I am not sure how to
thx anway
@homonto
Consider this:
type: vertical-stack
cards:
- type: entities
entities:
- type: section
label: w/o secondary_info
- entity: sun.sun
- entity: sun.sun
name: replaced
- entity: sun.sun
name: ' '
- type: section
label: with secondary_info
- entity: sun.sun
secondary_info: last-changed
- entity: sun.sun
name: replaced
secondary_info: last-changed
- entity: sun.sun
name: ' '
secondary_info: last-changed
- type: custom:auto-entities
card:
type: entities
filter:
include:
- entity_id: sun.sun
options:
secondary_info: last-changed
- type: custom:auto-entities
card:
type: entities
filter:
include:
- entity_id: sun.sun
options:
name: ' '
secondary_info: last-changed
As I said - same way as for a conventional Entities card.
that is what template-entity-row was made for
Oh yes.
Same output, different efforts:
Surely in some cases template-entity-row
is the simplest solution, it depends.
Not to mention a fact that “last-changed” label is NOT periodically updated for template-entity-row
(only when a state changes or a page refreshed) as it is for a conventional entity row (periodically).
tbh I always use the last-changed on states in the config.entity, so they are always correctly updated. you might be right for other situations, I confess I bever watched that. Should be an important aspect in choosing the right card.
See this rather complex composite of card_mod_theme, card_mod and template-entity-row. whish I could be simpler…
luckily, we can just completely throw it inside an anchor and repeat for the another entity::
type: entities
title: Luchtreinigers
card_mod:
class: class-header-margin
entities:
- type: custom:template-entity-row
# https://community.home-assistant.io/t/card-mod-add-css-styles-to-any-lovelace-card/120744/2182
entity: fan.luchtreiniger_hall
<<: &fan
# color: >
# {{iif(states[config.entity].state == 'on','red','black')}}
name: >
{% if states[config.entity] is not none %}
{{state_attr(config.entity,'friendly_name').split(' ')[1]}}:
{% set id = states[config.entity].object_id %}
Air quality:
{% if states('sensor.' ~ id ~ '_air_quality') in ['unknown','unavailable'] %}
{% if states[config.entity].state == 'on' %} Initializing
{% else %} Off {# Device not ready #}
{% endif %}
{% else %} {{states('sensor.' ~ id ~ '_air_quality')}} µg/m³
{% endif %}
{% else %} Not yet set
{% endif %}
secondary: >
{% if states[config.entity] is not none %}
{% set id = states[config.entity].object_id %}
{% if states[config.entity].state == 'on' %}
On: {{states[config.entity].attributes.percentage}} -
{% else %} Off since {{relative_time(states[config.entity].last_changed)}} -
{% endif %}
{% else %} Not yet set -
{% endif %}
Power: {{states('sensor.' + id + '_device_power')}} W
card_mod:
style:
div#wrapper: |
state-badge {
{% if is_state(config.entity,'on') %}
animation: rotation 2s linear infinite, colorize 5s linear forwards 1;
{% endif %}
}
@keyframes rotation {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
@keyframes colorize {
0% {
background: steelblue;
}
100% {
background: aquamarine;
}
}
# state: >
# {{iif(is_state(config.entity,'on'),'Aan','Uit')}}
icon: >
{{is_state(config.entity,'on')|iif('mdi:fan','mdi:fan-off')}}
# icon: >
# {{'mdi:record-circle-outline' if is_state(config.entity,'on') else 'mdi:fan-off'}}
toggle: true
- type: custom:template-entity-row
entity: fan.luchtreiniger_woonkamer
<<: *fan
btw, that animated fan is still off-center…
This template only updates when the state is changed, or when the page is refreshed.
Sorry for an off-topic.
yes, I understood that, np.
btw, not so off topic, as its a very easy mod to use in the options for an auto-entities card. using that myself
Thanks, I thought it was possible with som sort of template. I just didn’t know i could use the filter when i created the template. I will have to look into that since i’m quite new to the coding part of HA (where you can do all the cool stuff)
Kind of:
type: custom:auto-entities
card:
type: entities
filter:
template: |-
{% set DEVICES = states.device_tracker |
selectattr("attributes.ip","defined") | list -%}
{%- set COUNT = DEVICES | count -%}
{{
{
'type': 'section',
'label': 'Count: ' + COUNT|string
}
}},
{%- for DEVICE in DEVICES -%}
{{
{
'entity': DEVICE.entity_id,
'secondary_info': 'last-changed'
}
}},
{%- endfor %}
Should show_empty work when using a filter template?
It’s working fine with include filters. But when using a template filte it’s not. Here is some example that doesn’t seem to work:
- type: custom:auto-entities # Offene Fenster und Türen
show_empty: false
card:
type: entities
title: Offene Fenster/Türen
filter:
template: |-
{% set DEVICES = states.binary_sensor
|rejectattr('attributes.device_class', 'undefined')
|selectattr('attributes.device_class', 'eq', 'door')
|selectattr('state', 'eq', 'on')
|list
%}
{% if DEVICES|length > 0 %}
[
{% for DEVICE in DEVICES -%}
{{{
'entity': DEVICE.entity_id,
'name': area_name(DEVICE.entity_id),
'secondary_info': 'last-updated'
}}},
{% endfor %}
]
{% endif %}
seems to have been some caching issue or so. Didn’t change anything. Works now. Sorry for the confusion. Thanks for investigating.
Anyone know how to filter out entities/devices not assigned to an area? I know how to filter by devices assigned to an area but am looking for the opposite. Overall, I am trying to only show a list of switches assigned to an area ie if a switch has not been assigned an area it won’t show in the auto entities list.
I know a work around could be to include switch domain and include every area but this just feels like a lot of work when there should be exclude: null
Have two lists? One with all entities and one with those in areas … and remove the items from the later list from the former list.
type: custom:auto-entities
show_empty: false
card:
type: entities
filter:
template: >-
{% set ns = namespace(entity_and_area=[]) -%}
{%- for entity in states.device_tracker -%}
{%- set entity_id = entity.entity_id -%}
{%- set area = area_name(entity.entity_id) -%}
{%- set entity_and_area = ({'entity_id':entity_id,'area':area}) -%}
{%- set ns.entity_and_area = ns.entity_and_area + [entity_and_area] -%}
{%- endfor -%}
{%- set sorted_list = (ns.entity_and_area) | rejectattr('area','eq',none) | sort(attribute='area') -%}
{{ sorted_list | map(attribute='entity_id') | list }}
Here we have a list of “device_tracker” entities (except not assigned to any area) sorted by area.
Will post a list of useful posts (just in case):
passing options into a conventional entity row:
– hide a name
– show an attribute
select entities dependently on their attributes
card-mod:
– general schema
– conditional card_mod
– glance + card_mod
– card-mod in a template: one, two, three
graphs in a stack:
– history-graph
– mini-graph-card
– mini-graph-card + template
defining a number of found elements
how to list entities in 2 columns
how to define Markdown cards in auto-entities
areas:
– sort entities by area
– a card with entities filtered by some area
– list of “area” cards
– show an Area card for one area_name
– list of entities except ones not assigned to any area
a possible way to easily define templates for cards
how to show an alternative card if a filter gives an empty list
@Ildar_Gabdullin thank you, I will give that a go, and thank you for the other links. Interesting reading
is it somehow possible to output an attribute as the value instead of the state?
type: custom:auto-entities
show_empty: false
card:
type: entities
state_color: true
show_header_toggle: false
Read 2 posts above.