Conceptos básicos: ficheros

Si estás siguiendo una guía, y hacen referencia a un archivo que no encuentras, es porque no conoces otro de los conceptos básicos: ficheros.

¿Qué es esto de los ficheros?

Tal y como indican en la documentación de Home Assistant, si ya llevas un tiempo experimentando como usuario, es posible que tu fichero ‘configuration.yaml’ tenga un tamaño considerable. Esto se debe a que con el tiempo vamos aumentando el número de dispositivos y aplicaciones que integramos, y vamos creando sensores personalizados que tienen algún reflejo en este fichero.

Llegado a este punto lo que hacemos dividir el contenido de la configuración en distintos ficheros extrayendo la información. Esto nos permite tener una configuración más ordenada, facilitando la navegación.

Por otro lado, tampoco lo hacemos con toda la información, ya que no tendría mucho sentido crear un fichero independiente para volcar 3 o 4 líneas de código. Sin embargo, si que lo hacemos cuando se acumulan muchas líneas de código bajo un mismo concepto (como por ejemplo, en el caso de los sensores).

¿Cómo se crean y contemplan los ficheros?

Lógicamente, no podemos extraer la información de cualquier manera. Vamos a considerar que nuestro fichero ‘configuration.yaml’ tiene el siguiente contenido y que queremos extraer nuestros sensores personalizados.

default_config:
logbook:
http:
  api_password: "ImNotTelling!"
sensor:
  - platform: template
    name: sensor1
    ~~
  - platform: template
    name: sensor2
    ~~
ifttt:
  key: ["nope"]

Lo primero que tenemos que hacer es crear el fichero correspondiente, en este caso ‘sensors.yaml’, en el mismo directorio que se encuentra el fichero ‘configuration.yaml’ (carpeta ‘config’). Esto puedes hacerlo de una forma intuitiva con File Editor o Studio Code Server.

Hecho esto, ahora tienes que cortar todos los sensores que se encuentran dentro del apartado ‘sensor:’ y pegarlos en el fichero que acabas de crear de la siguiente forma.

- platform: template
  sensors:
    name: sensor1
    ~~
- platform: template
  sensors:
    name: sensor2
    ~~

Si te fijas, principalmente han cambiado dos cosas:

  • Hemos eliminado la sangría, dejando la línea donde comienza cada sensor en el primer nivel (y antes había un espacio previo).
  • Hemos eliminado la referencia inicial (‘sensor:’), que ya la indica el propio fichero y hemos incluido la referencia dentro del propio sensor.
Nota: no todos los sensores siguen esta misma estructura, ya que pueden crearse utilizando otras plataformas, pero por ahora es suficiente con que entiendas esto.

Por último tenemos que declarar el fichero que acabamos de crear en el ‘configuration.yaml’, para que siga teniéndolo en cuenta en la configuración. Esto se hace incluyendo la siguiente línea:

sensor: !include sensors.yaml

Así, nuestro fichero ‘configuration.yaml’ quedaría de la siguiente forma:

default_config:
logbook:
http:
  api_password: "ImNotTelling!"
sensor: !include sensors.yaml
ifttt:
  key: ["nope"]

Para que los cambios tengan efecto y todo siga funcionando correctamente reinicia Home Assistant completamente.

Fichero ‘secrets.yaml’

Dividir la configuración y mantener el orden puede ser el mayor motivo para crear ficheros, pero no es el único. Veamos otro uso común utilizando estos conceptos básicos: ficheros.

Es muy posible que tu fichero ‘configuration.yaml’ ya incluya información de credenciales y claves de apis. Si bien tu información puede estar “a salvo”, cabe la posibilidad de que un día, por ejemplo, preguntes tus dudas en un foro abierto y pegues el contenido de tu fichero ‘configuration.yaml’ para que te ayuden. O puede que seas tú el que está ayudando mostrando su código en un video, o una guía. Sea como sea podemos caer en el error de revelar información sensible sin querer.

Por ello una buena práctica común es crear un fichero ‘secrets.yaml’ donde vayamos acumulando nuestras credenciales. El proceso para crear el fichero es el mismo que en el apartado anterior.

De esta forma, el contenido de nuestro fichero ‘configuration.yaml’ pasaría de esto:

rest:
  - authentication: basic
    username: "admin"
    password: "YOUR_PASSWORD"
    ...

A esto:

rest:
  - authentication: basic
    username: "admin"
    password: !secret rest_password
    ...

Y nuestras credenciales ahora estarían indicadas en nuestro fichero ‘secrets.yaml’ de la siguiente forma:

rest_password: "YOUR_PASSWORD"

¿Dudas?¿necesitas ayuda? entra aquí
Y si te ha gustado, compártelo! 🙂
Send this to a friend