Entidades automáticas lo que hace, es rellenar automáticamente las tarjetas de Lovelace con entidades que coincidan con ciertos criterios. Es decir, por ejemplo, podemos tener una tarjeta que muestre sólo las luces encendidas, o los teléfonos que estén en menos de x% de batería, etc….
Estas entidades automáticas también se pueden combinar con las tarjetas de entidades desplegables que vimos en capítulos anteriores.
Instalación
Para poder utilizar las tarjetas desplegables debes instalarlo desde HACS. Para ello, entra en HACS, dirígete a Interfaz y dentro de aquí te vas a Explorar y descargar repositorios. Ahora buscas auto-entities. También puedes visitar la página del componente en GitHub.
Estructura básica entidades automáticas
type: custom:auto-entities card: <card> entities: - <entity> - <entity> filter: template: <template> include: - <filter> - <filter> exclude: - <filter> - <filter> show_empty: <show_empty> unique: <unique> sort: <sort_method>
Opciones
card:
Requerido. La tarjeta que se va a mostrar. Especifique esto como lo haría con cualquier tarjeta normal, pero omita el parámetroentities:
entities:
Todas las entidades agregadas aquí se agregarán a la tarjeta antes de que se apliquen los filtros.filter:
template:
Una plantilla jinja2 que evalúa una lista de entradas para incluirinclude:
Una lista de filtros que especifican qué entidades para agregar a la tarjetaexclude:
Una lista de filtros que especifican qué entidades que se excluirán de la tarjeta
show_empty:
Si mostrar la tarjeta si no tiene entidades. Por defecto:true
.unique:
Ya sea para eliminar valores duplicados después de filtrar y ordenar. Configúrelo entrue
para eliminar entradas duplicadas exactas. Configúrelo enentity
para eliminar entradas con el mismo ID de entidad. Por defecto:false
.sort:
Cómo ordenar las entidades de la tarjeta. Por defecto:none
. Consulte Clasificación de entidades para obtener más detalles.card_param:
El parámetro de la tarjeta a rellenar. Por defecto:entities
.
Filtros
Las dos secciones principales de filtros include
y exclude
cada una tiene una lista de filtros.
Los filtros tienen las siguientes opciones y coincidirán con cualquier entidad que cumpla con TODAS las condiciones:
domain:
Coincidir con el dominio de la entidad (ej.light
,binary_sensor
,media_player
)state:
Coincidir con el estado de la entidad (ej."on"
,home
,"3.14"
)entity_id:
Id. De entidad coincidente (ej.light.bed_light
,input_binary.weekdays_only
)name:
Coincidir con el atributo de nombre descriptivo (ej.Luces cocina
,puerta de entrada
)group:
Hacer coincidir entidades en un grupo determinado (ejgroup.mesitas
)area:
Coincidir con entidades en un área determinada (ej.Cocina
)device:
Coincidir con entidades que pertenecen a un dispositivo determinado (ej.Teléfono Albert
)attributes:
probará si el atributo de entidad dado es el estado especificado.last_changed:
Minutos desde el último cambio de estado (más útil como comparación, ej.last_changed: < 15
. )last_updated:
Minutos desde la última actualización
Opciones especiales:
options:
Mapa de opciones para aplicar a la entidad cuando se pasa a la tarjeta.type:
Tipo de entradas especiales para incluir en la lista de entidades. Las entradas con untype:
no se filtrarán.not:
Especifica un filtro que las entidades que no deben coincidir.sort:
Especifica un método para ordenar las entidades que coinciden solo con este filtro .or:
Coincide con cualquiera en una lista de filtros.
Filtro de plantilla
La sección de filtro template
toma una plantilla jinja2 que se evalúa como una lista de entidades u objetos de entidad.
Cómo funciona
auto-entities
crea una lista de entidades por:
- Incluyendo todas las entidades dadas en
entities:
(esto permite anidarauto-entities
si desea hacerlo por alguna razón …) - Incluya todas las entidades enumeradas en una evaluación
filter.template
- Incluya todas las entidades que coincidan con TODAS las opciones de CUALQUIER filtro en la sección
filter.include
. La misma entidad puede estar incluida varias veces por diferentes filtros. - Elimine todas las entidades que coincidan con TODAS las opciones en CUALQUIER filtro de la sección
filter.exclude
.
Luego crea una tarjeta basada en la configuración dada en card:
y completa esa tarjeta con las entidades de arriba.
Reglas coincidentes
Comodines
Cualquier opción de filtro se puede utilizar *
como comodín para la comparación de cadenas. Tenga en cuenta que las cadenas deben estar entre comillas al hacer esto:
filter: include: - name: "Bedroom *" - entity_id: "sensor.temperature_*_max"
Expresiones regulares
Cualquier opción de filtro puede usar expresiones regulares de JavaScript para la comparación de cadenas. Para hacer esto, incluya la expresión regular en /
. También asegúrese de citar la cadena:
filter: include: - name: "/^.* [Ll]ight$/" - entity_id: "/sensor.temperature_4[abd]/"
Comparación numérica
Cualquier opción de filtro que trate con cantidades numéricas puede usar operadores de comparación si se especifica como una cadena (debe estar entre comillas):
filter: include: - attributes: battery: "<= 50" # Attribute battery_level is 50 or less - state: "> 25" # State is greater than 25 - attributes: count: "! 2" # Attribute count is not equal to 2 - state: "= 12" # State is exactly 12 (also matches "12", "12.0" etc.) - state: 12 # State is exactly 12 but not "12"
Opciones de repetición
Cualquier opción se puede usar más de una vez agregando un número o cadena al nombre de la opción:
filter: include: - state 1: "> 100" state 2: "< 200"
El filtro anterior coincide con las entidades en las que el estado está por encima de 100 y por debajo de 200. Compare con lo siguiente:
filter: include: - state: "< 100" - state: "> 200"
Los dos filtros anteriores juntos coinciden con entidades donde el estado está por debajo de 100 o por encima de 200.
Atributos de objeto
Algunos atributos de entidad contienen en realidad varios valores. Un ejemplo es hs_color
para una luz, que tiene un valor para el tono y otro para la saturación. Estos valores se pueden introducir mediante claves o índices separados por dos puntos ( :
):
filter: include: - attributes: hs_color:1: ">30"
El ejemplo anterior coincide con luces con un valor hs_color
de saturación superior a 30.
Entidades de clasificación
Las entidades se pueden ordenar, ya sea filtro por filtro agregando una opció sort:
al filtro, o todas a la vez después de que se hayan aplicado todos los filtros usando la opción sort:
de auto-entities
.
Los métodos de clasificación se especifican como:
sort: method: <method> reverse: <reverse> ignore_case: <ignore_case> attribute: <attribute> first: <first> count: <count> numeric: <numeric>
method:
Requerido Uno dedomain
,entity_id
,name
,state
,attribute
,last_changed
last_updated
olast_triggered
.reverse:
Configure entrue
para invertir el orden. Por defecto:false
.ignore_case:
Establezca entrue
para que la clasificación no distinga entre mayúsculas y minúsculas. Por defecto:false
.numeric:
Configure entrue
para ordenar por valor numérico. Por defecto:false
a excepción delast_changed
,last_updated
ylast_triggered
.attribute:
Atributo para ordenar pormethod: attribute
. Puede ser un atributo de objeto como el anterior (ej.attribute: rgb_color:2
)first
ycount
se puede usar para mostrar solo entidades<count>
, comenzando con<first>
(comienza con 0).
Opciones de entidad
En la opción options:
de los filtros, la cadena this.entity_id
se reemplazará con el entity_id coincidente. Útil para llamadas de servicio; consulte a continuación.
Ejemplos
Muestra todas las entidades, excepto el clima, los grupos y las zonas de yahoo en una tarjeta de vistazo:
type: custom:auto-entities card: type: glance filter: include: [{}] exclude: - entity_id: "*yweather*" - domain: group - domain: zone
Mostrar todos los gps device_tracker
con nivel de batería inferior a 50:
type: custom:auto-entities card: type: entities title: Battery warning filter: include: - domain: device_tracker options: secondary_info: last-changed attributes: battery: "< 50" source_type: gps
Muestra todas las luces que están encendidas:
type: custom:auto-entities show_empty: false card: type: glance title: Lights on filter: include: - domain: light state: "on" # Remember that "on" and "off" are magic in yaml, and must always be quoted options: tap_action: action: toggle
También muestra todas las luces que están encendidas:
type: custom:auto-entities show_empty: false card: type: entities title: Lights on show_header_toggle: false filter: include: - domain: light exclude: - state: "off" - state: "unavailable"
Muestre todo lo que tenga «luz» en su nombre, pero que no sea una luz, y todos los interruptores en la sala de estar:
type: custom:auto-entities card: type: entities title: Lights on show_header_toggle: false filter: include: - name: /[Ll]ight/ not: domain: light - type: section - domain: switch area: Living Room
Enumere todos los sensores que pertenecen a cualquier iPhone:
type: custom:auto-entities card: type: entities title: Phones show_header_toggle: false filter: include: - device: /iPhone/
Enumere los cinco últimos sensores de movimiento activados:
type: custom:auto-entities card: type: entities filter: include: - domain: binary_sensor attributes: device_class: motion sort: method: last_changed count: 5
Coloque todos los sensores en tarjetas de entidad individuales en una tarjeta de cuadrícula:
type: custom:auto-entities card: type: grid card_param: cards filter: include: - domain: sensor options: type: entity
Encienda las escenas haciendo clic en ellas:
type: custom:auto-entities card: type: glance filter: include: - domain: scene options: tap_action: action: call-service service: scene.turn_on service_data: # Note the magic value this.entity_id here entity_id: this.entity_id
Ejemplo usando plantillas:
type: custom:auto-entities card: type: entities filter: template: | {% for light in states.light %} {% if light.state == "on" %} {{ light.entity_id}}, {% endif %} {% endfor %}
O:
template: "{{states.light | selectattr('state', '==', 'on') | list}}"
Temporizadores activos
type: custom:auto-entities
card:
type: entities
title: Temporizadores activos
filter:
template: |
{% for timer in states.timer %}
{% if timer.state == "active" %}
{{ timer.entity_id}},
{% endif %}
{% endfor %}
show_empty: false
Media player reproduciendo
type: custom:auto-entities
card:
type: entities
title: Media player reproduciendo
filter:
include:
- domain: media_player
state: playing
exclude: []
sort:
method: none