Cuando instalamos el sistema de domótica de Home Assistant, aunque la mayoría de configuraciones que podemos realizar son a través de la interfaz gráfica de usuario, también es cierto que podemos realizar configuraciones muy avanzadas a través de los archivos de configuración internos. Hay muchas cosas que podemos hacer a través de estos archivos de configuración, como crear sensores virtuales e incluso automatizaciones realmente avanzadas si sabes programar. Si quieres saber cómo organizar correctamente todos los archivos de configuración para no tener problemas con la sintaxis, a continuación, os vamos a explicar todo lo que debes tener en cuenta.
El archivo de configuración general de Home Assistant es el configuration.yaml, aquí es donde podemos configurar de manera general el comportamiento y también decirle al sistema dónde están los archivos de configuración de los sensores, automatizaciones, scripts y mucho más. Podremos hacer todo en él, no hay problema, pero organizarlo de forma correcta nos traerá muchos beneficios en el futuro, y sobre todo, menos quebraderos de cabeza.
Cómo organizar configuración de Home Assistant
Cuando instalamos un sistema de domótica como Home Assistant, es muy importante la organización. Desde el nombre de los dispositivos que damos de alta con sus entidades, como también el nombre de las automatizaciones y, por supuesto, la organización de dichos archivos de configuración. Hay que tener en cuenta que, todos los sensores, plantillas y la configuración de MQTT lo podemos poner directamente en el archivo de configuración general, pero no es lo recomendable porque tendríamos un archivo de configuración extremadamente largo y muy difícil de manejar.
Por este motivo, lo mejor es crear archivos de configuración separados, y unidos todos en el configuration.yaml principal, porque de lo contrario, este archivo se haría demasiado grande como para poder mantenerlo correctamente. En nuestro caso, tenemos el siguiente fichero de configuración:
#Configuracion de todas las carpetas para los archivos de configuracion.
group: !include AA_groups.yaml
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include AA_scenes.yaml
sensor: !include AA_sensors.yaml
cover: !include AA_covers.yaml
template: !include AA_templates.yaml
mqtt: !include AA_todomqtt.yaml
binary_sensor: !include AA_binarysensors.yaml
Es muy importante que el nombre de «automations.yaml» y «scripts.yaml» no los cambiemos del original, porque si lo hacemos, cuando nos vayamos a la sección de «Ajustes / Automatizaciones» nos saldrá un aviso con un error, indicándonos que todas las configuraciones deberíamos hacerlas en el fichero de configuración manualmente, y no usando la interfaz gráfica de usuario. En el caso de que quieras mantener dos archivos diferentes, uno que sea manual y otro a través de la interfaz gráfica de usuario, entonces tendrás que poner dos etiquetas para diferenciarlos en el configuration.yaml.
automation manual: !include_dir_merge_list automatizaciones/
automation ui: !include automations.yaml
Con esta configuración, todas las automatizaciones que quieras añadir de forma manual, deberán estar en la carpeta de automatizaciones. Las que creemos a través de la interfaz gráfica de usuario estarán en «automations.yaml» y no debes cambiarle el nombre, de lo contrario, dará error al abrir la sección de «Automatizaciones», aunque seguirán funcionando sin ningún problema si la sintaxis es correcta, es simplemente un aviso indicando que no podemos hacer las dos cosas. De hecho, también podríamos configurarlo de la siguiente forma:
automation manual: !include automatizaciones_manual.yaml
automation ui: !include automations.yaml
Y en el archivo de automatizaciones_manual.yaml poner todas nuestras automatizaciones en el mismo archivo de configuración, sin necesidad de crear uno por cada automatización que queramos.
Una vez que hemos visto el código a usar, a continuación, podéis ver nuestro archivo de configuración que tenemos ahora mismo en producción:
Los archivos de configuración con todos los «group», «automation», «script», «scene» y el resto, vienen con la siguiente directiva:
!include archivo_configuracion.yaml
Esto significa que toda la configuración relacionada con «group», «automation», «script», «scene» y el resto está en el archivo que tiene con ese nombre. De esta forma, cada archivo podemos configurarlo de forma individual para tener una mejor organización.
Si nos vamos a la sección de «File Editor«, podemos ver todo el listado completo de archivos de configuración que ya están creados, algunos de ellos están vacíos porque no los usamos, y otros disponen de sensores virtuales y diferentes plantillas.
Por ejemplo, tenemos un sensor virtual que nos indica si la puerta del garaje está abierta o cerrada, dependiendo del estado de dos sensores diferentes. Este código en yaml tendríamos que ponerlo en el configuration.yaml si no tuviéramos la organización de los archivos de configuración.
También tenemos la posibilidad de que en «configuration.yaml» apunte a una carpeta en concreto, y que importe todos los archivos de configuración, en lugar de usar solamente un fichero de configuración. En el caso de que tengamos archivos de configuración de «sensors» demasiado grande, es posible que creemos varios archivos de configuración individuales. Las opciones que tenemos disponibles son las siguientes:
- !include_dir_list: esta opción devolverá el contenido del directorio como una lista y el contenido de cada archivo es una entrada en la lista.
- !include_dir_named: esta opción devuelve el contenido de un directorio como un diccionario que asigna nombre de archivo y contenido del archivo.
- !include_dir_merge_list: devuelve el contenido del directorio como una lista fusionando todos los archivos en una lista más grande.
- !include_dir_merge_named: devuelve el contenido de un directorio como un diccionario cargando cada archivo y fusionándolo en uno más grande.
Dependiendo de cómo sean tus archivos de configuración, podrás configurar una opción u otra.
En el ejemplo anterior donde tenemos todos los sensores en el archivo «AA_sensors.yaml«, tenemos la posibilidad de crear una carpeta llamada «sensores» donde tengamos todos los sensores. El archivo de configuración configuration.yaml quedaría de la siguiente forma:
!include_dir_merge_named sensores/
Y ahora cada archivo de configuración individual, quedaría de la siguiente forma:
#Sensor virtual con el estado de la puerta del garaje
- platform: template
sensors:
sensor_puerta_estado_garaje:
friendly_name: "Estado Puerta Garaje"
value_template: >-
{% if is_state('binary_sensor.shellydw2_puerta_garaje_cerrado', 'off') %}
Cerrada
{% elif is_state('binary_sensor.shellydw2_puerta_garaje_abierto', 'off') %}
Abierta
{% else %}
Entre-Abierta
{% endif %}
icon_template: >-
{% if is_state('binary_sensor.shellydw2_puerta_garaje_cerrado', 'off') %}
mdi:garage-variant-lock
{% elif is_state('binary_sensor.shellydw2_puerta_garaje_abierto', 'on') %}
mdi:garage-alert-variant
{% else %}
mdi:garage-open-variant
{% endif %}
Otro sensor sería el siguiente:
#Sensor virtual con la actualización de datos del edata.
- platform: template
sensors:
last_registered_kwh_date:
friendly_name: "Edata actualizacion datos"
value_template: >-
{{ state_attr('sensor.edata_99nk', 'last_registered_kWh_date') }}
Y el último sensor sería este:
- platform: edata
debug: true
De esta forma, podemos dividir todos los sensores que tenemos en el mismo archivo específico, en varios archivos diferentes y todos ellos en una misma carpeta, para mejorar aún más la organización de todos los archivos de Home Assistant.
Ventajas y desventajas de modificar la configuración de Home Assistant
Ser ordenado es muy importante, sobre todo cuando hablamos de este tipo de archivos y programas. Al principio, con pocos parámetros, es posible que no le des importancia, sin embargo, con el paso del tiempo, tendremos un archivo general de configuración (el configuration.yaml) realmente grande e imposible de mantener. Es por ello que adelantarnos a esto es fundamental, y el mayor beneficio será el poder tener todo controlado y organizado, para futuras configuraciones.
En cuanto a desventajas, no existen realmente, y podremos mencionar el tiempo que nos llevará hacer las cosas bien, y sobre todo eso, hacerlas de manera correcta, ya que si realizamos el proceso y lo hacemos mal, no solo perderemos el tiempo sino que tendremos algo peor que antes, por lo que si queremos hacerlo, hay que hacerlo fijándonos y con calma, ya que será para siempre.
Home Assistant tiene una curva de aprendizaje larga, y puede que al principio te agobies un poco, sin embargo, una vez que vayas cogiéndole el toque, te aseguro que podrás hacer cosas muy interesantes y cada vez te gustará más, por lo que, lo dicho, tómatelo con calma, poco a poco, y ya verás como no te arrepientes de organizar todo de forma correcta.
En resumen, si te interesa este tipo de aplicaciones, que no te agobien tantos parámetros y opciones, no es tan complicado como parece, existen miles de vídeos y tutoriales que te ayudarán, y si tienes cualquier duda, puedes dejarnos un comentario e intentaremos ayudarte nosotros.