Featured image of post Edición de Archivos de Home Assistant por Código

Edición de Archivos de Home Assistant por Código

Aunque muchas integraciones se pueden añadir sin editar archivos, a veces es necesario un poco de código.

Introducción

Muchas de las integraciones de Home Assistant se pueden añadir y configurar sin necesidad de editar archivos, pero como habrás comprobado en la documentación, vídeos y tutoriales, a menudo se requieren unas pocas lineas de código para realizar ciertas configuraciones.

Por eso, no está de más tener y conocer alguna herramienta que permita modificar los archivos de configuración de Home Assistant. Una de las más sencillas y poderosas es Studio Code Server.

Instalación

Su instalación es muy sencilla. Home Assistant dispone de complementos, que son aplicaciones de terceros que proporcionan funcionalidad extra. Los complementos se ejecutan directamente junto a Home Assistant. Funcionan como las aplicaciones que instalas en tu teléfono.

Tienda de Complementos

Pero no los confundas con las integraciones, que sirven para conectar Home Assistant con otras aplicaciones, dispositivos o servicios.

Recuerda que los complementos solo son compatibles con los tipos de instalación Home Assistant Operating System y Home Assistant Supervised.

  • Desde AjustesComplementos, entra en la Tienda de Complementos y busca Studio Code Server.
  • Haz click en Instalar y espera unos segundos.
  • Una vez instalado, habilita las opciones “Activar al Inicio” y “Mostrar en el Panel Lateral”. Esto hará que se inicie automáticamente con Home Assistant y que tengamos un acceso directo en el Panel de la izquierda.
  • Ahora haz click en Iniciar.

Complementos - Studio Code Server

Usando Studio Code Server

Una vez iniciado, puedes abrir la aplicación desde el Panel Lateral con el botón Studio Code Server.

Al ser la primera vez, nos preguntará si la carpeta config, que es la carpeta con las configuraciones de Home Assistant es segura. Le decimos que sí.

Studio Code Server - Confiar en Autores

Home Assistant suele trabajar con dos lenguajes de programación YAML y Jinja 2. Principalmente YAML se usa para realizar las configuraciones de integraciones, scripts o automatizaciones y Jinja 2 para la definición de plantillas que se usarán en ciertas partes de estas configuraciones. No son lenguajes complicados, pero sí que conviene tener unas nociones básicas de cómo funcionan.

Desde la ventana de Studio Code Server veremos en la sección explorador el contenido de la carpeta config, el listado de archivos de configuración de Home Assistant.

Studio Code Server - Vistazo

Por defecto, Home Assistant guarda las configuraciones de las integraciones realizadas por interfaz en una carpeta oculta dentro de config llamada .storage a la que no podemos tener acceso desde este editor, pero sí que guarda las configuraciones de automatizaciones, escenas o scripts dentro de los archivos YAML con cada nombre. Por ejemplo automations.yaml para las automatizaciones. Los cambios realizados aquí se aplicarán a la configuración de las automatizaciones en el editor visual.

Integraciones por código

La mayoría de las integraciones están migrándose a una configuración desde el entorno web, sin necesidad de configuración por código YAML. Pero, vamos a realizar una integración para que veas más o menos cómo funciona el editor y aprendas a hacerlas en el caso de ser necesario.

Las integraciones por código se realizan desde el archivo configuration.yaml. Ábrelo.

Studio Code Server - Archivo configuration.yaml

YAML es un lenguaje de marcado con una notación basada en la sangría. Esto quiere decir que son muy importantes los espacios que dejamos a la izquierda en cada línea, ya que define el bloque al que nos referimos. Así por ejemplo, en el archivo configuration.yaml que viene por defecto con Home Assistant se definen los bloques default_config, frontend, automation, script y scene. Dentro de frontend, se define el bloque themes.

Si por ejemplo queremos definir un ayudante de tipo alternar, o input_boolean en inglés. Desde la documentación de Home Assistant nos indica que tenemos que definir y configurar el siguiente bloque de código:

1
2
3
4
5
# Example configuration.yaml entry
input_boolean:
  notify_home:
    name: Notify when someone arrives home
    icon: mdi:car

Este código tiene que ir en un bloque propio, por tanto y respetando los espacios ya definidos dentro del bloque para cada una de las propiedades en la documentación, lo pondremos pegado a la izquierda en nuestro configuration.yaml.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# Loads default set of integrations. Do not remove.
default_config:

# Load frontend themes from the themes folder
frontend:
  themes: !include_dir_merge_named themes

automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml

input_boolean:
  interruptor_prueba:
    name: Este es un interruptor de prueba
    icon: mdi:car

Las líneas en blanco son ignoradas por YAML, así que podemos dejar el espacio que queramos entre bloques.

Si ahora queremos añadir otro ayudante alternar, y como en YAML no se puede repetir el mismo texto a la misma altura, es decir, en la misma sangría, podemos añadir otro ayudante repitiendo solo la parte del bloque donde se define el propio ayudante y no el tipo, es decir, no es necesario repetir la palabra input_boolean.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
# Loads default set of integrations. Do not remove.
default_config:

# Load frontend themes from the themes folder
frontend:
  themes: !include_dir_merge_named themes

automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml

input_boolean:
  interruptor_prueba:
    name: Este es un interruptor de prueba
    icon: mdi:car
  interruptor_prueba2:
    name: Este es un interruptor de prueba 2
    icon: mdi:car-outline

Una vez terminado, y como se guardan los cambios automáticamente, solo tendremos que recargar Home Assistant para que se apliquen los cambios.

Desde el Panel Lateral hacemos click en AjustesSistemaRecarga Rápida. No hace falta reiniciar totalmente Home Assistant para aplicar este tipo de cambios.

Home Assistant - Ventana Reinicio

Si ahora vamos a AjustesDispositivos y ServiciosAyudantes veremos los dos ayudantes que hemos creado. Como puedes observar, ambos tienen un símbolo con un lápiz tachado. Esto indica que al haber sido creados con YAML, no se puede modificar parte de su configuración desde la interfaz.

Ayudantes - Ejemplo ayudantes por código YAML

Conclusión

A partir de este punto ya serás capaz de realizar pequeñas modificaciones y añadir aquellas integraciones que requieran configuración por código de Home Assistant. Recuerda leer siempre la documentación. Tenemos un grupo de Telegram en el que poder comentar tus dudas y progresos. ¡Nos vemos en el siguiente artículo!