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.
Puntos a favor y en contra de Home Assistant
Cuando empiezas a usar Home Assistant, lo normal es ir añadiendo cosas sin preocuparte demasiado por cómo queda la configuración. Todo funciona y listo. Pero pasa el tiempo, sumas dispositivos, automatizaciones, sensores… y de repente el archivo principal se convierte en un lío tremendo. Ahí es cuando te das cuenta de que haber organizado todo desde el principio te habría ahorrado bastantes dolores de cabeza.
Poner orden no cambia cómo funciona Home Assistant, pero sí cambia lo fácil o difícil que será mantenerlo en el futuro. Si todo está bien separado y claro, cuando quieras añadir algo nuevo o tocar una automatización, sabrás dónde mirar sin perder media hora buscando. Y cuando algo deje de funcionar, que siempre pasa alguna vez, encontrar el fallo será mucho menos frustrante.
La parte menos divertida es que organizar todo lleva su rato. Hay que hacerlo con calma, ir probando y asegurarse de que no rompes nada por el camino. Si lo haces deprisa, puedes acabar peor que antes y tocará repetir. Por eso merece la pena hacerlo poco a poco, cuando tengas un rato, sin prisas.
También es verdad que Home Assistant al principio puede abrumar un poco. Hay muchas opciones y parámetros, y parece más complicado de lo que realmente es. Pero en cuanto empiezas a entender cómo funciona, te das cuenta de que puedes hacer cosas muy útiles en casa y cada mejora engancha un poco más.
Al final, ordenar la configuración es como poner orden en un trastero: cuesta empezar, pero cuando necesitas algo, agradeces haberlo hecho.
Ventajas y desventajas de reorganizar la configuración
| Ventajas | Desventajas |
|---|---|
| Todo queda más claro y fácil de mantener | Hay que invertir algo de tiempo al principio |
| Añadir cambios después resulta más sencillo | Puedes cometer errores si haces cambios sin probar |
| Los fallos se encuentran más rápido | Puede dar pereza ponerse a ordenar |
| El sistema crece de forma más organizada | Necesitas aprender un poco más al inicio |
