En este artículo, nos enfocaremos en el Capítulo 2.3 del Curso Completo de YAML, donde examinaremos las referencias en YAML y cómo utilizarlas para reutilizar datos y simplificar las configuraciones en Home Assistant. A continuación, se presenta un resumen de los temas que cubriremos en esta sección.
Puedes ver la página principal del curso o el temario del segundo capítulo.
2.3. Referencias en YAML
Las referencias en YAML permiten reutilizar datos en diferentes partes de un archivo YAML, evitando la repetición y mejorando la legibilidad y mantenibilidad de la configuración. En el contexto de Home Assistant, las referencias pueden ser especialmente útiles para simplificar las configuraciones de entidades, automatizaciones y scripts que comparten propiedades o valores comunes.
2.3.1. ¿Qué son las referencias en YAML?
Las referencias en YAML son una característica que permite asignar un nombre a una estructura de datos y reutilizarla en otros lugares del archivo YAML mediante un alias. Esto evita la necesidad de repetir bloques de código idénticos y facilita la actualización de la configuración, ya que solo es necesario cambiar el valor en un lugar.
2.3.2. Sintaxis para utilizar referencias
Para utilizar referencias en YAML, se deben seguir estos dos pasos:
- Crear un bloque de anclaje utilizando el símbolo «&» seguido de un nombre único.
- Referenciar el bloque de anclaje en otros lugares del archivo utilizando el símbolo «*» seguido del nombre único del anclaje.
A continuación, se muestra un ejemplo de cómo utilizar referencias en un archivo YAML de Home Assistant:
# Definición del anclaje
common_mqtt: &common_mqtt
qos: 1
retain: true
# Uso del anclaje en dos entidades diferentes
light:
- platform: mqtt
name: "Luz del salón"
state_topic: "home/living_room_light"
command_topic: "home/living_room_light/set"
<<: *common_mqtt
- platform: mqtt
name: "Luz de la cocina"
state_topic: "home/kitchen_light"
command_topic: "home/kitchen_light/set"
<<: *common_mqtt
En este ejemplo, definimos un anclaje llamado «common_mqtt» que contiene la configuración común de calidad de servicio (qos) y retención (retain) para las luces controladas por MQTT. Luego, utilizamos la referencia en dos entidades diferentes de tipo «light». Eso nos permite mantener la configuración MQTT común en un solo lugar y evitar la repetición.
2.3.3. Ejemplos
Las referencias en YAML pueden ser útiles en Home Assistant en diferentes escenarios, como:
Configuraciones comunes para entidades: Si varias entidades comparten una configuración similar, se puede utilizar una referencia para simplificar y mantener el código más limpio.
defaults: &light_defaults
transition: 5
color: white
light:
- platform: hue
name: "Living Room Light"
<<: *light_defaults
- platform: hue
name: "Kitchen Light"
<<: *light_defaults
- platform: hue
name: "Bedroom Light"
<<: *light_defaults
Configuraciones de automatizaciones y scripts: Si se tienen varias automatizaciones o scripts con acciones similares, se pueden utilizar referencias para reutilizar las acciones y simplificar la configuración.
common_actions: &common_light_actions
- service: light.turn_on
target:
entity_id: light.living_room_light
- service: light.turn_off
target:
entity_id: light.bedroom_light
automation:
- alias: "Automation 1"
trigger:
...
action:
<<: *common_light_actions
- alias: "Automation 2"
trigger:
...
action:
<<: *common_light_actions
Valores compartidos entre entidades y automatizaciones: Si ciertos valores, como umbrales o constantes, se utilizan en múltiples entidades y automatizaciones, se pueden utilizar referencias para mantener estos valores en un solo lugar y simplificar su actualización.
constants:
temperature_threshold: &temp_threshold 20
sensor:
- platform: some_sensor
name: "Temperature Sensor"
threshold: *temp_threshold
automation:
- alias: "Temperature Alert"
trigger:
platform: numeric_state
entity_id: sensor.temperature_sensor
above: *temp_threshold
action:
...