Incluir y excluir entidades de Home Assistant en altavoces inteligentes

He decidido hacer este tutorial por las muchas solicitudes que recibido acerca de este tema. Como siempre digo, es muy importante leer la documentación oficial para resolver cualquier duda ya que, además, viene muy bien explicado. En los siguientes pasos voy a explicar cómo incluir y excluir entidades que tenemos en nuestro Home Assistant en los distintos altavoces inteligentes que tenemos en nuestras casas, en concreto, en Alexa, Google y Home Assistant. Si bien la forma que voy a explicar a continuación no es la más adecuada, si es la que yo más aconsejo a todos aquellos que estáis empezando con Home Assistant y todavía no tenéis muy claro los diferentes conceptos como son dominios, grupos, etc..

Podéis ver el vídeo en mi canal y aprovechad a suscribiros y darle a Like si os ha gustado el vídeo y os ha resultado de utilidad.

Sobra decir que para realizar los siguientes pasos que vais a encontrar en este tutorial, tenéis que tener integrado vuestro altavoz inteligente en HA. En mi blog podéis encontrar los pasos a seguir para realizarlo de forma fácil con cada uno de ellos.

La exclusión o inclusión de entidades, variables, etc. se realiza en el configuration.yaml. Pero como es preferible tener todo ordenado para no convertir este archivo en un auténtico desastre, voy a crear tres archivos para cada uno de los dispositivos, y les llamaré cada uno de ellos con un !include. Los tres archivos serán los siguientes (es solo un ejemplo. Podeis llamarlos como querais):

  1. Para Alexa: alexa.yaml
  2. Para Homekit: homekit.yaml
  3. Para Google: dispositivosgoogle.yaml

Los 3 include por tanto serían:

  1. alexa: !include alexa.yaml
  2. homekit: !include homekit.yaml
  3. La integración la haríamos con un entity_config: !include dispositivosgoogle.yaml en la integración de google. Puedes ver como realizarla en el articulo de este blog.

Ver todas las entidades incluidas en nuestro Home Assistant

El primer paso es ver todas las entidades que tenemos incluidas en nuestro Home Assistant. Esto lo podemos hacer de forma sencilla con un Template. En el menú lateral izquierdo seleccionaremos Herramientas para desarrolladores. Elegiremos plantillas del menú superior, borraremos la plantilla de demostración y pegaremos la siguiente plantilla:

{%- set unique_domains = states | map(attribute='domain') |list | unique | list -%}
{%- for domain in unique_domains -%}
{{"\n"}}- {{domain}}
{%- endfor -%}
{{"\n"}}

{%- for state in states -%}
{{"\n"}}- {{state.entity_id}}
{%- endfor -%}

Esta plantilla nos mostrará todas las entidades que tenemos.

Incluir y excluir entidades en Alexa

Por defecto, ninguna entidad es excluida en Alexa. Por este motivo si no filtramos entidades nos podemos volver locos al abrir la aplicación de Alexa ya que se nos habrán volcado todas las entidades que tengamos en nuestro Home Assistant y nos aparecerán en la aplicación como dispositivos. Esto puede ser un gran engorro si tenemos cientos de entidades porque, además, muchas de ellas no nos van a servir para nada.

En la página oficial nos dice que la mejor forma es filtrando por dominios, entity globs, entidades, etc. Y estoy totalmente de acuerdo. El inconveniente es que si no tenemos las ideas muy claras acerca de estos conceptos y los que son y significan, pues os puede resultar muy enrevesado incluir o excluir aquello que de verdad os interesa.

Por tanto, una de las formas más sencillas, sería excluir absolutamente todas las entidades en el archivo de configuración de nuestro dispositivo y añadir una # delante de las entidades que realmente queremos incluir. La # se toma como si fuese un comentario en yaml por lo que es ignorado y, por tanto, incluido en nuestros dispositivos. Un ejemplo en la configuración de nuestro archivo sería el siguiente:

smart_home:
  filter:
    exclude_domains:
#     - switch.aire_acondicionado
      - switch.barra_de_sonido
#     - switch.decodificador
      - switch.entrada
#     - switch.luz_ventilador
      - switch.monitor
#     - switch.planta

En el ejemplo anterior, solo se incluirían en nuestro Alexa las entidades precedidas con la #. Las demás quedarían excluidas y, por tanto, no se detectarán como dispositivos (switch en este caso).

En el caso de Alexa esta forma es relativamente cómoda ya que Alexa incluye prácticamente el total de nuestras entidades cuando realizamos la integración y, generalmente, son unos pocos los dispositivos que realmente queremos utilizar.

Incluir y excluir entidades en Homekit

En Homekit, al igual que con Alexa, se integran muchisimas entidades que tenemos en Home Assistant. El listado completo de componentes soportados lo podéis encontrar en la documentación oficial que recomiendo leer.

Al igual que en el caso anterior, y si no estáis muy sueltos con filtros de dominios, entidades, entity globs, etc, recomiendo excluir todas las entidades y anteponer la # a las entidades que realmente queréis integrar en la aplicación Casa de IOS. Para hacer esto, en la configuración del archivo creado o bien en el configuration.yaml, seguiremos el siguiente esquema:

- filter:
    exclude_entities:
#     - switch.aire_acondicionado
      - switch.barra_de_sonido
#     - switch.decodificador
      - switch.entrada
#     - switch.luz_ventilador
      - switch.monitor
#     - switch.planta

Como podéis comprobar prácticamente igual que lo realizado con Alexa.

Incluir y excluir entidades en Google Home

Como en los dos casos anteriores, recomiendo crear un archivo único (dispositivosgoogle.yaml por ejemplo) y llamarlo desde un !include en la configuración de Google Home. Esto nos ayudará a tener ordenado el archivo configuration.yaml.

En esta ocasión varía considerablemente respecto a los dos casos anteriores ya que los dominios disponibles son muchos menos. Podéis consultar todos ellos en la documentación oficial de Google Assistant.

En el archivo de configuración en esta ocasión vamos a indicarle a Google que entidades queremos quitar y lo vamos a hacer llamando a la entidad y poniendo la palabra expose (exponer) seguida de false (si indicásemos true expondría la entidad y por tanto lo mostraría en nuestro Google Home). Vamos a verlo con un ejemplo:

#switch.aire_acondicionado:
switch.barra_de_sonido:
  expose: false
#switch.decodificador:
switch.entrada:
  expose: false
#switch.luz_ventilador:
  expose: false
#switch.monitor:
switch.planta:
  expose: false

En el ejemplo anterior, barra de sonido, entrada, luz ventilador y planta no las integraría en Google Home ya que le estamos diciendo que no las exponga a la detección. El resto de entidades las he puesto con una # delante ya que sino Home Assistant lo consideraría como un error en la configuración.

Como veis, este caso es un poco más enrevesado que en los casos de Alexa y Siri ya que hay que añadir más líneas, pero nada complicado para vosotros, de eso estoy seguro.

Y con esto hemos acabado la forma de incluir y excluir entidades de forma fácil y rápida.

Espero que os haya resultado útil.

Nos vemos en el siguiente artículo, nos vemos en Tecnosanvaras.

Un saludo a todos y …

Publicaciones Similares

Deja una respuesta

Tu dirección de correo electrónico no será publicada.